一、Hadoop3.1.3集群搭建

一、集群规划
hadoop01(209.2) hadoop02(209.3) hadoop03(209.4)
HDFS NameNode DataNode DataNode SecondaryNameNode DataNode
YARN NodeManager ResourceManager NodeManager NodeManager

NameNode和SecondaryNameNode不要放在同一台服务器上

二、创建用户
useradd atguigu
passwd ***

配置atguigu用户权限

vim /etc/sudoers

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD:ALL
三、/opt下创建module、software
mkdir /opt/module
mkdir /opt/software
chown atguigu:atguigu /opt/module
chown atguigu:atguigu /opt/software
四、重新安装JDK
1、卸载原有的JDK
2、将jdk包上传到module下并解压
3、配置JDK环境变量

新建/etc/profile.d/my_env.sh 文件

vim /etc/profile.d/my_env.sh

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile
java -version
五、hadoop01安装hadoop

https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

1、解压到/opt/module下面
2、环境变量设置
vim /etc/profile.d/my_env.sh

#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
3、SSH免密登录
进入 /home/atguigu/.ssh
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

注意:每台服务器都需要使用atguigu账号配置无密登录

六、集群配置

自定义配置文件存放在$HADOOP_HOME/etc/hadoop下

1、核心文件配置

配置core.site.xml

shell 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <!-- 指定 NameNode 的地址 -->
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://hadoop01: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>

配置hdfs.site.xml

shell 复制代码
<?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>hadoop01:9870</value>
 </property>
<!-- 2nn web 端访问地址-->
 <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>hadoop03:9868</value>
 </property>
</configuration>

配置yarn.site.xml

shell 复制代码
<?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>hadoop02</value>
 </property>
 <!-- 环境变量的继承 -->
 <property>
 <name>yarn.nodemanager.env-whitelist</name>

<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
 </property>
</configuration>

配置mapred-site.xml

shell 复制代码
<?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>
</configuration>
2、配置历史服务器

mapred-site.xml

shell 复制代码
<!-- 历史服务器端地址 -->
<property>
 <name>mapreduce.jobhistory.address</name>
 <value>hadoop01:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
 <name>mapreduce.jobhistory.webapp.address</name>
 <value>hadoop01:19888</value>
</property>
3、群起集群配置
vim /opt/module/hadoop3.1.3/etc/hadoop/workers 并添加
hadoop01
hadoop02
hadoop03
4、配置日志聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到 HDFS 系统上。

注意:开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和 HistoryServer。

配置 yarn-site.xml

<!-- 开启日志聚集功能 -->
<property>
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
 <name>yarn.log.server.url</name>
 <value>http://hadoop02:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
 <name>yarn.log-aggregation.retain-seconds</name>
 <value>604800</value>
</property>

向其他节点分发所有修改过的配置,如:

rsync yarn-site.xml atguigu@hadoop02:/$HADOOP_HOME/etc/hadoop/yarnsite.xml
七、启动集群

如果集群是第一次启动,需要在 hadoop01 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找 不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。

hdfs namenode -format

启动HDFS

sbin/start-dfs.sh

在配置了ResourceManager的节点hadoop02上启动yarn

sbin/start-yarn.sh

查看 HDFS 的 NameNode:http://hadoop102:9870

查看 YARN 的 ResourceManager:http://hadoop103:8088

启动历史服务器

mapred --daemon start historyserver

查看 JobHistory: http://hadoop102:19888/jobhistory

可使用jps查看启动的服务是否和一开始规划的一致

八、集群启动/停止方式总结

注意各节点之间的端口互通或者彻底关闭防火墙

1、各个模块分开启动/停止(配置 ssh 是前提)常用

(1)整体启动/停止 HDFS

start-dfs.sh/stop-dfs.sh 

(2)整体启动/停止 YARN

start-yarn.sh/stop-yarn.sh
2、各个服务组件逐一启动/停止

(1)分别启动/停止 HDFS 组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

(2)启动/停止 YARN

yarn --daemon start/stop resourcemanager/nodemanager
3、Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):myhadoop.sh
cd /opt/module/hadoop-3.1.3/sbin
vim myhadoop.sh

#!/bin/bash
if [ $# -lt 1 ]
then
 echo "No Args Input..."
 exit ;
fi
case $1 in
"start")
 echo " =================== 启动 hadoop 集群 ==================="
 echo " --------------- 启动 hdfs ---------------"
 ssh hadoop01 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
 echo " --------------- 启动 yarn ---------------"
ssh hadoop02 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
 echo " --------------- 启动 historyserver ---------------"
 ssh hadoop01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
 echo " =================== 关闭 hadoop 集群 ==================="
 echo " --------------- 关闭 historyserver ---------------"
 ssh hadoop01 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
 echo " --------------- 关闭 yarn ---------------"
 ssh hadoop02 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
 echo " --------------- 关闭 hdfs ---------------"
 ssh hadoop01 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
 echo "Input Args Error..."
;;
esac

 chmod +x myhadoop.sh

查看三台服务器 Java 进程脚本:jpsall

cd /opt/module/hadoop-3.1.3/sbin
vim jpsall

#!/bin/bash
for host in hadoop01 hadoop02 hadoop03
do
 echo =============== $host ===============
 ssh $host jps
done

chmod +x jpsall
相关推荐
AI量化投资实验室33 分钟前
deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)
大数据·人工智能·重构
SelectDB1 小时前
Apache Doris 2.1.8 版本正式发布
大数据·数据库·数据分析
TMT星球1 小时前
生数科技携手央视新闻《文博日历》,推动AI视频技术的创新应用
大数据·人工智能·科技
Dipeak数巅科技3 小时前
数巅科技连续中标大模型项目 持续助力央国企数智化升级
大数据·人工智能·数据分析
Ray.19983 小时前
Flink 的核心特点和概念
大数据·数据仓库·数据分析·flink
lisacumt3 小时前
【kerberos】使用keytab文件,kerberos认证工具类 scala版本
hadoop·scala
极客先躯3 小时前
如何提升flink的处理速度?
大数据·flink·提高处理速度
BestandW1shEs3 小时前
快速入门Flink
java·大数据·flink
MasterNeverDown5 小时前
WPF 使用iconfont
hadoop·ui·wpf
速融云5 小时前
汽车制造行业案例 | 发动机在制造品管理全解析(附解决方案模板)
大数据·人工智能·自动化·汽车·制造