MapReduce

回到术语表

MapReduce是什么?

MapReduce是一个基于java的、分布式的执行框架内Apache Hadoop生态系统。它带走了分布式编程的复杂性,让开发人员实现的两个处理步骤:1)和2)减少地图。分离映射步骤,数据并行处理任务。转换逻辑可以应用于每个块的数据。一旦完成,减少阶段接管处理聚集数据从地图上设置. .一般来说,MapReduce的用途Hadoop分布式文件系统(HDFS)输入和输出。然而,一些技术之上,如Sqoop,允许访问关系系统。

MapReduce的历史

MapReduce是在谷歌的城墙开发早在2004年,杰弗瑞迪恩和桑杰谷歌格玛沃特(Dean &格玛沃特,2004)。在他们的论文中,“MAPREDUCE:简化数据处理大型集群,“和灵感来自于map和reduce函数在函数式编程中常用的。当时,谷歌专有MapReduce系统运行在Google文件系统(GFS)。2014年,谷歌不再使用MapReduce作为他们的主要大数据处理模型。MapReduce曾经是唯一的方法,通过这种方法可以检索数据存储在HDFS,但情况已不再是这样。今天,有其他基于查询系统等蜂巢和猪用于检索数据使用sql语句从HDFS运行书面使用MapReduce模型一起工作。

MapReduce是如何工作的呢?

MapReduce系统通常是由三个步骤组成的(即使它是广义的组合Map和Reduce操作/功能)。MapReduce操作:
  • 地图:输入数据首先分成小块。Hadoop框架然后决定多少映射器使用,根据要处理的数据的大小和每个映射器服务器上可用的内存块。每一块被分配给一个映射器进行处理。每个工人的节点映射函数适用于本地数据,并将输出写入到临时存储。主(主)节点确保只有一个副本冗余输入数据的处理。
  • 洗牌,结合和分区:工作者节点分配数据基于输出键(map函数产生的),这样所有的数据都属于一个关键是位于同一工人节点。作为一个可选的流程组合器(减速器)可以单独运行每个映射服务器减少数据在每个映射器进一步简化减少数据足迹和洗牌和排序。分区(可选)决定的过程是减速器必须提交的数据并将它分配给一个特定的减速器。
  • 减少:减速机不能启动,而映射器仍在进行中。工作者节点处理每个组<键,值>对输出数据,并行生产<键,值>对作为输出。所有的地图输出值具有相同键分配给一个减速机,然后聚集键的值。与映射函数强制过滤和排序的初始数据,reduce函数是可选的。

MapReduce有哪些注意事项?


  • 刚性地图减少编程范式

而暴露和减少接口映射到程序员简化了分布式应用程序的创建Hadoop,很难表达广泛的逻辑地图减少编程范式。迭代过程是逻辑的一个例子,并不适用于地图减少。一般来说,数据没有保存在内存中,迭代逻辑是由链接MapReduce应用程序一起导致增加了复杂性。

  • 读/写密集型

MapReduce工作在内存中存储一些数据,因为它没有用户数据的分布式内存结构的概念。HDFS数据必须读取和写入。更复杂的MapReduce应用程序涉及到链接小MapReduce工作在一起。因为之间的数据不能通过这些工作,它需要通过HDFS数据共享。这引入了一个处理瓶颈。

  • Java集中

MapReduce是基于java的,因此最有效的方式为它将使用java编写应用程序。其代码必须整理在一个单独的开发环境,然后部署到Hadoop集群。这种风格的发展不是广泛采用数据分析师和数据科学家用于其他技术如Python像SQL或解释型语言。MapReduce的确有能力调用Map / Reduce逻辑等其他语言编写的C、Python或Shell脚本。然而,它通过旋转一个系统进程来处理这些程序的执行。这个操作介绍工作的开销将影响性能。

  • 从大数据产品淘汰

MapReduce是大数据产品逐渐被淘汰。虽然有些厂商还包括它在Hadoop分布,这一切都是为了让遗留应用程序的支持。客户已不再创建MapReduce应用程序,而不是采用更简单和更快的这样的框架Apache火花。

MapReduce是用来做什么的?

遗留应用程序和Hadoop本机工具如Sqoop和猪今天利用MapReduce。有非常有限的MapReduce应用程序开发也没有任何重大贡献它为开源技术。bob下载地址

常见误区MapReduce和火花

  • 关于MapReduce
  • 关于火花

MapReduce的优点

  1. 可伸缩性
  2. 灵活性
  3. 安全性和身份验证
  4. 更快的数据处理
  5. 非常简单的编程模型
  6. 可用性和弹性性质

简单的技巧如何提高MapReduce性能

  1. 启用超级模式
  2. 使用本地库
  3. 增加块大小
  4. 通过地图任务监控时间
  5. 确定是否可剥离数据压缩
  6. 设置数量减少的任务
  7. 分析数据的分区
  8. 洗牌阶段表现运动
  9. 优化MapReduce代码

MapReduce和砖三角洲的引擎

砖三角洲引擎是基于Apache火花和c++引擎调用光子。这允许DAG处理MapReduce缺乏的灵活性,从内存中处理速度和专业,本地编译引擎,提供了极其快速查询响应时间。用户可以与砖三角洲引擎使用Python, Scala, R,或SQL。现有火花应用程序可以修改使用达美航空发动机用简单的线条变化即指定“δ”数据格式。MapReduce和HDFS,本地不支持事务一致性的数据,也没有能力在数据集更新/删除现有的数据。三角洲引擎允许并发访问数据,数据生产者和消费者,还提供完整的CRUD功能。最后,MapReduce并不拥有内置的功能来处理小文件,在任何大数据环境中一个常见问题。砖三角洲引擎auto-compaction,优化数据写入存储的大小。它也有一个优化命令可以压缩文件的需求。三角洲的事务一致性特性,此操作可以在数据被发布由最终用户或应用程序访问。

五MapReduce的最佳选择

  1. Apache火花
  2. Apache风暴
  3. Ceph
  4. 九头蛇
  5. 谷歌BigQuery

额外的资源


回到术语表