我知道MapReduce是一个在Hadoop上进行批处理的很好的框架。但是,Spark也可以用作Hadoop上的批处理框架,与MapReduce相比,它提供了可伸缩性、容错性和高性能。Cloudera,Hortonworks和MapR也开始在Hadoop上用纱线支持火花。
那么,我想知道在Hadoop上使用Spark作为批处理框架的当前挑战是什么?
有什么想法吗?
发布于 2014-10-31 15:06:38
对于迭代算法,Spark比mapreduce快一个数量级,因为它通过将中间数据缓存在本地JVM中而获得了显着的加速。
随着Spark 1.1主要包括新的shuffle实现(sort-based shuffle而不是基于散列的shuffle),new network module (基于netty而不是使用块管理器发送shuffle数据),新的external shuffle service使Spark执行最快的PetaByte排序(在190个节点上,46TB内存)和TeraByte排序打破了Hadoop的旧记录。
Spark可以很容易地处理比集群的聚合内存大几个数量级的数据集。所以,我的想法是Spark正在朝着正确的方向前进,并最终会变得更好。
作为参考,这篇blog post解释了databricks是如何执行the排序的。
发布于 2014-11-02 09:19:22
我猜想当你说Hadoop时,你指的是HDFS。
与Hadoop MR.相比,使用Spark有许多好处。
Hadoop至少和
1.1。Spark可以缓存(取决于可用内存)此中间结果,从而减少磁盘IO造成的延迟。
1.2。Spark操作是懒惰的。这意味着Spark可以在开始处理数据之前执行某些优化,因为它可以重新排序操作,因为它们还没有执行。
1.3。Spark保留了操作的谱系,并基于此谱系重新创建部分失败状态,以防发生故障。
例如,下面是Spark (Scala)中的字数统计代码。
val textFile = sc.textFile("some file on HDFS")
val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)如果你使用标准的Hadoop先生,我肯定你得多写几行。
这里有一些关于Spark的常见误解。
进行排序
最后,如果你在Hadoop MR中没有遗留的代码库,那么采用Spark是非常有意义的,原因很简单,因为所有主要的Hadoop供应商都在转向Spark。
发布于 2014-10-31 07:26:54
Apache Spark在内存中运行,这使得它比mapreduce快得多。Spark最初是伯克利的一个研究项目。
Mapreduce广泛使用磁盘(用于外部排序、随机排序等)。
因为hadoop作业的输入大小是the级。Spark内存需求将超过传统hadoop。
因此,基本上,对于较小的作业和在您的集群中具有巨大内存的情况,sparks胜出。实际上,对于大多数集群来说,情况并非如此。
有关spark的更多详细信息,请参阅spark.apache.org
https://stackoverflow.com/questions/26659647
复制相似问题