一、环境准备
1. 系统环境
-
操作系统:CentOS 7 或其他类 Unix 系统
-
Java 环境:JDK 1.8 或以上版本
-
Hadoop 版本:Hadoop 3.x
2. 节点规划
假设我们有以下三个节点:
-
Master:主节点,运行 NameNode 和 ResourceManager
-
Slave1:从节点,运行 DataNode 和 NodeManager
-
Slave2:从节点,运行 DataNode 和 NodeManager
二、JDK 解压与安装
1. 下载 JDK
从 Oracle 官方网站或其他可信源下载 JDK 安装包,如果你已有解压包 跳过此步骤!!!
html
wget https://download.oracle.com/otn/java/jdk/8u361-b09/jdk-8u361-linux-x64.tar.gz
2. 解压安装包
bash
tar -zxvf jdk-8u361-linux-x64.tar.gz -C /opt/service/
html
# tar
# Linux下的归档工具,用于压缩或解压文件。
# -z
# 使用 gzip 解压/压缩(因为文件后缀是 .tar.gz,必须加此参数)。
# -x
# 表示执行解压操作(Extract)。
# -v
# 显示解压过程的详细信息(Verbose),方便观察进度。
# -f
# 指定要操作的文件名(File),这里指向 jdk-8u361-linux-x64.tar.gz。
# -C /opt/service/
# 指定解压的目标目录(Change directory),文件会被解压到 /opt/service/ 下。
# 操作结果
# 解压内容
# 将 jdk-8u361-linux-x64.tar.gz 中的文件解压到 /opt/service/ 目录下。
# 解压后的路径
# 通常会在 /opt/service/ 下生成一个类似 jdk1.8.0_361 的目录,即JDK的安装路径。
# 典型用途
# 这行命令是安装Java环境(JDK 8)的标准步骤,常用于配置开发或生产服务器。
3. 创建软连接
为了方便后续配置和使用,创建一个软连接:
ln -s /opt/service/jdk1.8.0_361 /opt/service/jdk
三、配置 IP 映射
在所有节点上,编辑 /etc/hosts
文件,添加所有节点的 IP 和主机名映射:
bash
# 编辑
vi /etc/hosts
# 示例
192.168.1.100 master #saster 是 用户名
192.168.1.101 slave1 # slave1 是 用户名
192.168.1.102 slave2 # slave2 是 用户名
四、配置环境变量
编辑 /etc/profile
文件,添加以下内容:
bash
#编辑 /etc/profile 文件
vi /etc/profile
# JAVA环境变量配置
export JAVA_HOME=/opt/service/jdk
export PATH=$PATH:$JAVA_HOME/bin
# HADOOP环境变量配置
export HADOOP_HOME=/opt/service/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# 后续可以继续在此增添环境变量配置
使配置生效:
bash
source /etc/profile
五. 查看 Java 版本
在任意节点上,运行以下命令查看 Java 版本:
bash
java -version
该命令会显示当前系统中 Java 的版本信息,确保安装的 JDK 版本符合要求。
六、Hadoop 解压与安装
1. 下载 Hadoop
从 Apache Hadoop 官方网站下载 Hadoop 安装包,例如: 如果有解压包可跳过此步骤!!!
bash
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
2. 解压安装包
bash
tar -zxvf hadoop-3.3.4.tar.gz -C /opt/service/
3. 创建软连接
为了方便后续配置和使用,创建一个软连接:
bash
ln -s /opt/service/hadoop-3.3.4 /opt/service/hadoop
六、配置核心文件
1. 配置 hadoop-env.sh
编辑 $HADOOP_HOME/etc/hadoop/hadoop-env.sh
文件,设置 Java 环境变量:
bash
# $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 添加以下内容:
export JAVA_HOME=/opt/service/jdk
export HADOOP_HOME=/opt/service/hadoop
export HADOOP_HOME_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
2. 配置 core-site.xml
编辑 $HADOOP_HOME/etc/hadoop/core-site.xml
文件,配置 HDFS 的默认文件系统和临时目录:
bash
vi $HADOOP_HOME/etc/hadoop/core-site.xml
XML
<configuration>
<!-- 指定 HDFS 的默认文件系统 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<!-- 配置 Hadoop 的临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-tmp</value>
</property>
</configuration>
3. 配置 hdfs-site.xml
编辑 $HADOOP_HOME/etc/hadoop/hdfs-site.xml
文件,配置 HDFS 的相关参数:
XML
<configuration>
<!-- 设置数据块的副本数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 配置 NameNode 的 HTTP 地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>Master:9870</value>
</property>
</configuration>
4. 配置 yarn-site.xml
编辑 $HADOOP_HOME/etc/hadoop/yarn-site.xml
文件,配置 YARN 的相关参数:
XML
<configuration>
<!-- 指定 ResourceManager 的主机名 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<!-- 配置 NodeManager 的本地目录 -->
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/opt/yarn-local</value>
</property>
<!-- 配置 ResourceManager 的 Web UI 地址 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>Master:8088</value>
</property>
</configuration>
5. 配置 mapred-site.xml
复制模板文件并编辑 $HADOOP_HOME/etc/hadoop/mapred-site.xml
文件,配置 MapReduce 的相关参数:
bash
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
XML
<configuration>
<!-- 指定 MapReduce 作业运行在 YARN 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置作业历史服务器的地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<!-- 配置作业历史服务器的 Web UI 地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>Master:19888</value>
</property>
</configuration>
6. 配置 workers 文件
编辑 $HADOOP_HOME/etc/hadoop/workers
文件,添加集群中的从节点主机名:
bash
Master
Slave1
Slave2
七、创建和设置目录
在所有节点上,创建 Hadoop 所需的目录并设置权限:
bash
mkdir -p /opt/hadoop-tmp
mkdir -p /opt/yarn-local
chmod 755 /opt/hadoop-tmp
chmod 755 /opt/yarn-local
八、初始化 NameNode
在 Master 节点上,初始化 HDFS 文件系统:
bash
hadoop namenode -format
# 注意 Hadoop集群未运行前可运行此代码,运行后不能运行,否则以前的操作皆化为零
该命令会初始化 HDFS 的命名空间,并在 /opt/hadoop-tmp/dfs/name
目录下创建相关文件。
九、启动 Hadoop 集群
1. 启动 HDFS
在 Master 节点上,启动 NameNode 和 DataNode:
bash
# 启动 HDFS
start-dfs.sh
该脚本会根据 workers 文件中的节点列表,依次在 Master 节点启动 NameNode,在 Slave1 和 Slave2 节点启动 DataNode。
2. 启动 YARN
在 Master 节点上,启动 ResourceManager 和 NodeManager:
bash
# 启动 YARN
start-yarn.sh
该脚本会在 Master 节点启动 ResourceManager,在 Slave1 和 Slave2 节点启动 NodeManager。
3. 启动作业历史服务器
在 Master 节点上,启动 MapReduce 作业历史服务器:
bash
mr-jobhistory-daemon.sh start historyserver
十、验证安装
1. 检查 HDFS 状态
在 Master 节点上,运行以下命令检查 HDFS 状态:
bash
hdfs dfsadmin -report
该命令会显示 HDFS 的摘要信息,包括数据节点数量、存储容量等。
2. 访问 Web UI
-
访问 NameNode 的 Web UI:http://Master:9870/
-
访问 ResourceManager 的 Web UI:http://Master:8088/
-
访问作业历史服务器的 Web UI:http://Master:19888/
通过这些 Web 界面,可以查看 Hadoop 集群的运行状态和资源使用情况。
十一、查看进程 jps
十二、总结
本文详细介绍了 Hadoop 集群的部署与配置过程,包括 JDK 解压与安装、IP 映射配置、环境变量配置、Hadoop 解压与安装、核心文件配置、目录创建、NameNode 初始化、集群启动以及安装验证等步骤。通过按照本文的步骤操作,可以成功搭建一个基础的 Hadoop 集群,为后续的大数据处理和分析奠定基础。在实际部署过程中,可能还需要根据具体的硬件环境和业务需求进行进一步的优化和调整。