加米谷大数据|MapReduce与Apache Spark,带你对比Hadoop( 二 )


加米谷大数据|MapReduce与Apache Spark,带你对比Hadoop
文章图片
加米谷大数据|MapReduce与Apache Spark,带你对比Hadoop
文章图片
i)Hadoop与Spark性能
据说仅通过减少对磁盘的读写次数 , HadoopSpark即可执行比HadoopMapReduce框架快约10至100倍的批处理作业 。
在使用MapReduce的情况下 , 将执行以下MapandReduce任务 , 随后将出现同步障碍 , 并且需要将数据保存到磁盘 。 开发MapReduce框架的功能是为了在出现故障的情况下可以恢复作业 , 但是这样做的缺点是 , 它没有最大程度地利用Hadoop群集的内存 。
不过 , 借助HadoopSpark , RDD(弹性分布式数据集)的概念使您可以将数据保存在内存中 , 并且仅在需要时才将其保存到磁盘上 , 并且它不具有任何类型的同步障碍 , 可能会减慢数据传输速度 。 处理 。 因此 , 使用内存时 , Spark的通用执行引擎比HadoopMapReduce快得多 。
ii)HadoopMapReduce与Spark-轻松管理与HadoopSpark一样 , 组织现在可以轻松地简化其用于数据处理的基础架构 , 因为现在可以在同一群集中执行流式处理 , 批处理和机器学习 。
大多数实时应用程序都使用HadoopMapReduce生成报告 , 以帮助找到历史查询的答案 , 然后完全延迟另一个将处理流处理的系统 , 以便实时获取关键指标 。 因此 , 组织应该管理和维护单独的系统 , 然后为两个计算模型开发应用程序 。
但是 , 使用HadoopSpark可以消除所有这些复杂性 , 因为可以在同一系统上同时实现流处理和批处理 , 从而简化了应用程序的开发 , 部署和维护 。 使用Spark可以控制各种工作负载 , 因此 , 如果同一流程中的各种工作负载之间存在交互 , 则更容易管理和保护此类工作负载 , 这是MapReduce的局限性 。
iii)SparkvsMapreduce–处理流的实时方法在使用HadoopMapReduce的情况下 , 您只需要处理一批存储的数据 , 但是使用HadoopSpark , 也可以通过SparkStreaming实时修改数据 。
使用SparkStreaming , 可以通过各种软件功能传递数据 , 例如在收集数据时进行数据分析 。
加米谷大数据|MapReduce与Apache Spark,带你对比Hadoop
文章图片
开发人员现在也可以使用ApacheSpark进行图形处理 , 该处理可在各种实体(例如人和对象)之间映射数据中的关系 。 组织还可以将ApacheSpark与预定义的机器学习代码库结合使用 , 以便可以对存储在各种Hadoop集群中的数据执行机器学习 。
iv)Spark与MapReduce-缓存与完全面向磁盘的MapReduce不同 , Spark通过在分布式工作者的内存中缓存部分结果来确保较低的延迟计算 。 与编写复杂的HadoopMapReduce管道相比 , HadoopSpark逐渐被证明可以极大地提高生产力 。
v)SparkvsMapReduce-易于使用编写Spark总是比编写HadoopMapReduce代码紧凑 。 这是一个SparkMapReduce示例-下图显示了Spark和HadoopMapReduce中的字数统计程序代码 。 如果查看这些图像 , 显然可以看出HadoopMapReduce代码更加冗长冗长 。
SparkMapReduce示例-Spark中的Wordcount程序
加米谷大数据|MapReduce与Apache Spark,带你对比Hadoop
文章图片
SparkMapReduce示例-HadoopMapReduce中的Wordcount程序
加米谷大数据|MapReduce与Apache Spark,带你对比Hadoop
文章图片
加米谷大数据|MapReduce与Apache Spark,带你对比Hadoop
文章图片
SparkMapReduce比较-底线HadoopMapReduce用于不适合内存的数据 , 而ApacheSpark对于适合内存的数据具有更好的性能 , 特别是在专用集群上 。 HadoopMapReduce可以是一种经济的选择 , 因为Hadoop即服务(HaaS)和更多人员的可用性 。 根据基准测试 , ApacheSpark更具成本效益 , 但是在使用Spark的情况下 , 人员配置会很昂贵 。 ApacheSpark和HadoopMapReduce都具有容错能力 , 但是相对而言 , HadoopMapReduce比Spark具有更高的容错能力 。 就数据类型和数据源而言 , Spark和HadoopMapReduce都具有相似的兼容性 。 在ApacheSpark中进行编程比较容易 , 因为它具有交互模式 , 而HadoopMapReduce需要具有核心的Java编程技能 , 但是有多种实用程序使在HadoopMapReduce中进行编程更加容易 。 ApacheSpark是否会消除HadoopMapReduce?HadoopMapReduce被大多数用户谴责为HadoopClustering中的日志阻塞 , 原因是MapReduce以批处理模式执行所有作业 , 这意味着无法实时分析数据 。 随着HadoopSpark的问世(事实证明它是HadoopMapReduce的替代品) , 阻碍数据科学家的最大问题是Hadoopvs.Spark-谁赢得了胜利?


推荐阅读