Hadoop|带你对比Hadoop MapReduce与Apache Spark( 二 )


Hadoop|带你对比Hadoop MapReduce与Apache Spark
本文插图


Hadoop|带你对比Hadoop MapReduce与Apache Spark
本文插图

i)Hadoop与Spark性能
据说仅通过减少对磁盘的读写次数 , Hadoop Spark即可执行比Hadoop MapReduce框架快约10至100倍的批处理作业 。
在使用MapReduce的情况下 , 将执行以下Map and Reduce任务 , 随后将出现同步障碍 , 并且需要将数据保存到磁盘 。 开发MapReduce框架的功能是为了在出现故障的情况下可以恢复作业 , 但是这样做的缺点是 , 它没有最大程度地利用Hadoop群集的内存 。
不过 , 借助Hadoop Spark , RDD(弹性分布式数据集)的概念使您可以将数据保存在内存中 , 并且仅在需要时才将其保存到磁盘上 , 并且它不具有任何类型的同步障碍 , 可能会减慢数据传输速度 。 处理 。 因此 , 使用内存时 , Spark的通用执行引擎比Hadoop MapReduce快得多 。
ii) Hadoop MapReduce与Spark- 轻松管理 与Hadoop Spark一样 , 组织现在可以轻松地简化其用于数据处理的基础架构 , 因为现在可以在同一群集中执行流式处理 , 批处理和机器学习 。
大多数实时应用程序都使用Hadoop MapReduce生成报告 , 以帮助找到历史查询的答案 , 然后完全延迟另一个将处理流处理的系统 , 以便实时获取关键指标 。 因此 , 组织应该管理和维护单独的系统 , 然后为两个计算模型开发应用程序 。
但是 , 使用Hadoop Spark可以消除所有这些复杂性 , 因为可以在同一系统上同时实现流处理和批处理 , 从而简化了应用程序的开发 , 部署和维护 。 使用Spark可以控制各种工作负载 , 因此 , 如果同一流程中的各种工作负载之间存在交互 , 则更容易管理和保护此类工作负载 , 这是MapReduce的局限性 。
iii)Spark vs Mapreduce –处理流的实时方法 在使用Hadoop MapReduce的情况下 , 您只需要处理一批存储的数据 , 但是使用Hadoop Spark , 也可以通过Spark Streaming实时修改数据 。
使用Spark Streaming , 可以通过各种软件功能传递数据 , 例如在收集数据时进行数据分析 。

Hadoop|带你对比Hadoop MapReduce与Apache Spark
本文插图

开发人员现在也可以使用Apache Spark进行图形处理 , 该处理可在各种实体(例如人和对象)之间映射数据中的关系 。 组织还可以将Apache Spark与预定义的机器学习代码库结合使用 , 以便可以对存储在各种Hadoop集群中的数据执行机器学习 。
iv)Spark与MapReduce-缓存与完全面向磁盘的MapReduce不同 , Spark通过在分布式工作者的内存中缓存部分结果来确保较低的延迟计算 。 与编写复杂的Hadoop MapReduce管道相比 , Hadoop Spark逐渐被证明可以极大地提高生产力 。
v)Spark vs MapReduce-易于使用编写Spark总是比编写Hadoop MapReduce代码紧凑 。 这是一个Spark MapReduce示例-下图显示了Spark和Hadoop MapReduce中的字数统计程序代码 。 如果查看这些图像 , 显然可以看出Hadoop MapReduce代码更加冗长冗长 。
Spark MapReduce示例-Spark中的Wordcount程序
Hadoop|带你对比Hadoop MapReduce与Apache Spark
本文插图

Spark MapReduce示例-Hadoop MapReduce中的Wordcount程序
Hadoop|带你对比Hadoop MapReduce与Apache Spark
本文插图


Hadoop|带你对比Hadoop MapReduce与Apache Spark
本文插图

Spark MapReduce比较-底线