温馨提示×

Ubuntu上Hadoop集群怎么搭建

小樊
55
2025-10-06 07:34:00
栏目: 智能运维

Ubuntu上搭建Hadoop集群详细步骤

1. 环境准备

  • 节点规划:至少准备2台Ubuntu机器(1台Master节点、1台及以上Slave节点),建议使用Ubuntu 22.04及以上稳定版本。
  • 网络配置:所有节点需在同一局域网内,能通过ping命令互相访问(如ping master-node-ip)。
  • 硬件要求:每台机器至少2核CPU、4GB内存、50GB可用磁盘空间(生产环境需更高配置)。

2. 安装Java环境

Hadoop依赖Java运行环境,推荐使用OpenJDK 8或11(兼容性更好):

# 更新软件包索引
sudo apt update
# 安装OpenJDK 11(Ubuntu 22.04默认仓库版本)
sudo apt install -y openjdk-11-jdk
# 验证安装(输出版本信息即为成功)
java -version

注意:后续配置Hadoop时需确认JAVA_HOME路径(如/usr/lib/jvm/java-11-openjdk-amd64)。

3. 配置SSH无密码登录

Hadoop集群节点间需通过SSH通信,配置无密码登录可避免重复输入密码:

# 1. 在Master节点生成SSH密钥对(默认保存在~/.ssh目录)
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
# 2. 将公钥复制到所有Slave节点(替换user为用户名,slave-ip为Slave节点IP)
ssh-copy-id user@slave-ip
# 3. 测试无密码登录(从Master到Slave)
ssh user@slave-ip
# 输入`exit`退出Slave节点

提示:若需Master节点自身也能无密码登录,可将公钥复制到自身(ssh-copy-id user@master-ip)。

4. 下载并解压Hadoop

从Apache官网下载稳定版本的Hadoop(如3.3.6),解压到指定目录:

# 创建Hadoop安装目录
sudo mkdir -p /usr/local/hadoop
# 下载Hadoop(以3.3.6为例,可通过清华镜像加速)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 解压到安装目录
sudo tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/hadoop --strip-components=1
# 修改目录所有者(替换hadoop为你的用户名)
sudo chown -R hadoop:hadoop /usr/local/hadoop

验证:进入Hadoop目录,查看版本信息:

cd /usr/local/hadoop
./bin/hadoop version

5. 配置Hadoop环境变量

编辑~/.bashrc文件,添加Hadoop和Java的环境变量:

nano ~/.bashrc

在文件末尾添加以下内容(根据实际路径调整):

# Java环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
# Hadoop环境变量
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使配置生效:

source ~/.bashrc

验证:终端输入hadoop version,显示版本信息即为成功。

6. 配置Hadoop核心文件

进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下关键文件:

(1) core-site.xml

配置HDFS的默认文件系统和临时目录:

<configuration>
    <!-- 指定HDFS的NameNode地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master-node-ip:9000</value>
    </property>
    <!-- Hadoop临时目录(需提前创建) -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>

(2) hdfs-site.xml

配置HDFS的副本数和数据存储目录:

<configuration>
    <!-- 数据副本数(集群节点数≥3时设为3,否则设为1) -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- NameNode数据存储路径(需提前创建) -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/namenode</value>
    </property>
    <!-- DataNode数据存储路径(需提前创建) -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value>
    </property>
</configuration>

(3) yarn-site.xml

配置YARN资源管理器:

<configuration>
    <!-- 指定ResourceManager所在节点 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master-node-ip</value>
    </property>
    <!-- 启用MapReduce Shuffle服务 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

(4) mapred-site.xml

若目录下无该文件,需复制模板生成并配置:

cp mapred-site.xml.template mapred-site.xml
nano mapred-site.xml

添加以下内容:

<configuration>
    <!-- 指定MapReduce运行框架为YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

注意:所有路径(如/usr/local/hadoop/data/namenode)需提前创建,并赋予Hadoop用户权限:

mkdir -p /usr/local/hadoop/data/{namenode,datanode}
chown -R hadoop:hadoop /usr/local/hadoop/data

7. 格式化HDFS

首次启动Hadoop前,需格式化NameNode(仅第一次启动时执行,会清除原有数据):

# 切换到Hadoop用户
su - hadoop
# 格式化NameNode
hdfs namenode -format

格式化完成后,会生成/usr/local/hadoop/data/namenode/current目录。

8. 启动Hadoop集群

启动HDFS和YARN服务:

# 启动HDFS(NameNode和DataNode)
start-dfs.sh
# 启动YARN(ResourceManager和NodeManager)
start-yarn.sh

验证进程:使用jps命令查看Master和Slave节点的进程:

  • Master节点应显示:NameNodeResourceManagerSecondaryNameNode(可选)。
  • Slave节点应显示:DataNodeNodeManager

9. 验证集群状态

(1) 访问Web界面

  • HDFS Web界面:http://master-node-ip:9870(查看HDFS状态、存储信息)。
  • YARN Web界面:http://master-node-ip:8088(查看集群资源、任务调度)。

(2) 使用HDFS命令测试

# 创建HDFS目录
hdfs dfs -mkdir -p /user/hadoop/input
# 上传本地文件到HDFS
hdfs dfs -put ~/test.txt /user/hadoop/input
# 查看HDFS文件列表
hdfs dfs -ls /user/hadoop/input

若上述命令执行成功,说明集群搭建完成。

常见问题解决

  • 权限问题:若启动时报错“Permission denied”,需用chmodchown调整目录权限。
  • 端口冲突:若HDFS或YARN端口被占用,可在配置文件中修改端口号(如fs.defaultFS的9000改为其他端口)。
  • 节点无法通信:检查防火墙是否关闭(sudo ufw disable),或SSH配置是否正确。

0