分享

Hadoop-2.2.0中文文档:Common - CLI MiniCluster;MapReduce下一代技术

本帖最后由 xioaxu790 于 2014-9-4 16:49 编辑
问题导读
1、如何启动或关闭一个单一节点的Hadoop集群?

2、如何安装Hadoop Tarball?
3、怎样实现一个自定义的 Shuffle 和 Sort?



目的
使用 CLI MiniCluster, 用户可以简单地只用一个命令就启动或关闭一个单一节点的Hadoop集群,不需要设置任何环境变量或管理配置文件。 CLI MiniCluster 同时启动一个 YARN/MapReduce 和 HDFS 集群。
这对那些想要快速体验一个真实的Hadoop集群或是测试依赖明显的Hadoop函数的非Java程序 的用户很有用。


Hadoop Tarball
你需要从发布页获取tar包。或者,你可以从源码中自己编译。
  1. $ mvn clean install -DskipTests
  2. $ mvn package -Pdist -Dtar -DskipTests -Dmaven.javadoc.skip
复制代码

注意: 你需要事先安装有 protoc 2.5.0 。
tar包应该在 hadoop-dist/target/ 目录.


运行 MiniCluster
从解压出的tar包的根目录,你可以用下面的命令启动 CLI MiniCluster :
  1. $ bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar minicluster -rmport RM_PORT -jhsport JHS_PORT
复制代码

在上面的命令示例中,RM_PORT 和 JHS_PORT 应该由用户的端口号替换。如果不指定,会随机使用空闲的端口。

命令行参数中有一个数字,用户可以用来控制启动哪个服务,或者传递别的属性。可用的命令行参数如下:
$ -D <property=value>    Options to pass into configuration object
$ -datanodes <arg>       启动多少个 datanodes  (默认是 1)
$ -format                格式化 DFS (默认是 false)
$ -help                  打印帮助选项
$ -jhsport <arg>         JobHistoryServer 端口 (默认是 0--我们选的)
$ -namenode <arg>        namenode 的 URL  (默认 要么是 DFS 集群,要么是临时目录)
$ -nnport <arg>          NameNode 端口 (默认是 0--我们选的)
$ -nodemanagers <arg>    要启动多少个 nodemanagers(默认是 1)
$ -nodfs                 不启动一个 mini DFS 集群
$ -nomr                  Don't start a mini MR cluster
$ -rmport <arg>          ResourceManager 端口 (默认是 0--我们选的)
$ -writeConfig <path>    保存配置文件到这个XML文件里。
$ -writeDetails <path>   写出基本信息到这个JSON文件中。

要显示可用的参数的全列表,用户可以传-help参数给上面的命令。


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 提供的默认实现可以作为参考:
  1. org.apache.hadoop.mapred.ShuffleHandler
  2. org.apache.hadoop.mapreduce.task.reduce.Shuffle
复制代码

一个自定义的 sort 实现需要一个 org.apache.hadoop.mapred.MapOutputCollector 在Mapper任务上运行的实现类和(可选的,依赖于sort实现)实现类一个 org.apache.hadoop.mapred.ShuffleConsumerPlugin在Reducer任务上运行的实现类。
由 Hadoop 提供的默认实现可以作为参考:
  1. org.apache.hadoop.mapred.MapTask$MapOutputBuffer
  2. org.apache.hadoop.mapreduce.task.reduce.Shuffle
复制代码


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

111.JPG
这些属性也可以在 mapred-site.xml 中配置,以对所有作业修改默认值。
NodeManager 属性配置, yarn-site.xml,所有节点上:

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





已有(3)人评论

跳转到指定楼层
无所谓的人 发表于 2015-6-3 09:26:44
不错,参考一下
回复

使用道具 举报

无所谓的人 发表于 2015-6-3 09:31:32
刚着手搞这个的,感觉亚历山大啊
回复

使用道具 举报

zhangyi_bac 发表于 2015-6-13 20:06:51
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条