Kno*_*uch 16 caching hadoop apache-spark
我已经开始学习Apache Spark,并对框架印象深刻.虽然一件事一直困扰我的是,在所有Spark介绍他们谈论如何星火缓存需要相同的数据比其他方法,如地图,减少快RDDS,因此多个操作.
所以我的问题是,如果是这种情况,那么只需在Yarn/Hadoop等MR框架中添加一个缓存引擎.
为什么要一起创建一个新框架?
我相信我在这里遗漏了一些东西,你可以给我一些文件,让我更多地了解火花.
aar*_*man 15
内存计算中的缓存+对于spark来说绝对是一件大事,但还有其他一些事情.
RDD(弹性分布式数据集):RDD是spark的主要抽象.它允许通过重新计算DAG来恢复故障节点,同时通过检查点支持与Hadoop更相似的恢复方式,以减少RDD的依赖性.在DAG中存储火花作业允许延迟计算RDD,并且还允许火花的优化引擎以可以在性能上产生重大差异的方式调度流程.
Spark API:Hadoop MapReduce有一个非常严格的API,不允许多功能性.由于spark消除了许多低级细节,因此可以提高生产率.广播变量和累加器之类的东西也比DistributedCache和IMO更加通用.
Spark Streaming:Spark streaming基于纸张Discretized Streams,它提出了一种使用微批量对流进行窗口计算的新模型.Hadoop不支持这样的事情.
作为内存计算的产物,火花有点像它自己的流程调度程序.而使用标准MR,您需要像Azkaban或Oozie这样的外部作业调度程序来安排复杂的流程
hadoop项目由MapReduce,YARN,commons和HDFS组成; 然而,火花试图用机器学习,图形处理,流媒体,多个sql类型库创建一个统一的大数据平台和库(在同一个仓库中),我相信深度学习库正处于起步阶段.虽然这一切都不是火花的特征,但它是火花计算模型的产物.Tachyon和BlinkDB是另外两种围绕spark构建的技术.
所以它不仅仅是缓存.Aaronman覆盖了很多病,只是添加了他错过的东西.
由于通常更高效和良好的架构框架,原始性能无缓存速度快2-10倍.例如,每个节点使用akka线程1个jvm比为每个任务分配整个进程要好.
Scala API.Scala代表可扩展语言,显然是选择并行处理的最佳语言.他们说Scala将代码减少了2-5倍,但根据我在其他语言中重构代码的经验 - 特别是java mapreduce代码,它更像是10-100倍的代码.说真的,我已经从java重构了100多个LOC到少数Scala/Spark.它也更容易阅读和推理.Spark比猪和蜂巢等Hadoop抽象工具更简洁易用,甚至比Scalding更好.
Spark有一个repl/shell.消除了编译部署周期以便运行简单作业的需要.人们可以交互式地使用数据,就像使用Bash来围绕系统一样.
我想到的最后一件事就是很容易与Big Table DB集成,比如cassandra和hbase.在cass中读表以便进行一些分析
sc.cassandraTable[MyType](tableName).select(myCols).where(someCQL)
Run Code Online (Sandbox Code Playgroud)
HBase也有类似的东西.现在尝试在任何其他MPP框架中执行此操作!
UPDATE想到指出这只是Spark的优点,顶部有不少有用的东西.例如GraphX用于图形处理,MLLib用于简单的机器学习,Spark SQL用于BI,BlinkDB用于疯狂的快速apprx查询,以及提到的Spark Streaming
aaronman和samthebest报道了很多.我还有几点意见.
Spark的每个作业和每个任务开销都要低得多.它使其能够应用于Hadoop MR不适用的情况.这是在1-30秒内需要回复的情况.
低任务开销使得Spark能够在有大量短任务的大型工作中更高效.作为一个非常粗略的估计 - 当任务需要1秒时,Spark将比Hadoop MR高2倍.
Spark具有较低的抽象,然后是MR - 它是计算图.因此,可以实现更有效的处理然后MR - 特别是在不需要排序的情况下.换句话说 - 在MR中,我们总是为分类付费,但在Spark中 - 我们不必这样做.
归档时间: |
|
查看次数: |
4570 次 |
最近记录: |