1. 准备工作

1.1 确保已完成以下配置

  • 主机名和IP配置正确

  • SSH免密登录已设置

  • 防火墙和SELinux已配置

  • 时间同步已启用

  • Java环境已安装(建议JDK 8或11)

验证Java安装:

java -version
javac -version
echo $JAVA_HOME

2. Hadoop 安装

2.1 下载 Hadoop

# 在所有节点执行
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz

2.2 解压并设置环境变量

# 解压到/opt目录
sudo tar -xzf hadoop-3.3.4.tar.gz -C /opt/
sudo mv /opt/hadoop-3.3.4 /opt/hadoop

# 设置权限
sudo chown -R hadoop:hadoop /opt/hadoop

# 配置环境变量
echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
source ~/.bashrc

3. Hadoop 配置

3.1 核心配置文件

​1. hadoop-env.sh​

vim /opt/hadoop/etc/hadoop/hadoop-env.sh

# 修改以下内容
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk  # 根据实际路径修改
export HADOOP_HOME=/opt/hadoop
export HDFS_NAMENODE_USER="hadoop"
export HDFS_DATANODE_USER="hadoop"
export HDFS_SECONDARYNAMENODE_USER="hadoop"
export YARN_RESOURCEMANAGER_USER="hadoop"
export YARN_NODEMANAGER_USER="hadoop"

​2. core-site.xml​

vim /opt/hadoop/etc/hadoop/core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop-master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop/data/tmp</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>
</configuration>

​3. hdfs-site.xml​

vim /opt/hadoop/etc/hadoop/hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///opt/hadoop/data/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///opt/hadoop/data/datanode</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop-master:9868</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

​4. mapred-site.xml​

vim /opt/hadoop/etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
    </property>
</configuration>

​5. yarn-site.xml​

vim /opt/hadoop/etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop-master</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.2 配置 workers 文件

vim /opt/hadoop/etc/hadoop/workers

# 添加从节点
hadoop-slave1
hadoop-slave2

4. 分发 Hadoop 配置

将配置好的 Hadoop 分发到所有从节点:

for node in hadoop-slave1 hadoop-slave2; do
    rsync -avz /opt/hadoop hadoop@$node:/opt/
    ssh hadoop@$node "echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc"
    ssh hadoop@$node "echo 'export PATH=\$PATH:\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin' >> ~/.bashrc"
done

5. 创建数据目录

​在所有节点执行:​

mkdir -p /opt/hadoop/data/{namenode,datanode,tmp}
chown -R hadoop:hadoop /opt/hadoop/data

6. 格式化 HDFS

​仅在主节点执行:​

hdfs namenode -format

成功后会看到:

Storage directory /opt/hadoop/data/namenode has been successfully formatted

7. 启动 Hadoop 集群

7.1 启动 HDFS

# 在主节点执行
start-dfs.sh

7.2 启动 YARN

# 在主节点执行
start-yarn.sh

7.3 启动历史服务器(可选)

mapred --daemon start historyserver

8. 验证集群状态

8.1 检查进程

# 在主节点应有
jps
# NameNode
# ResourceManager
# SecondaryNameNode

# 在从节点应有
jps
# DataNode
# NodeManager

8.2 检查 HDFS

hdfs dfsadmin -report
hdfs dfs -ls /

8.3 检查 YARN

yarn node -list

8.4 Web 界面访问

9. 测试 Hadoop 集群

9.1 运行 WordCount 示例

# 创建输入目录
hdfs dfs -mkdir /input

# 上传测试文件
hdfs dfs -put $HADOOP_HOME/LICENSE.txt /input

# 运行示例
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output

# 查看结果
hdfs dfs -cat /output/*

10. 停止 Hadoop 集群

# 停止 YARN
stop-yarn.sh

# 停止 HDFS
stop-dfs.sh

# 停止历史服务器
mapred --daemon stop historyserver

11. 常见问题解决

11.1 启动失败检查

# 查看日志
tail -n 100 /opt/hadoop/logs/*.log

# 常见问题
# 1. 端口冲突
netstat -tulnp | grep <端口号>

# 2. 权限问题
ls -la /opt/hadoop/data/

# 3. 配置文件错误
检查XML文件格式是否正确

11.2 从节点无法连接主节点

# 检查网络
ping hadoop-master

# 检查SSH
ssh hadoop-master

# 检查防火墙
sudo firewall-cmd --list-ports

11.3 Web界面无法访问

# 检查端口是否开放
curl http://hadoop-master:9870

# 检查防火墙规则
sudo firewall-cmd --add-port=9870/tcp --permanent
sudo firewall-cmd --reload

12. 集群管理脚本

创建集群管理脚本 hadoop-cluster.sh

#!/bin/bash

case $1 in
    start)
        echo "Starting Hadoop cluster..."
        start-dfs.sh
        start-yarn.sh
        mapred --daemon start historyserver
        ;;
    stop)
        echo "Stopping Hadoop cluster..."
        mapred --daemon stop historyserver
        stop-yarn.sh
        stop-dfs.sh
        ;;
    status)
        echo "Cluster status:"
        jps
        ;;
    *)
        echo "Usage: $0 {start|stop|status}"
        exit 1
esac

exit 0

使用示例:

chmod +x hadoop-cluster.sh
./hadoop-cluster.sh start
./hadoop-cluster.sh status
./hadoop-cluster.sh stop
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