《Spark与Hadoop大数据分析》一一2.3 为何把 Hadoop 和 Spark 结合使用

本节书摘来自华章计算机《Spark与Hadoop大数据分析》一书中的第2章,第2.3节,作者:文卡特·安卡姆(Venkat Ankam) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 为何把 Hadoop 和 Spark 结合使用

Apache Spark 与 Hadoop 结合使用时表现更好。为了理解这一点,让我们来看看 Hadoop 和 Spark 的特性。
2.3.1 Hadoop 的特性
《Spark与Hadoop大数据分析》一一2.3 为何把 Hadoop 和 Spark 结合使用

2.3.2 Spark 的特性
《Spark与Hadoop大数据分析》一一2.3 为何把 Hadoop 和 Spark 结合使用

当这两个框架结合起来的时候,我们就得到了具有内存级性能的企业级应用的威力,如图2-11 所示。
关于 Spark 的常见问题
以下是从业者对 Spark 提出的常见问题:
我的数据集无法完全放进内存。我该如何使用 Spark 呢?
如果数据无法完全放进内存,Spark 的运算符会让数据分散到磁盘里,从而使它能在任何大小的数据上运行。类似地,无法完全放进内存的缓存数据集要么分散到磁盘,要么在需要时重新计算,这是由 RDD 的存储级别确定的。默认情况下,Spark 会重新计算无法完全放进内存的分区。存储级别可以更改为 MEMORY_AND_DISK,把分区分散到磁盘。
《Spark与Hadoop大数据分析》一一2.3 为何把 Hadoop 和 Spark 结合使用

图2-11 Hadoop 平台上的 Spark 应用
图2-12显示了完全缓存和分散到磁盘两种情况之间的性能差异:
《Spark与Hadoop大数据分析》一一2.3 为何把 Hadoop 和 Spark 结合使用

图2-12 Spark 的性能:完全缓存和分散到磁盘的情况对比
Spark 中的故障恢复是如何起作用的?
Spark 内置的基于 RDD 谱系的容错会自动从故障中恢复。图2-13 显示了 k均值算法中第 6 次迭代中对故障的恢复:

《Spark与Hadoop大数据分析》一一2.3 为何把 Hadoop 和 Spark 结合使用

图2-13 故障恢复的情况