一、集群配置
1.规划:
- NameNode 和 SecondaryNameNode 不要安装在同一台服务器,
- ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。
hadoop102
|
hadoop103
|
hadoop104
|
|
HDFS
|
NameNode
DataNode
|
DataNode
|
SecondaryNameNode
DataNode
|
YARN
|
NodeManager
|
ResourceManager
NodeManager
|
NodeManager
|
2.自定义配置文件在 $HADOOP_HOME/etc/hadoop 下,一共 4 个
- 核心配置文件,core-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <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 网页登录使用的静态用户为 aitw --> <property> <name>hadoop.http.staticuser.user</name> <value>aitw</value> </property> </configuration>
- HDFS 配置文件,hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <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
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <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_MAPRED_HOME</value> </property> </configuration>
- MapReduce 配置文件,mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 指定 MapReduce 程序运行在 Yarn 上(默认为local) --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
3.同步到所有主机
将该目录下的以上4个配置文件同步到集群的所有主机
二、群起集群
1.配置 workers
编辑 /opt/module/hadoop-3.1.3/etc/hadoop/workers 文件,写入如下后将该文件同步到集群的所有主机
hadoop102
hadoop103
hadoop104
2.启动集群
- 初始化 HDFS,如果是第一次启动,在 hadoop102 的 /opt/module/hadoop-3.1.3
hdfs namenode -format
在 hadoop 目录多出 data 和 logs 目录则正常
- 启动 HDFS
sbin/start-dfs.sh
此时会输出:
Starting namenodes on [hadoop102]
Starting datanodes
hadoop103: WARNING: /opt/module/hadoop-3.1.3/logs does not exist. Creating.
hadoop104: WARNING: /opt/module/hadoop-3.1.3/logs does not exist. Creating.
Starting secondary namenodes [hadoop104]
- 启动 YARN,在配置了 ResourceManager 的节点(hadoop103)
sbin/start-yarn.sh
此时会输出:
[aitw@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
Starting resourcemanager
Starting nodemanagers
查看启动结果
Web 端查看 HDFS 的 NameNode:http://hadoop102:9870/
Web 端查看 YARN 的 ResourceManager:http://hadoop103:8088
三、配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器
1.配置 mapred-site.xml,增加如下并分发到其他机器
<!-- 历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop102:10020</value> </property><!-- 历史服务器 web 端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop102:19888</value> </property>
2.在 hadoop102 启动历史服务器
mapred --daemon start historyserver
3.此时,可以在该地址查看程序的运行结果
四、配置日志的聚集
应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和 HistoryServer。
1.配置 yarn-site.xml,增加如下并分发到其他机器
<!-- 开启日志聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property><!-- 设置日志聚集服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value> </property><!-- 设置日志保留时间为 7 天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
2.重启 NodeManager 、ResourceManager 和 HistoryServer
sbin/stop-yarn.sh
mapred --daemon stop historyserver
start-yarn.sh
mapred --daemon start historyserver
3.然后可以在以下地址,查看程序运行的日志历史
http://hadoop102:19888/jobhistory
五、集群启动/停止方式总结
1.各个模块分开启动/停止(配置 ssh 是前提)常用
整体启动/停止 HDFS
start-dfs.sh/stop-dfs.sh
整体启动/停止 YARN
start-yarn.sh/stop-yarn.sh
2.各个服务组件逐一启动/停止
分别启动/停止 HDFS 组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
启动/停止 YARN
yarn --daemon start/stop resourcemanager/nodemanager