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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值