我刚刚上了一堂关于Spark的入门课,问演讲者Spark是否可以完全取代MapReduce,并被告知任何用例都可以使用Spark来取代MapReduction,但在某些特定用例中,MapReduce实际上比Spark快。
MapReduce能够比Spark更快地解决用例的特点是什么?
请原谅我引用了Quora的话,但是:
- 对于数据并行、一次通过、类似ETL的作业,MapReduce是为其设计的,与Spark等效作业相比,MapReduze的重量更轻
- Spark已经相当成熟了,YARN现在也是,但YARN上的Spark仍然很新。这两者可能还没有最佳集成。例如,直到最近,我还不认为Spark可以要求YARN根据核心数量进行分配?也就是说:MapReduce可能更容易理解、管理和调整
您可以在Spark中重现MapReduce的几乎所有行为,因为Spark具有狭窄、更简单的函数,可以用于生成大量执行。您并不总是想模仿MapReduce。
Spark还不能做的一件事是,你碰巧从经典MapReduce的工作方式中得到了一种核心之外的东西,但这即将到来。我想像MultipleOutputs
这样的东西也没有非常直接的类似物。