组件配置
Ubuntu20.04, JDK8 Hadoop3.3.4, Hive3.1.3, MYSQL8.0.42 Spark3.4.4
Hadoop3.3.4安装配置
第一步:解压 Hadoop 安装包,给用户建立软链接
先把 hadoop-3.3.4.tar.gz 解压到 /usr/local/(大数据组件的标准安装目录):
解压安装包到 /usr/local/
sudo tar -zxvf ~/hadoop-3.3.4.tar.gz -C /usr/local/
修改文件夹权限(避免后续操作权限不足)
sudo chown -R USER /usr/local/hadoop-3.3.4
给用户建立软链接 ln -s /usr/local/hadoop-3.3.4 hadoop-3.3.4
第二步:配置 Hadoop 环境变量
编辑 profile 文件:
sudo nano /etc/profile
#Hadoop 环境变量: (在文件末尾添加以下内容) export HADOOP_HOME=/usr/local/hadoop-3.3.4 export HADOOP_CONF_DIR=HADOOP_HOME/lib/native export PATH=HADOOP_HOME/sbin:$PATH
让配置生效: 【新开终端 / 重启后,未重新 source /etc/profile,配置不生效】 【要永久生效则要添加到~/.bashrc 里】 source /etc/profile 验证是否生效: hadoop version
第三步:修改 Hadoop 核心配置文件(伪分布式关键)
1. 基础配置
需要修改 4 个核心配置文件,全部在 /usr/local/hadoop-3.3.4/etc/hadoop/ 目录下:
- 修改 hadoop-env.sh
nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh
在文件末尾添加:
#JAVA_HOME值改为JDK安装目录
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_OPTS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true"
#指定 Hadoop 运行的主机名
export HADOOP_NAMENODE_OPTS="-Dhostname=node1 $HADOOP_NAMENODE_OPTS"
- 修改 core-site.xml
nano $HADOOP_HOME/etc/hadoop/core-site.xml
# 替换configuration标签
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<!-- 指定 Hadoop 临时目录(避免权限问题) -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.3.4/tmp</value>
</property>
</configuration>
3. 修改 hdfs-site.xml
nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
<!-- 指定 HDFS 副本数(伪分布式设为 1) -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- NameNode Web 管理界面端口(指定 node1,兼容 50070) -->
<property>
<name>dfs.namenode.http-address</name>
<value>node1:9870</value>
</property>
<!-- 关闭权限检查(新手友好) -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
4. 修改 mapred-site.xml
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
<!-- 指定 MapReduce 运行在 YARN 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5. yarn-site.xml
nano $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>
<!-- YARN 资源管理器主地址(通信端口) -->
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:8032</value>
</property>
<!-- YARN Web 管理界面端口(8088 是默认,必须指定 node1) -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node1:8088</value>
</property>
<!-- 指定 MapReduce 执行器 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
6. workers
nano $HADOOP_HOME/etc/hadoop/workers
localhost改为node1
2. 功能性配置
- #上述基础配置 = 能启动服务,但不能跑任务。需要手动补充「类路径」和「容器环境变量」,告诉 YARN 去哪里加载 MRAppMaster 类;
- #YARN 启动的 AM 容器是一个独立的进程,默认不会读取 ~/.bashrc,也不会继承这些环境变量;
- #注意——要运行任务时,要保证HDFS没处于安全模式(单机模式启动可能处于安全模式)
- #离开安全模式(如果需要); hdfs dfsadmin -safemode leave
- #提交任务前,先检查 AM 环境变量: yarn application -appStates ALL -list | head -5
- 为用 YARN 跑 MapReduce需补充:
① 在 yarn-site.xml 里写死绝对路径(兜底)
<property>
<name>yarn.application.classpath</name>
<value>
/home/db2305070135/hadoop-3.3.4/etc/hadoop,
/home/db2305070135/hadoop-3.3.4/share/hadoop/common/*,
/home/db2305070135/hadoop-3.3.4/share/hadoop/common/lib/*,
/home/db2305070135/hadoop-3.3.4/share/hadoop/hdfs/*,
/home/db2305070135/hadoop-3.3.4/share/hadoop/hdfs/lib/*,
/home/db2305070135/hadoop-3.3.4/share/hadoop/mapreduce/*,
/home/db2305070135/hadoop-3.3.4/share/hadoop/mapreduce/lib/*,
/home/db2305070135/hadoop-3.3.4/share/hadoop/yarn/*,
/home/db2305070135/hadoop-3.3.4/share/hadoop/yarn/lib/*
</value>
</property>
② 在 mapred-site.xml 中写死容器环境变量
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/home/db2305070135/hadoop-3.3.4</value>
</property>
<property>
<name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/home/db2305070135/hadoop-3.3.4</value>
</property>
<property>
<name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/home/db2305070135/hadoop-3.3.4</value>
</property>
第四步:配置免密登录(启动 Hadoop 必需)(Hadoop 启动时需要免密登录本机)
# 生成密钥(一路回车,不要设置密码)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# 将公钥添加到授权列表
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改权限(否则免密登录不生效)
chmod 600 ~/.ssh/authorized_keys
# 测试免密登录(首次会提示,输入 yes 即可)
ssh node1
第五步:格式化 HDFS 并启动 Hadoop
# 格式化 HDFS(仅首次启动时执行一次!)
hdfs namenode -format
# 启动 Hadoop 所有服务
#先启动 HDFS 服务
start-dfs.sh
#再启动 YARN 服务
start-yarn.sh
# 查看进程(能看到 NameNode、DataNode、ResourceManager、NodeManager 即成功)
jps
第六步:验证 Hadoop 是否启动成功
【Hive 和 Spark 都是基于 Hadoop 运行的上层组件,安装 / 配置它们时,Hadoop(HDFS+YARN)必须处于启动状态,这样才能验证组件间的连通性】
# 启动服务
start-dfs.sh
start-yarn.sh
# 查看进程(确认 NameNode/DataNode 等正常启动)
jps
# 验证 Web 界面(替换为 node1)
xdg-open http://node1:9870 # HDFS 界面
xdg-open http://node1:8088 # YARN 界面
#window上浏览器访问
http://192.168.122.128:9870 # HDFS 界面
http://192.168.122.128:8088 # YARN 界面
第七步:关闭hadoop服务(HDFS、YARN)
# 关闭 HDFS 服务
stop-dfs.sh
# 关闭 YARN 服务
stop-yarn.sh
# 一次性关两服务
stop-all.sh