Hadoop 完美解决start 您所在的位置:网站首页 启动hadoop找不到命令 Hadoop 完美解决start

Hadoop 完美解决start

2023-11-22 08:16| 来源: 网络整理| 查看: 265

一、集群描述

主机: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

在这里插入图片描述 hadoop和yarn都有一个daemon.sh和daemons.sh,这个在$HADOOP_HOME/sbin目录下都能看得到

在这里插入图片描述

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,当然患有强迫症的我就例外了

在这里插入图片描述 这是修改之前的关闭结果,发现最后一行没有代理服务器去关闭,我记得在start-yarn.sh中官方把start proxyserver的启动命令给注释掉了,事实上我也没有用到这个守护进程,所以在stop-yarn.sh中也可以顺便把它给注释掉。

echo "Stopping 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 "Stopping ResourceManagers on [datanode1 datanode2]" # stop resourceManager "$bin"/yarn-daemons.sh --config $YARN_CONF_DIR stop resourcemanager echo "Stopping NodeManagers on [namenode datanode1 datanode2]" # stop nodeManager "$bin"/yarn-daemons.sh --config $YARN_CONF_DIR stop nodemanager # stop proxy server #"$bin"/yarn-daemon.sh --config $YARN_CONF_DIR stop proxyserver 关闭展示:

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

若你喜欢我的文章,欢迎关注👇点赞👇评论👇收藏👇 谢谢支持!!!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有