转http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-install/
1. 准备
首先你需要准备一台或多台服务器,同Hadoop 1.0一样,你需要安装JDK,利用ssh设置免密码登录,在此不具体介绍。
2. 安装
接下来,你可从http://archive.cloudera.com/cdh4/cdh/4/下载最新版的CDH4,然后解压后,修改以下几个配置文件:
(1) 设置环境变量
在${HADOOP_HOME}/etc/hadoop/hadoop-env.sh中,添加JAVA安装目录:
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
(2) 修改mapred-site.xml
在${HADOOP_HOME}/etc/hadoop/下,将mapred-site.xml.templat重命名成mapred-site.xml,并添加以下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
【解释】相比于Hadoop1.0,用户无需再配置mapred.job.tracker,这是因为JobTracker已变成客户端的一个库,他可能被随机调度到任何一个slave上,也就是它的位置是动态生成的。需要注意的是,在该配置文件中需用mapreduce.framework.name指定采用的框架名称,默认是将作业提交到MRv1的JobTracker端。
(3) 修改core-site.xml
在${HADOOP_HOME}/etc/hadoop/中,修改core-site.xml,为了简单,我们仍采用Hadoop1.0中的HDFS工作模式(不配置HDFS Federation):
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://YARN001:8020</value>
<final>true</final>
</property>
</configuration>
(4) 修改yarn-site.xml
在${HADOOP_HOME}/etc/hadoop/中,修改yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
【解释】为了能够运行MapReduce程序,需要让各个NodeManager在启动时加载shuffle server,shuffle server实际上是Jetty/Netty Server,Reduce Task通过该server从各个NodeManager上远程拷贝Map Task产生的中间结果。上面增加的两个配置均用于指定shuffle serve。如果YARN集群有多个节点,你还要配置yarn.resourcemanager.address等参数,具体参考Cloudera的这篇文档:Deploying MapReduce v2 (YARN) on a Cluster。
(5) 修改hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/mnt/disk1/yarn/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/mnt/disk1/yarn/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property></configuration>
(6) 修改slaves
在slaves文件中添加你的节点ip或者host:
YARN001
如果有多个NodeManager,可一次添加到该文件中,每个占一行。
(7) 启动HDFS
你可以使用以下命令分别启动NameNode和DataNode:
bin/hadoop namenode -format
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode(如果有多个datanode,需使用hadoop-daemons.sh)
或者一次启动:sbin/ start-dfs.sh
(8) 启动YARN
你可以使用以下命令分别启动ResourceManager和NodeManager:
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager(如果有多个datanode,需使用yarn-daemons.sh)
或者一次启动过:sbin/start-yarn.sh
(9) 检查是否运行成功
打开浏览器,输入:http://yarn001:8088
(10) 运行应用程序
通常而言,我们会运行examples中的最简单的作业—sleepjob,但CDH已将之移除,我们可运行另外一个很简单的作业—pi:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.0.0-cdh4.1.1.jar pi 20 10
界面截图(点击图片查看大图):
ResourceManager主界面:
MapReduce Application Master界面:
Map Task运行状况:
某个Node上各个Container状态:
3. 总结
在启动YARN时,最好手工顺次启动各个服务,并通过jps命令查看服务是够启动成功,如果不成功,则在安装目录下的logs文件夹中查看相应的日志以发现原因。