测试Hadoop的启动顺序及遇到的问题

测试环境:

一个namenode

一个secondary namenode,以实现namenode的HA

三个datanode节点

两个RM,以实现Resource Manager的HA

共部署了7个虚拟机,操作系统是Ubuntu 14. 所有虚拟机是在本机加载,所以为了节省资源,Zookeeper分别部署在三个datanode节点上。

Hadoop的sbin目录下的start-all.sh已经不建议使用,代替的是单独启动各个命令,比如start-dfs.sh, start-yarn.sh. 但是从学习的角度看,使用start-all.sh,可以直接看出正确的启动顺序。

运行start-dfs.sh:

- namenode

- secondary namenode (HA node)

- all datanodes

- all journalnodes

- ZK Failover Controllers (on namenode and sceondary node)

 运行start-yarn.sh

- resource manager

- all nodemanager

注意:我的测试环境里Zookeeper是单独配置的,所以在上面两个命令启动前启动,找到Zookeeper的安装目录/bin,运行./zkServer.sh start.

另外,碰到一个奇怪的问题,因为RM是配置了HA,并且放在单独的两台机器上,第一次配置好了以后,在namenode下,如果启动yarn,比如start-yarn.sh,resource manager能够自动启动起来,但只启动一个,网上有资料说这个是bug。但是过了一段时间后,resource manager通过上述方式完全启动不起来,查看namenode的log,会报下面的异常:

2016-05-02 02:38:47,523 FATAL org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting ResourceManager
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Invalid configuration! Can not find valid RM_HA_ID. None of yarn.resourcemanager.address.rm1 yarn.resourcemanager.address.rm2  are matching the local address OR yarn.resourcemanager.ha.id is not specified in HA Configuration

解决办法也比较简单,直接登录到Resource Manager所在的机器上,单独启动RM即可,使用的命令如下:

yarn-daemon.sh start resourcemanager

猜你喜欢

转载自ajaxcn.iteye.com/blog/2295214