机器配置如下,两台机器,nn2,nn2,搭建基于QJM的高可用集群,zk集群。
如果我在yarn-site.xml中配置的nodemanager的可用资源过少,其他配置如果不一致,那么就会造成提交的job,状态是Accepted,
但是一直是unassigned,没有资源可以分配,所以就不能running.
关于mapred-site.xml中关于map reduce java option的修改,对于本身container的执行来说,意义不大,
我发现,nn1上配置错误的java options,在nn2上执行的时候报错。这个本身在执行container的时候,可能
不是读取的本机的java optioin的配置。
经过实验现在观察到的情形是,
nn1,配置为 mapreduce.map.java.opts :-server -Xms200m -Xmx500m
nn2,配置为 mapreduce.map.java.opts :-server -Xms300m -Xmx600m
测试发现,如果命令
hadoop jar /app/cdh23502/share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.3.0-cdh5.0.2.jar pi 10 100
nn1 rm为active, 在nn1上执行,
则mrappmaster在nn1上,map reduce attempt 在nn2上执行,使用的java opts 是nn1的-server -Xms200m -Xmx500m
若命令在nn2执行,mrappmaster仍在nn1上,但nn2上执行的map 使用的java opts是nn2自己的。
yarn-daemon.sh stop resourcemanager在nn1上执行,nn2上的rm成为active
再尝试执行命令,
nn1上执行命令:
nn1,nn2上执行mapreduce都是使用的nn1上的配置。
在nn2上执行命令:
nn1,nn2上执行的mapreduce都是使用的nn2上的配置。
zookeeper自动切换active ,standby有问题的时候,可以强制手工切换主备。
以下命令是获取服务的状态与进行状态切换的命令。
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2
hdfs haadmin -getServiceState nn1
hdfs haadmin -transitionToActive nn1 –forcemanual
2.配置yarn-env.sh 使用jconsole监控nodemanager进程
近来发现某一台集群中的机器一直出现nodemanager的OOM,就尝试使用jconsole进行监控一下。
需要修改yarn-env.sh,改动如下:
YARN_OPTS="$YARN_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=60001 -Djava.rmi.server.hostname=192.168.56.121"
YARN_OPTS="$YARN_OPTS -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
然后在windows上打开console,选择远程连接,填入:192.168.56.121:60001,确定即可。
原文:http://www.cnblogs.com/huaxiaoyao/p/5003428.html