Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort

简介

可插入的 shuffle 和 sort 功能,允许在shuffle 和 sort 逻辑中用可选择的实现类替换。这个情况的例子是:用一个不是HTTP的应用协议,如RDMA来 shuffle 从Map节点中到Reducer节点的数据;或者用自定义的允许 Hash聚合和Limit-N查询的算法来代替sort逻辑。

重要: 可插入的 shuffle  sort 功能是实验性的、不稳定。这意味着提供的API可能改变或破坏未来Hadoop版本的兼容性。

实现一个自定义的 Shuffle 和 Sort

一个自定义的 shuffle 实现需要一个 org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices.AuxiliaryService 在 NodeManagers 上运行的实现类和 org.apache.hadoop.mapred.ShuffleConsumerPlugin 在Reducer任务上运行的实现类。

由 Hadoop 提供的默认实现可以作为参考:

  • org.apache.hadoop.mapred.ShuffleHandler
  • org.apache.hadoop.mapreduce.task.reduce.Shuffle

一个自定义的 sort 实现需要一个 org.apache.hadoop.mapred.MapOutputCollector 在Mapper任务上运行的实现类和(可选的,依赖于sort实现)实现类一个 org.apache.hadoop.mapred.ShuffleConsumerPlugin在Reducer任务上运行的实现类。

由 Hadoop 提供的默认实现可以作为参考:

  • org.apache.hadoop.mapred.MapTask$MapOutputBuffer
  • org.apache.hadoop.mapreduce.task.reduce.Shuffle

配置

除了运行在 NodeManagers 上的辅助的服务帮助 shuffle(默认是 ShuffleHandler),所有的可插入组件运行在作业任务上。这意味着,他们在每一个作业上配置。帮助Shuffle
的辅助服务必须在NodeManager上进行配置。

Job 配置属性 (在每个作业上):

属性 默认值 说明
mapreduce.job.reduce.shuffle.consumer.plugin.class org.apache.hadoop.mapreduce.task.reduce.Shuffle 要用的 ShuffleConsumerPlugin实现
mapreduce.job.map.output.collector.class org.apache.hadoop.mapred.MapTask$MapOutputBuffer 要用的 MapOutputCollector实现

这些属性也可以在 mapred-site.xml 中配置,以对所有作业修改默认值。

NodeManager 属性配置, yarn-site.xml,所有节点上:

属性 默认值 说明
yarn.nodemanager.aux-services ...,mapreduce_shuffle 辅助的服务名
yarn.nodemanager.aux-services.mapreduce_shuffle.class org.apache.hadoop.mapred.ShuffleHandler 要用的辅助的类

重要: 如果在默认的 mapreduce_shuffle 服务之外设置一个辅助的服务,那么新的服务key
应该添加到 yarn.nodemanager.aux-services 属性中,例如 mapred.shufflex.
然后属性定义相关的类必须是 yarn.nodemanager.aux-services.mapreduce_shufflex.class.

Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort

时间: 2024-10-23 18:47:08

Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort的相关文章

Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置

目的 这份文档描写叙述了怎样安装.配置和管理从几个节点到有数千个节点的Hadoop集群. 玩的话,你可能想先在单机上安装.(看单节点配置). 准备 从Apache镜像上下载一个Hadoop的稳定版本号. 安装 安装一个Hadoop集群,一般包含分发软件到全部集群中的机器上或者是安装RPMs. 一般地,集群中的一台机器被唯一地设计成NameNode,还有一台机器被设置成ResourceManager.这是master(主). 集群中剩下的机器作为DataNode 和 NodeManager.这些是

Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle

简介 Encrypted Shuffle capability (加密洗牌功能?)允许用HTTPS 和 可选的客户端验证 (也称作双向的 HTTPS, 或有客户端证书的 HTTPS) 去加密 MapReduce shuffle.它包括: 在HTTP 和 HTTPS 之间绑定 shuffle 的一个 Hadoop 配置 用来指定 keystore 和 truststore 属性的Hadoop配置(位置,类型,密码) 用于 shuffle 服务和reducer任务去取 shuffle 数据. 在集群

