Hadoop 完美解决start | 您所在的位置:网站首页 › 启动hadoop找不到命令 › Hadoop 完美解决start |
一、集群描述
主机:CentOS7.8 jdk1.8 hadoop、hive、hbase、zookeeper:CDH5.14.2 namenode datanode1 datanode2 NameNode ✔(主) ✔(备) ✘ DataNode ✔ ✔ ✔ JournalNode ✔ ✔ ✔ QuorumPeerMain ✔ ✔ ✔ ResourceManager ✘ ✔(主) ✔(备) NodeManager ✔ ✔ ✔ HMaster ✔(主) ✘ ✔(备) HRegionServer ✔ ✔ ✔ 二、问题描述还记得上学期学习的时候,老师说过备用ResourceManager要手动启动,手动关闭,start-all.sh、start-yarn.sh都是是不能启动的。 启动的时候要这样: [root@datanode2 ~]# yarn-daemon.sh start resourcemanager 关闭的时候要这样: [root@datanode2 ~]# yarn-daemon.sh stop resourcemanager 当时觉得麻烦就麻烦点吧,毕竟刚开始水平有限,也没有必要深究那么多,所以这个问题到了现在不仅没有解决,反而变本加厉。 前几天将集群的CentOS6换成了7,进行了一次大换血,结果这回连主ResourceManager都启动不起来了!需要手动启动! start-all.sh命令其实就是连续执行了start-dfs.sh和start-yarn.sh这两个命令,而在starting yarn daemons的时候只是在namenode上启动ResourceManager,虽然我的namenode上根本就没有ResourceManager。。。而另外两个装有ResourceManager的结点没有收到要启动的命令,所以自然就没有ResourceManager进程。
starting yarn daemons后只是对namenode下达了启动ResourceManager的命令,不像NodeManager对三个结点都下达了启动命令。 所以我觉得可能是start-yarn.sh这个脚本有问题,在有了一定的shell编程基础后,我也尝试着写一些shell脚本。 看一下这个脚本 [root@namenode /]# vim $HADOOP_HOME/sbin/start-yarn.sh 开头的注释即提到 Start all yarn daemons. Run this on master node. 要在主节点上启动所有的yarn守护进程,我是在namenode上启动的呀,所有这一点没有问题,继续往下看。 在31行发现了问题,与33行的NodeManager启动命令相比较,它用的是yarn-daemon.sh这个脚本而不是yarn-daemons.sh
daemon.sh就是在本节点上启动守护进程,而daemons.sh是在所有节点上启动守护进程。daemons.sh会读取$HADOOP_CONF_DIR下的slaves文件(这个在搭集群的时候要写好的),里面保存着每个节点的域名或域名映射。然后daemons.sh就会在每个节点上运行daemon.sh脚本,从而达到在每台机器上都启动守护进程的目的。不得不说,这很妙! 这下问题就变得简单了,只要在31行给daemon加个s就行!虽然会在没有RM的namenode上也启动一下RM,不过这是小问题了,我的主要目的已经达到了。 四、解决问题以下修改只需在主节点上完成 修改start-yarn.sh最简单的就直接给31行的daemon加个s就行了,下面的写法主要是为了模仿start-dfs.sh的输出格式(强迫症) echo "Starting yarn daemons" bin=`dirname "${BASH_SOURCE-$0}"` bin=`cd "$bin"; pwd` DEFAULT_LIBEXEC_DIR="$bin"/../libexec HADOOP_LIBEXEC_DIR=${HADOOP_LIBEXEC_DIR:-$DEFAULT_LIBEXEC_DIR} . $HADOOP_LIBEXEC_DIR/yarn-config.sh echo "Starting Resourcemanagers on [datanode1 datanode2]" # start resourceManager "$bin"/yarn-daemons.sh --config $YARN_CONF_DIR start resourcemanager echo "Starting NodeManagers on [namenode datanode1 datanode2]" # start nodeManager "$bin"/yarn-daemons.sh --config $YARN_CONF_DIR start nodemanager # start proxyserver #"$bin"/yarn-daemon.sh --config $YARN_CONF_DIR start proxyserver 启动展示:
上文说到,关闭的时候也要手动关闭,所以也偷懒一下 修改stop-yarn.sh最简单的也是给31行的daemon加个s,当然患有强迫症的我就例外了
若你喜欢我的文章,欢迎关注👇点赞👇评论👇收藏👇 谢谢支持!!! |
CopyRight 2018-2019 实验室设备网 版权所有 |