1 机器规划
服务器 | 角色 |
---|---|
wyl01 | NameNode , DataNode,NodeManager |
wyl02 | DataNode ,NodeManager ,ResourceManager |
wyl03 | DataNode ,NodeManager ,SecondaryNameNode |
2 准备工作
- 获取hadoop-2.9.2二进制文件
- wyl01机器免密钥到其他3个机器(包括自己在内)
- 关闭防火墙和selinux
上述操作比较常见这里不过多进行解释
3 部署安装
3.1 创建HDFS存储目录
cd /opt/hadoop
mkdir -p data/namenode # 存储namenode文件
mkdir -p data/datanode #存储数据
mkdir -p data/tmp #存储临时文件
3.2 修改配置文件
配置文件都放在解压目录下的etc/hadoop/目录下,我这里是/opt/hadoop/etc/hadoop目录下,最简化配置如下:
3.2.1 在hadoop-env.sh配置文件中加入以下内容:
export JAVA_HOME=/opt/java # JDK路径
3.2.2 配置core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://wyl01:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/data/tmp</value>
</property>
</configuration>
3.2.3 配置hdfs-site.xml
创建一个data目录,用来存放HDFS产生的数据,然后对hdfs-site.xml进行配置:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/datanode</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.secondary.http.address</name>
<value>wyl03:50090</value>
</property>
</configuration>
3.2.4 配置mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
3.2.5 在yarn-site.xml配置文件中加入以下内容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>wyl02</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.2.6 配置salves
# 在/opt/hadoop/etc/hadoop/目录下编辑slaves文件
vim slaves #添加以下内容
wyl01
wyl02
wyl03
3.2.7 启动集群
# 初始化HDFS集群
[root@wyl01 hadoop]# bin/hadoop namenode -format
#启动HDFS集群
[root@wyl01 hadoop]# sbin/start-dfs.sh
#启动YARN集群,因为yarn节点是在wyl02机器上所以...
[root@wyl02 hadoop]# sbin/start-yarn.sh
3.2.8 启动结束查看各个机器进程:
#wyl01机器
[root@wyl01 hadoop]# jps
3786 NodeManager
3278 NameNode
3390 DataNode
5471 Jps
#wyl02机器
[root@wyl02 hadoop]# jps
4531 Jps
3701 ResourceManager
3350 DataNode
3470 NodeManager
#wyl03机器
[root@wyl03 hadoop]# jps
3281 DataNode
3489 NodeManager
4276 Jps
3389 SecondaryNameNode
4 聚合日志
4.1 含义
- 分布式计算作业放到NodeManager运行,日志信息放在NodeManager本地目录:
yarn.nodemanager.log-dirs:${yarn.log.dir}/userlogs
- 通过配置将本地日志放到HDFS服务器上,即聚合日志的概念
4.2 配置yarn-site.xml
<!--启用日志聚合功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--存放多长时间-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>3600</value>
</property>
加上聚合参数的配置后,在hdfs中可以看到聚合日志在hdfs上存放的位置如下:
5 historyserver服务
当点击history的时候,无法打开页面
解决方案:
在 mapred-site.xml文件中添加以下配置
<!-- 设置jobhistoryserver 没有配置的话 history入口不可用 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>localhost:10020</value>
</property>
<!-- 配置web端口 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost:19888</value>
</property>
<!-- 配置正在运行中的日志在hdfs上的存放路径 -->
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/history/done_intermediate</value>
</property>
<!-- 配置运行过的日志存放在hdfs上的存放路径 -->
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
jobhistory的启动与停止
启动: 在hadoop/sbin/目录下执行
[root@wyl02 sbin]# ./mr-jobhistory-daemon.sh start historyserver
[root@wyl02 sbin]# jps
4994 ResourceManager
5890 JobHistoryServer # 进程
3350 DataNode
5926 Jps
5111 NodeManager
停止:在hadoop/sbin/目录下执行
[root@wyl02 sbin]# ./mr-jobhistory-daemon.sh stop historyserver