Hadoop-2.2.0中文文档—— MapReduce 下一代 -- 公平调度器

目的 此文档描述了 FairScheduler, Hadoop 的一个可插入式的调度器,允许 YARN 应用在一个大集群中公平地共享资源. 简介 公平调度是一种分配资源给应用的方法,以致到最后,平均上所有应用获得相等的资源.  Hadoop NextGen 能够调度多种类型的资源.默认的, Fair Scheduler 仅以内存为基础作公平调度决策.可以用Ghodsi 等开发的 Dominant Resource Fairness 概念配置调度内存和CPU.仅有一个应用运行时,这个应用使用整个集

Hadoop-2.2.0中文文档—— MapReduce 下一代--容量调度器

开始->运行->gpedit.msc,打开策略组编辑器,在树状菜单中选 择计算机配置->管理模板->终端服务,在右侧窗口中打开"限制 连接数量",选择"已启用",修改"TS允许的最大连接数",确定 . 完成以上两步可以解决远程连接最大值你能为3个(包括本地控制台 )的问题.如果需要使多用户可以同时使用同一个用户名登录远程连 接,那么还需要进行一下设置: 开始->运行->tscc.msc,打开终端服务配置,点击&

Hadoop-2.2.0中国文档—— MapReduce 下一代 -- 公平调度

目的 此文档描写叙述了 FairScheduler, Hadoop 的一个可插入式的调度器,同意 YARN 应用在一个大集群中公平地共享资源. 简单介绍 公平调度是一种分配资源给应用的方法.以致到最后,平均上全部应用获得相等的资源.  Hadoop NextGen 可以调度多种类型的资源.默认的, Fair Scheduler 仅以内存为基础作公平调度决策.可以用Ghodsi 等开发的 Dominant Resource Fairness 概念配置调度内存和CPU.仅有一个应用执行时,这个应用使

Hadoop-2.2.0中文文档—— 从Hadoop 1.x 迁移至 Hadoop 2.x

简介 本文档对从 Apache Hadoop 1.x 迁移他们的Apache Hadoop MapReduce 应用到 Apache Hadoop 2.x 的用户提供了一些信息. 在 Apache Hadoop 2.x 中,我们已经把资源管理功能放入 分布式应用管理框架 的Apache Hadoop YARN,而 Apache Hadoop MapReduce (亦称 MRv2) 保持为一个纯分布式计算框架. 总之,之前的 MapReduce 运行时 (亦称 MRv1) 已经被重用并且不会有重大

Hadoop-2.2.0中文文档—— Common - CLI MiniCluster

目的 使用 CLI MiniCluster, 用户可以简单地只用一个命令就启动或关闭一个单一节点的Hadoop集群,不需要设置任何环境变量或管理配置文件. CLI MiniCluster 同时启动一个 YARN/MapReduce 和 HDFS 集群. 这对那些想要快速体验一个真实的Hadoop集群或是测试依赖明显的Hadoop函数的非Java程序 的用户很有用. Hadoop Tarball 你需要从发布页获取tar包.或者,你可以从源码中自己编译. $ mvn clean install -

Hadoop-2.2.0中文文档—— Common - Native Libraries Guide

概览 这个入门教程描述了native(本地?原生?)hadoop库,包含了一小部分关于native hadoop共享库的讨论. This guide describes the native hadoop library and includes a small discussion about native shared libraries. 注意: 根据你的环境,词组 "native libraries" 可能会变成 *.so,这样你就需要编译,然后,要是词组 "nati

Hadoop-2.2.0中文文档—— Common - 服务层认证

目的 此文档描述了如何为Hadoop配置和管理 Service Level Authorization . 预备条件 确保已经安装Hadoop,配置和设置都正确了.更多细节,请看:* 首次使用者的单节点设置 * 大的.分布式集群的集群设置. 概览 Service Level Authorization 是一个必要的初始认证机制,其确保客户端连接到一个有必要的.预配置的.权限和认证服务的特定的Hadoop服务.例如,一个 MapReduce 集群可以使用这个机制允许一个配置了的用户/组列表提交作业