Vic*_*tor 14 mapreduce apache-spark
有人可以解释使用单词计数示例,为什么Spark会比Map Reduce更快?
zax*_*liu 17
bafna的回答提供了故事的记忆方面,但我想补充其他两个重要事实:DAG和生态系统
我想补充一点,即使您的数据对于主内存而言太大,您仍然可以通过选择将数据保留在磁盘上来使用spark.虽然通过这样做可以放弃内存处理的优势,但您仍然可以从DAG执行优化中受益.
sre*_*ree 11
我认为有三个主要原因.
主要的两个原因源于这样一个事实:通常,一个不运行单个MapReduce作业,而是按顺序执行一组作业.
MapReduce的一个主要限制是它在运行每个作业后将完整数据集保留到HDFS.这非常昂贵,因为它会导致磁盘I/O中数据集大小的三倍(用于复制)和类似数量的网络I/O. Spark更全面地了解了一系列操作.当需要将操作的输出馈送到另一个操作时,Spark直接传递数据而不写入持久存储.这是MapReduce的一项创新,来自微软的Dryad论文,并不是Spark的原创.
Spark的主要创新是引入内存缓存抽象.这使Spark成为多个操作访问相同输入数据的工作负载的理想选择.用户可以指示Spark将输入数据集缓存在内存中,因此无需为每个操作从磁盘读取它们.
那些可以归结为单个MapReduce工作的Spark工作怎么样?在许多情况下,这些在Spark上比在MapReduce上运行得更快.Spark在这方面的主要优势是它可以更快地启动任务.MapReduce为每个任务启动一个新的JVM,加载JAR,JITing,解析配置XML等需要几秒钟.Spark会在每个节点上运行执行程序JVM,因此启动任务只需要对它进行RPC和将Runnable传递给线程池,该线程池采用单位数毫秒.
最后,一个常见的误解可能值得一提的是,Spark在某种程度上完全在内存中运行,而MapReduce则没有.这根本不是那么回事.Spark的shuffle实现与MapReduce的工作方式非常相似:每个记录都被序列化并在映射端写入磁盘,然后在reduce端获取和反序列化.
归档时间: |
|
查看次数: |
6477 次 |
最近记录: |