本文紧接上篇博客Hadoop+NFS+ZOOKEEPER实现高可用集群
Yarn是Hadoop集群的资源管理系统。Hadoop2.0对MapReduce框架做了彻底的设计重构,我们称Hadoop2.0中的MapReduce为MRv2或者Yarn。Hadoop2.x也就是Yarn,分别用两个进程来管理这两个任务:
ResourceManger
ApplicationMaster
需要注意的是,在Yarn中我们把job的概念换成了application,因为在新的Hadoop2.x中,运行的应用不只是MapReduce了,还有可能是其它应用如一个DAG(有向无环图Directed Acyclic Graph,例如storm应用)。Yarn的另一个目标就是拓展Hadoop,使得它不仅仅可以支持MapReduce计算,还能很方便的管理诸如Hive、Hbase、Pig、Spark/Shark等应用。这种新的架构设计能够使得各种类型的应用运行在Hadoop上面,并通过Yarn从系统层面进行统一的管理,也就是说,有了Yarn,各种应用就可以互不干扰的运行在同一个Hadoop系统中,共享整个集群资源。
本文实验环境和上文一致,是接上个实验(NFS+HDFS+ZOOKEEPER实现Hadoop集群高可用)来做的,话不多说了,开始!
[hadoop@rhel65-lockey1 hadoop]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[hadoop@rhel65-lockey1 hadoop]$ vim etc/hadoop/mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
[hadoop@rhel65-lockey1 hadoop]$ vim etc/hadoop/yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.ha.enabledname>
<value>truevalue>
property>
<property>
<name>yarn.resourcemanager.cluster-idname>
<value>RM_CLUSTERvalue>
property>
<property>
<name>yarn.resourcemanager.ha.rm-idsname>
<value>rm1,rm2value>
property>
<property>
<name>yarn.resourcemanager.hostname.rm1name>
<value>172.25.5.91value>
property>
<property>
<name>yarn.resourcemanager.hostname.rm2name>
<value>172.25.5.95value>
property>
<property>
<name>yarn.resourcemanager.recovery.enabledname>
<value>truevalue>
property>
<property>
<name>yarn.resourcemanager.store.classname>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStorevalue>
property>
<property>
<name>yarn.resourcemanager.zk-addressname>
<value>172.25.5.92:2181,172.25.5.93:2181,172.25.5.94:2181value>
property>
configuration>
最好是把 RM 与 NN 分离运行,这样可以更好的保证程序的运行性能
首先在主机1上开启yarn
[hadoop@rhel65-lockey1 hadoop]$ sbin/start-yarn.sh
但是这个进程不会在5上自动启动,所以需要手动去5上进行启动
sbin/yarn-daemon.sh start resourcemanager
这个时候通过浏览器访问两台主机的8088端口可以看到两台主机有不同的ResourceManager HA state:
可以将active节点的对应ResourceManager的进程干掉,这个时候再去查看会发现另一边变成了active
这个时候再去启动被干掉的ResourceManager,他就会成为standby状态
也可以在命令行中通过在任意ZK节点上运行以下命令来进行查看
[hadoop@rhel65-lockey2 zookeeper-3.4.9]$ bin/zkCli.sh -server 127.0.0.1:2181
关于hadoop集群常用的命令如下:
bin/hdfs namenode -format #格式化 HDFS 集群
sbin/start-dfs.sh #启动 hdfs 集群
sbin/stop-dfs.sh#停止hdfs 集群
bin/hdfs zkfc -formatZK#格式化 zookeeper
sbin/hadoop-daemon.sh start namenode#启动namenode
sbin/start-yarn.sh #启动 yarn 服务
sbin/stop-yarn.sh #关闭 yarn 服务
sbin/yarn-daemon.sh start resourcemanager#启动resourcemanager