安装jdk
安装hadoop
- 解压安装包
# 进入/opt/software目录
cd /opt/software
# 解压jdk到/opt/module/目录下
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
- 配置Hadoop环境变量
# 进入/etc/profile.d/目录下
cd /etc/profile.d/
# 在/etc/profile.d/文件下新建一个my_env.sh文件, 里面用来存放自己安装软件的环境变量信息
vim /etc/profile.d/my_env.sh
# 在/etc/profile.d/my_env.sh中添加Hadoop环境变量信息
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# source一下/etc/profile文件,让新的环境变量PATH生效
source /etc/profile
# 查看是否安装成功, 如果出现版本号就说明安装成功
hadoop version
# 如果java -version命令没有出现版本号, 就需要重启系统
reboot
配置SSH无密码登录
3. 配置hadoop
3.1 核心配置文件: core-site.xml
cd $HADOOP_HOME/etc/hadoop
vim 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网页登录使用的静态用户为atguigu -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>atguigu</value>
</property>
</configuration>
3.2 HDFS配置文件 : hdfs-site.xml
cd $HADOOP_HOME/etc/hadoop
vim hdfs-site.xml
默认的 configuration 标签中的内容是空的, 我们加上以下内容
<?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>
3.3 YARN配置文件: yarn-site.xml
cd $HADOOP_HOME/etc/hadoop
vim yarn-site.xml
默认的 configuration 标签中的内容是空的, 我们加上以下内容
<?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>
3.4 MapReduce配置文件: mapred-site.xml
cd $HADOOP_HOME/etc/hadoop
vim mapred-site.xml
默认的 configuration 标签中的内容是空的, 我们加上以下内容
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MapReduce程序运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
</configuration>
3.5 配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
在文件中增加下面内容, 集群上有几个节点, 这里就配置几个
hadoop102
hadoop103
hadoop104
给其他节点同步配置文件
/bin/xsync /opt/module/hadoop-3.1.3/etc/hadoop/
3.6 在hadoop102节点格式化NameNode
cd /opt/module/hadoop-3.1.3
# 如果集群是第一次启动,需要在hadoop102节点格式化NameNode
hdfs namenode -format
3.7 分发集群配置
/bin/xsync /opt/module/hadoop-3.1.3/etc/hadoop/
3.8 集群群起脚本
3.8.1 集群同时启动与停止脚本
cd /opt/module/hadoop-3.1.3/sbin
vim /opt/module/hadoop-3.1.3/sbin/myhadoop.sh
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 启动 hadoop集群 ==================="
echo " --------------- 启动 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 启动 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 启动 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 关闭 hadoop集群 ==================="
echo " --------------- 关闭 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo " --------------- 关闭 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 关闭 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
给脚本执行权限
chmod +x myhadoop.sh
3.8.2 查看三台服务器Java进程脚本
cd /opt/module/hadoop-3.1.3/sbin
vim jpsall.sh
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done
给脚本执行权限
chmod +x jpsall.sh
给整个集群同步刚刚编辑的两个脚本
/bin/xsync /opt/module/hadoop-3.1.3/sbin
3.8.4 测试脚本
# 启动集群
myhadoop.sh start
# 停止集群
myhadoop.sh stop
# 查看三台服务器Java进程
jpsall.sh
测试效果
[atguigu@hadoop102 sbin]$ myhadoop.sh start
=================== 启动 hadoop集群 ===================
--------------- 启动 hdfs ---------------
Starting namenodes on [hadoop102]
Starting datanodes
Starting secondary namenodes [hadoop104]
--------------- 启动 yarn ---------------
Starting resourcemanager
Starting nodemanagers
--------------- 启动 historyserver ---------------
[atguigu@hadoop102 sbin]$ jpsall.sh
=============== hadoop102 ===============
4739 Jps
4149 DataNode
4472 NodeManager
4648 JobHistoryServer
3996 NameNode
=============== hadoop103 ===============
3507 DataNode
3716 ResourceManager
3850 NodeManager
4222 Jps
=============== hadoop104 ===============
3155 SecondaryNameNode
3412 Jps
3268 NodeManager
3032 DataNode
3.9 Web端查看集群信息
关闭hadoop102、hadoop03、hadoop104 的防火墙
systemctl stop firewalld
浏览器中输入:http://hadoop102:9870
查看HDFS上存储的数据信息
浏览器中输入:http://hadoop103:8088
查看YARN上运行的Job信息
Web端查看历史服务信息 http://hadoop102:19888/jobhistory
查看日志聚集