什么时候更喜欢hadoopmapreduce而不是spark?

vlf7wbxs  于 2021-06-02  发布在  Hadoop
关注(0)|答案(5)|浏览(342)

非常简单的问题:在哪些情况下我应该更喜欢hadoopmapreduce而不是spark(我希望这个问题还没有被问到——至少我没有找到……)
我目前正在对这两个处理框架进行比较,从我目前所读到的内容来看,似乎每个人都建议使用spark。这也符合你的经验吗?或者你能说出mapreduce比spark性能更好的用例吗?
我是否需要更多的资源(特别是ram)来完成与spark相同的任务,而不是mapreduce?
谢谢和问候!

wydwbb8l

wydwbb8l1#

据我所知,在spark中,整个单个分区必须适合内存(2GB是最大大小,因为它使用 ByteBuffer 内部)。这可能是一个问题 groupBy 一组大于此限值(每组表示为一个 Tuple2 无法分区的项)。
因此,在某些情况下,spark与mapreduce相比可能会失败。
链接到spark jira中的相关问题https://issues.apache.org/jira/browse/spark-1476

rm5edbpk

rm5edbpk2#

spark是对传统mapreduce的极大改进。
何时使用mapreduce over spark?
当您有一个用mapreduce范例编写的遗留程序,它非常复杂,您不想重新编程。另外,如果你的问题不是分析数据,那么spark可能不适合你。我能想到的一个例子是关于web爬行,有一个很棒的apache项目apachenutch,它是基于hadoop而不是spark构建的。
何时使用spark over mapreduce?
从2012年开始。。。自从我开始使用spark我就不想再回去了。这也是我扩展java之外的知识和学习scala的一大动力。spark中的许多操作需要较少的字符来完成。另外,使用scala/repl可以更好地快速生成代码。hadoop有pig,但是你必须学习“pig拉丁语”,这在其他任何地方都不会有用。。。
如果您想在数据分析中使用pythonlibs,我发现让python使用spark和mapreduce更容易。我也很喜欢用ipython笔记本之类的东西。当我开始学习scala时,spark教会了我很多东西,使用带有spark的ipython笔记本激励我学习pyspark。它并没有所有的功能,但是大部分功能可以通过python包来弥补。
spark现在还具有sparksql,它与hive向后兼容。这使您可以使用spark来运行接近sql的查询。我认为这比尝试学习hiveql要好得多,因为hiveql与hiveql有很大的不同,每件事都是特定的。使用sparksql,您通常可以不用使用一般的sql建议来解决问题。
最后,spark还有用于机器学习的mllib,这比apachemahout有很大的改进。
最大的Spark问题:互联网上没有故障排除技巧。由于spark是新的,有关问题的文档有点缺乏。。。与amplabs/databricks(加州大学伯克利分校spark的创造者和他们的咨询公司)的人合作,利用他们的论坛获得支持是个好主意。

nbysray5

nbysray53#

每个人都是正确的!Spark!spark不需要更多的资源—您可以通过将rdd持久化到磁盘来调整它以减少ram占用。
如果计划使用spark,则使用1.3作为最低版本,因为已经有了显著的改进。
最后可能使用mr的唯一情况是,如果您有要继续使用的遗留代码。
另一点需要注意的是,人们已经有相当一段时间不再编写mr代码了。有像Pig,Hive等抽象上先生现在所有这些抽象将开始支持先生在未来。而这也是spark仍有点滞后的地方之一。

rta7y2nd

rta7y2nd4#

在核心部分,mr是一个并行编程模型,它本身就是最高级的东西。它改变了人们对如何思考和使用数据的看法。
hadoop设计了一个基于mr(和分布式文件系统hdfs)的分布式计算引擎,使mr成为了每个人都能接触到的对象。
现在随着这些问题的解决,更多的新需求开始涌现,hadoop mr(以及任何位于它之上的高级抽象)未能在3个特定领域提供:a)迭代计算b)实时数据处理c)交互使用
为了解决这些问题,spark带来了两个重要的变化:1。通用dag 2。分布式数据共享
因此,在本质上,如果您落入这3个用例中,最有可能的是spark。如果不是这样,那么使用spark可能就得不到任何额外的好处(除了python的舒适性和一个“geek”的名字标签)。事实上,在较小的集群或配置较小的集群中,在hadoop中mr的性能可能更好。

k2arahey

k2arahey5#

您应该更喜欢hadoop map reduce而不是spark,如果
您必须查询历史数据,这些数据在一个巨大的集群中以万亿字节/peta字节的数量呈现。
你不担心工作完成时间-工作完成时间在小时与分钟是不重要的,你
hadoopmapreduce用于不适合内存的数据,而apachespark对于适合内存的数据有更好的性能,特别是在专用集群上。
hadoopmapreduce是一个经济的选择,因为hadoopas服务提供(haas)和更多人员的可用性
apachespark和hadoopmapreduce都是容错的,但是相对而言hadoopmapreduce比spark更容错。
另一方面,spark的主要使用案例超过了hadoop
机器学习中的迭代算法
交互式数据挖掘与数据处理
spark是一个与apache hive完全兼容的数据仓库系统,运行速度比hive快100倍。
流处理:实时流中的日志处理和欺诈检测,用于警报、聚合和分析
传感器数据处理:从多个数据源获取和连接数据
看看这个博客和dezyre博客

相关问题