Apache Spark和Hadoop的用例是什么


30

借助Hadoop 2.0和YARN,据说Hadoop不再仅局限于map-reduce解决方案。有了这一进步,考虑到两者都位于HDFS之上,Apache Spark与Hadoop有哪些用例?我已经阅读了Spark的介绍文档,但很好奇是否有人遇到了比Hadoop更高效,更容易解决的问题。

Answers:


40

Hadoop意味着HDFS,YARN,MapReduce和许多其他东西。您是说Spark还是MapReduce?因为Spark在Hadoop上运行/与Hadoop一起运行,这才是重点。

使用Spark的主要原因是为了提高速度,这是因为它的执行可以在阶段之间将数据保留在内存中,而不是始终在执行Map或Reduce后一直保留回HDFS。对于迭代计算而言,此优势非常明显,因为迭代计算有数十个阶段,每个阶段都接触相同的数据。这是事情可能快“ 100倍”的地方。对于设计了MapReduce的简单的,像ETL一样的一遍工作,通常并没有更快。

使用Spark的另一个原因是与MapReduce相比,Spark具有更好的高级语言。它提供了类似于Scala的类似于函数式编程的视图,比编写MapReduce代码好得多。(尽管您必须使用Scala,或采用不太发达的Spark Java或Python API)。CrunchCascading已经在MapReduce之上提供了类似的抽象,但这仍然是Spark不错的地方。

最终,Spark还具有用于ML,图形分析和流传输的尚待开发的子项目,这些子项目公开了相似的,一致的API。使用MapReduce,您将为此而不得不转向其他几个项目(Mahout,Giraph,Storm)。尽管尚未“烘焙”,但将其包装在一个包装中还是很不错的。

为什么不使用Spark?解释一下自己:

  • Spark主要是Scala,带有移植的Java API。对于基于Java的开发人员,MapReduce可能更友好,更原生
  • 与Spark相比,现在MapReduce的专业知识更多
  • 对于MapReduce专为数据并行,一遍,类似ETL的作业而设计,与Spark同类产品相比,MapReduce的重量更轻
  • Spark相当成熟,YARN现在也很成熟,但是Spark-on-YARN仍然很新。两者可能尚未最佳集成。例如,直到最近,我还不认为Spark可以向YARN请求基于内核数的分配?也就是说:MapReduce可能更易于理解,管理和调整

感谢您的澄清。将数据保存在内存中听起来似乎有一些有趣的含义-我将进一步了解Spark的Resilient Distributed Dataset概念。
idclark 2014年

3
+1为许多像我这样的人提供了一个非常清晰而有用的答案。
vefthym 2014年

3
请记住,肖恩·欧文(Sean Owen)是O'Reilly关于Spark的新书的合著者。:-)
sheldonkreger 2014年

1

不确定YARN,但是我认为,如果数据可以很好地适合计算节点的内存,那么与Hadoop(广告速度要快100倍)相比,Spark会带来真正的改变。仅仅是因为它避免了硬盘访问。如果数据不适合内存,那么由于缓冲,仍然会有一些好处。


0

好信息@Sean Owen。想增加一个。Spark可能有助于在Lambda体系结构中构建针对批处理和流传输层的统一数据管道,并具有写入公共服务层的能力。重用批处理和流之间的逻辑是巨大的优势。除了1.4中出色的作业监控和过程可视化功能外,Spark1.3中的Streaming K-Means算法也是ML的新增功能。


0

可以将Spark与 Hadoop的处理框架MapReduce进行比较。在大多数情况下,Spark可能会胜过MapReduce。前者可以实现内存中数据处理,后者可以使数据处理速度提高100倍。因此,如果您需要快速的洞察力,例如,如果需要

  • 运行客户分析,例如将客户的行为与特定客户群的行为模式进行比较,并触发某些动作;
  • 管理风险并预测各种可能的情况;
  • 实时发现欺诈行为;
  • 运行工业大数据分析并预测异常和机器故障。

但是,MapReduce擅长处理非常庞大的数据集(如果您满意处理所需的时间)。此外,这是一种更经济的解决方案,因为MapReduce可以从磁盘读取/写入磁盘。而且磁盘通常比内存便宜。


-1

机器学习是问题类型的一个很好的例子,尽管基于Spark的纱线还很年轻,但基于Spark的解决方案要比基于Mapreduce的解决方案快几年。


2
我不认为这是真的,但我想我知道您要获得的是:内存在迭代计算中的工作速度更快,并且很多ML是迭代的。
肖恩·欧文
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.