启动和关闭Hadoop集群
针对Hadoop集群的启动,需要启动内部包含的HDFS集群和YARN集群两个集群框架。启动方式有两种:一种是单节点逐个启动;另一种是使用脚本一键启动。
1.单节点逐个启动和关闭
单节点逐个启动的方式,需要参照以下方式逐个启动Hadoop集群服务需要的相关服务进程,具体步骤如下。
(1)在主节点上使用以下指令启动HDFS NameNode进程:
$ hadoop-daemon.sh start namenode
(2)在每个从节点上使用以下指令启动HDFS DataNode进程:
$ hadoop-daemon.sh start datanode
(3)在主节点上使用以下指令启动YARN ResourceManager进程:
$ yarn-daemon.sh start resourcemanager
(4)在每个从节点上使用以下指令启动YARN nodemanager进程:
$ yarn-daemon.sh start nodemanager
(5)在规划节点hadoop02使用以下指令启动SecondaryNameNode进程:
$ hadoop-daemon.sh start secondarynamenode
上述介绍了单节点逐个启动和关闭Hadoop集群服务的方式。另外,当需要停止相关服务进程时,只需要将上述指令中的start更改为stop即可。
2.脚本一键启动和关闭
启动集群还可以使用脚本一键启动,前提是需要配置slaves配置文件和SSH免密登录(例如本书采用hadoop01、hadoop02、hadoop03三台节点,为了在任意一台节点上执行脚本一键启动Hadoop服务,那么就必须在三台节点包括自身节点均配置SSH双向免密登录)。
使用脚本一键启动Hadoop集群,可以选择在主节点上参考如下方式进行启动。
(1)在主节点hadoop01上使用以下指令启动所有HDFS服务进程:
$ start-dfs.sh
(2)在主节点hadoop01上使用以下指令启动所有YARN服务进程:
$ start-yarn.sh
上述使用脚本一键启动的方式,先启动了集群所有的HDFS服务进程,然后再启动了所有的YARN服务进程,这就完成了整个Hadoop集群服务的启动。
另外,还可以在主节点hadoop01上执行“start-all.sh”指令,直接启动整个Hadoop集群服务。不过在当前版本已经不再推荐使用该指令启动Hadoop集群了,并且使用这种指令启动服务会有警告提示。
同样,当需要停止相关服务进程时,只需要将上述指令中的start更改为stop即可(即
使用stop-dfs.sh、stop-yarn.sh来关停服务)。
在整个Hadoop集群服务启动完成之后,可以在各自机器上通过jps指令查看各节点的服务进程启动情况,效果分别如图1、2和3所示。
图1 hadoop01集群服务进程效果图
图2 hadoop02集群服务进程效果图
图3 hadoop03集群服务进程效果图
从图1、2和3可以看出,hadoop01节点上启动了NameNode、DataNode、ResourceManager和NodeManager四个服务进程;hadoop02上启动了DataNode、NodeManager和SecondaryNameNode三个Hadoop服务进程;hadoop03上启动了DataNode和NodeManager两个服务进程。这与之前规划配置的各节点服务一致,说明Hadoop集群启动正常。
注意:
读者在进行前面Hadoop集群的配置和启动时,可能会出现例如NodeManager进程无法启动或者启动后自动结束的情况,此时可以查看Hadoop解压包目录中logs下的日志文件,主要是因为系统内存和资源分配不足。此时,可以参考如下方式,在所有节点的yarn-site.xml配置文件中添加如下参数进行适当调整。
<property>
<!-- 定义NodeManager上要提供给正在运行的容器的全部可用资源大小 -->
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<!-- 资源管理器中分配给每个容器请求的最小内存限制 -->
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<!-- NodeManager可以分配的CPU核数 -->
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
上述配置文件中,yarn.nodemanager.resource.memory-mb表示该节点上NodeManager可使用的物理内存总量,默认是8192(MB),如果节点内存资源不够8GB,则需要适当调整;yarn.scheduler.minimum-allocation-mb表示每个容器可申请的最少物理内存量,默认是1024(MB);yarn.nodemanager.resource.cpu-vcores 表示NodeManager总的可用虚拟CPU核数。