乐于分享
好东西不私藏

Hadoop 分布式集群安装与配置指南

Hadoop 分布式集群安装与配置指南

一、环境准备

1.1 基础环境信息

操作系统: CentOS 7Hadoop 版本: 2.7.7JDK 版本: OpenJDK 1.8.0SSH 端口: 31235 (非默认22端口)

1.2 节点规划

主机名
IP 地址
角色
部署组件
xiangys0134-hadoop01
192.168.10.150
Master
NameNode, ResourceManager, DataNode, NodeManager
xiangys0134-hadoop02
192.168.10.151
Slave
DataNode, NodeManager, SecondaryNameNode
xiangys0134-hadoop03
192.168.10.152
Slave
DataNode, NodeManager

二、基础环境配置

2.1 配置 Hosts 解析

在所有节点上执行,确保集群内主机名互通。

# 编辑 /etc/hosts192.168.10.150 xiangys0134-hadoop01192.168.10.151 xiangys0134-hadoop02192.168.10.152 xiangys0134-hadoop03

2.2 安装 JDK

在所有节点上安装 OpenJDK 8。

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

2.3 配置 SSH 免密登录

由于 SSH 端口非默认 22,需指定端口进行配置。

1.

生成密钥对

(在 hadoop02 节点执行):

ssh-keygen -t rsa
2.

打包并分发公钥

cd ~/tar -czvf /tmp/ssh-key.tar.gz .sshscp -P 31235 /tmp/ssh-key.tar.gz opadm@192.168.10.150:/tmpscp -P 31235 /tmp/ssh-key.tar.gz opadm@192.168.10.152:/tmp
3.

在 Master 节点解压并配置

tar -zxvf /tmp/ssh-key.tar.gz -C ~/# 将公钥内容追加到 authorized_keyscat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.

测试连接

ssh -p 31235 opadm@192.168.10.150

三、Hadoop 安装与环境变量

3.1 分发安装包

(在 Master 节点操作):

scp -P 31235 hadoop-2.7.7.tar.gz opadm@192.168.10.151:/tmp/scp -P 31235 hadoop-2.7.7.tar.gz opadm@192.168.10.152:/tmp/

1.

解压安装 (所有节点):

sudo tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/
2.

配置环境变量 (在 Master 节点的中添加):

~/.bashrc
export HADOOP_HOME=/usr/local/hadoop-2.7.7export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

执行 ,使配置生效。

source ~/.bashrc

四、目录与权限配置

在所有节点上创建数据和日志目录,并修改属主。

sudo mkdir -p /data/hadoop/hdfs/{nn,snn,dn}sudo mkdir -p /var/log/hadoop/yarnsudo chown -R opadm. /data/hadoop/sudo chown -R opadm. /var/log/hadoop/

nn: NameNode 目录dn: DataNode 目录snn: SecondaryNameNode 目录


五、核心配置文件修改

进入 $HADOOP_HOME/etc/hadoop 目录进行配置。

5.1 core-site.xml

<configuration>    <property>        <name>io.file.buffer.size</name>        <value>131072</value>    </property>    <property>        <name>fs.defaultFS</name>        <value>hdfs://xiangys0134-hadoop01:8020</value>    </property></configuration>

5.2 hdfs-site.xml

<configuration>    <!-- NameNode 和 DataNode 路径 -->    <property>        <name>dfs.namenode.name.dir</name>        <value>file:///data/hadoop/hdfs/nn</value>    </property>    <property>        <name>dfs.datanode.data.dir</name>        <value>file:///data/hadoop/hdfs/dn</value>    </property>    <!-- 副本数量 -->    <property>        <name>dfs.replication</name>        <value>2</value>    </property>    <!-- 关闭权限检查 -->    <property>        <name>dfs.permissions</name>        <value>false</value>    </property>    <!-- SecondaryNameNode 配置 -->    <property>        <name>dfs.namenode.secondary.http-address</name>        <value>xiangys0134-hadoop02:50090</value>    </property></configuration>

5.3 yarn-site.xml

<configuration>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property>    <property>        <name>yarn.resourcemanager.webapp.address</name>        <value>xiangys0134-hadoop01:8088</value>    </property>    <property>        <name>yarn.resourcemanager.address</name>        <value>xiangys0134-hadoop01:8032</value>    </property>    <property>        <name>yarn.resourcemanager.scheduler.address</name>        <value>xiangys0134-hadoop01:8030</value>    </property>    <property>        <name>yarn.resourcemanager.resource-tracker.address</name>        <value>xiangys0134-hadoop01:8031</value>    </property>    <property>        <name>mapreduce.jobhistory.address</name>        <value>xiangys0134-hadoop01:10020</value>    </property>    <!-- 禁用虚拟内存检查 -->    <property>        <name>yarn.nodemanager.vmem-check-enabled</name>        <value>false</value>    </property></configuration>

5.4 mapred-site.xml

首先重命名模板文件:cp mapred-site.xml.template mapred-site.xml

<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property>    <property>        <name>mapreduce.jobhistory.address</name>        <value>xiangys0134-hadoop03:10020</value>    </property></configuration>

5.5 配置 Slaves 节点

编辑 slaves 文件,添加所有工作节点:

xiangys0134-hadoop01xiangys0134-hadoop02xiangys0134-hadoop03

六、启动与验证

6.1 格式化 NameNode (仅首次执行)

在 Master 节点执行:

hadoop namenode -format

验证:检查 /data/hadoop/hdfs/nn/ 目录下是否生成了 current 文件夹。

6.2 启动 HDFS

start-dfs.sh

验证:

jps# 预期进程: NameNode, DataNode, SecondaryNameNode

6.3 启动 YARN

start-yarn.sh

七、Web UI 访问

你可以通过浏览器访问以下地址来监控集群状态:

服务
地址
端口
描述
HDFS Overviewhttp://192.168.10.150:50070[1]
50070
NameNode 状态
YARN ResourceManagerhttp://192.168.10.150:8088[2]
8088
集群资源管理
SecondaryNameNodehttp://192.168.10.151:50090[3]
50090
检查点状态

八、启用 Kerberos 认证 (可选)

注意: 此部分配置较为复杂,需确保 Kerberos 服务已部署。

1.

core-site.xml:

<property>    <name>hadoop.security.authentication</name>    <value>kerberos</value></property><property>    <name>hadoop.security.authorization</name>    <value>true</value></property>
2.

hdfs-site.xml (NameNode, DataNode, SNN): 配置对应的 Principal 和 Keytab 路径 (如 dfs.namenode.kerberos.principal)。

3.

yarn-site.xml: 配置 ResourceManager 和 NodeManager 的 Keytab。

4.

JAAS 配置: 创建 hdfs_jaas.conf 并在 hadoop-env.sh 中引用。

九、常见问题与提示

端口变更: 由于 SSH 使用了 31235 端口,所有涉及远程连接的操作都需确保该端口通畅。主机名一致性: 请务必检查所有配置文件中的主机名是否与实际主机名(hostname 命令输出)完全一致。权限问题: 确保 Hadoop 运行用户 (opadm) 对数据目录 (/data/hadoop) 拥有完全读写权限。