Hadoop学习笔记-入门(5)-集群启动
集群配置
在配置集群之前,我们首先需要明确集群部署的规划,这里有几点需要注意的地方:
- NameNode和SecondaryNameNode不要安装在同一台服务器上
- ResoureManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台服务器上
于是在我们现有的三台机器hadoop102、hadoop103、hadoop104的基础上,进行如下的部署规划:
节点 | HDFS | Yarn |
---|---|---|
hadoop102 | NameNode、DataNode | NodeManager |
hadoop103 | DataNode | ResourceManager、NodeManager |
hadoop104 | SecondaryNameNode、DataNode | NodeManager |
hadoop在服务器端的配置文件分为两大部分,一部分是默认的配置文件,另一部分是用户自定义的配置文件。自定义的配置文件中配置的内容的优先级要高于默认配置文件的内容。
配置文件一共有四个,分别是core-site.xml
、hdfs-site.xml
、yarn-site.xml
、mapred-site.xml
,其中自定义配置文件可以在路径$HADOOP_HOME/etc/hadoop
路径中找到。
之后,对自定义配置文件做如下配置。
核心配置文件(core-site.xml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为 syh -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>syh</value>
</property>
</configuration>HDFS配置文件(hdfs-site.xml)
1
2
3
4
5
6
7
8
9
10
11
12<configuration>
<!-- nn web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>Yarn配置文件(yarn-site.xml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
</property>
</configuration>MapReduce配置文件(mapred-site.xml)
1
2
3
4
5
6
7<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
之后将配置好的集群文件分发到其他两台服务器上(三台服务器中都需要配置相同内容)。
集群启动
1. 命令行启动
启动集群之前,需要配置workers文件,路径为$HADOOP_HOME/etc/hadoop/workers
,其中增加所有的节点名称,即
1 |
|
- 文件内容中不允许有空格,空行等,因为每一行都会被解析成hostname的名称,需要完全匹配
- workers文件同样需要进行分发,在三台服务器上都需要进行配置
之后就可以进行集群的启动。
如果是第一次启动集群,那么需要在NameNode(hadoop102)上进行节点的格式化
1
2cd $HADOOP_HOME
hdfs namenode -format启动HDFS
1
2cd $HADOOP_HOME
sbin/start-dfs.sh启动Yarn(在ResourceManager(hadoop103)上启动)
1
2cd $HADOOP_HOME
sbin/start-yarn.sh
这样就完成了集群的启动,可以使用jps命令查看启动情况,也可以在浏览器中查看对应的数据信息:
- web端查看HDFS的NameNode
http://hadoop102:9870
- web端查看Yarn的ResourceManager
http://hadoop103:8088
2. 历史服务器和日志聚集的配置
为了查看程序的历史运行情况,需要进行历史服务器的配置。
历史服务器的配置在mapred-site.xml
配置文件中进行,在该文件中添加如下配置
1 |
|
同样需要将配置文件对其他两台服务器进行分发。
之后再配置了历史服务器的服务器上进行启动
1 |
|
启动失败的话检查一下代码,是不是history写错了(history中的r和o总喜欢换位置的人路过)
同样可以利用jps命令进行查看是否启动正确。
配置完了历史服务器之后,还需要对日志聚集服务进行配置。在hadoop运行的过程中,每台服务器上都会产生运行的日志。日志聚集的概念就是将所有服务器的日志聚集上传到HDFS系统上。
开启日志聚集功能,需要重新启动NodeManager、ResourceManager和HistoryServer。
开启日志聚集功能首先需要配置yarn-site.xml
文件,在该配置文件中添加如下内容
1 |
|
将配置文件分发给其他两台服务器。之后对NodeManager、ResourceManager和HistoryServer进行关闭再启动。
1 |
|
之后可以通过web端访问历史服务器http://hadoop102:19888
并查看运行日志。
3. 集群启动和停止
- 可以通过命令行方式对集群启动和停止
各个模块分开启动
1 |
|
各个服务组件逐一启动
1 |
|
- 也可以通过编写脚本来启动
将脚本写在之前配置过的~/bin
目录下,因为这个目录已经加入到环境变量中了
hadoop集群启动和停止脚本:myhadoop.sh
1 |
|
查看所有节点jps脚本:jpsall
1 |
|
当然要给脚本执行权限
1 |
|
将更新的~/bin
目录进行分发,使得在每个服务器上都能使用
常用端口号和配置文件说明
常用端口号:
端口名称 | Hadoop2.x | Hadoop3.x |
---|---|---|
NameNode内部通信端口 | 8020 / 9000 | 8020 / 9000 / 9820 |
NameNode HTTP访问端口 | 50070 | 9870 |
MapReduce查看任务端口 | 8088 | 8088 |
历史服务器通信端口 | 19888 | 19888 |
需要的配置文件
- 3.x:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers
- 2.x:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、slaves