温馨提示×

Hadoop集群Ubuntu上如何搭建

小樊
40
2025-10-19 00:15:20
栏目: 智能运维

Hadoop集群在Ubuntu上的搭建步骤

1. 环境准备

  • 硬件要求:每台节点需满足双核CPU、8GB以上内存、100GB以上硬盘空间(可根据数据量调整);
  • 网络配置:所有节点需在同一局域网内,能通过主机名或IP互相通信(建议关闭防火墙或开放必要端口,如9000、50070、8088等);
  • 节点规划:至少1台Master节点(运行NameNode、ResourceManager),1台及以上Slave节点(运行DataNode、NodeManager)。

2. 安装Java环境

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

# 更新软件包索引
sudo apt update
# 安装OpenJDK 11(Ubuntu 22.04+默认仓库版本)
sudo apt install -y openjdk-11-jdk
# 验证安装(需显示Java版本信息)
java -version

注意:若使用Hadoop 3.3.x及以上版本,建议选择OpenJDK 11以避免兼容性问题。

3. 配置SSH免密码登录

Hadoop集群节点间需通过SSH无密码通信,避免每次操作输入密码:

# 在Master节点上生成SSH密钥对(默认保存到~/.ssh/id_rsa)
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
# 将公钥复制到所有Slave节点(替换user为节点用户名,slave-ip为Slave节点IP)
ssh-copy-id user@slave-ip
# 测试免密登录(无需密码即可登录Slave节点)
ssh user@slave-ip

4. 下载并解压Hadoop

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

# 创建Hadoop安装目录
sudo mkdir -p /usr/local/hadoop
# 下载Hadoop(以3.3.6为例,可通过wget或浏览器下载)
wget https://dlcdn.apache.org/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
# 修改目录所有者(替换hadoop为当前用户)
sudo chown -R hadoop:hadoop /usr/local/hadoop

5. 配置Hadoop环境变量

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

# 打开.bashrc文件
nano ~/.bashrc
# 在文件末尾添加以下内容(替换路径为用户实际路径)
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64  # Java安装路径
export HADOOP_HOME=/usr/local/hadoop                # Hadoop安装路径
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 添加Hadoop命令到PATH
# 保存并退出(Ctrl+O→回车→Ctrl+X)
# 使环境变量生效
source ~/.bashrc

6. 配置Hadoop核心文件

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

6.1 core-site.xml(HDFS核心配置)

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value> <!-- Master节点主机名,端口默认9000 -->
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value> <!-- Hadoop临时目录 -->
    </property>
</configuration>

6.2 hdfs-site.xml(HDFS存储配置)

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value> <!-- 数据副本数(根据节点数量调整,建议2-3) -->
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/namenode</value> <!-- NameNode元数据存储路径 -->
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value> <!-- DataNode数据存储路径 -->
    </property>
</configuration>

6.3 mapred-site.xml(MapReduce配置)

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value> <!-- 使用YARN作为资源管理框架 -->
    </property>
</configuration>

6.4 yarn-site.xml(YARN配置)

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value> <!-- ResourceManager所在节点主机名 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value> <!-- MapReduce Shuffle服务 -->
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

7. 格式化HDFS

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

# 切换到Hadoop用户(替换hadoop为当前用户)
su - hadoop
# 格式化NameNode
hdfs namenode -format

8. 启动Hadoop集群

8.1 启动HDFS

# 在Master节点上启动HDFS服务
$HADOOP_HOME/sbin/start-dfs.sh

8.2 启动YARN

# 在Master节点上启动YARN服务
$HADOOP_HOME/sbin/start-yarn.sh

8.3 查看进程状态

# 在Master节点上查看Hadoop进程(需显示NameNode、DataNode、ResourceManager、NodeManager)
jps

9. 验证集群状态

9.1 访问Web界面

  • HDFS NameNode:浏览器输入http://master:9870(Hadoop 3.x版本端口为9870,2.x为50070);
  • YARN ResourceManager:浏览器输入http://master:8088

9.2 检查节点状态

# 查看HDFS节点列表
hdfs dfsadmin -report
# 查看YARN节点列表
yarn node -list

常见问题解决

  • 权限问题:若启动时报权限错误,需确保Hadoop目录所有者为当前用户(sudo chown -R hadoop:hadoop /usr/local/hadoop);
  • 端口冲突:若端口被占用,可修改core-site.xmlyarn-site.xml中的端口(如9000改为9001);
  • SSH连接失败:检查~/.ssh/authorized_keys文件权限(需设置为600),或重新生成密钥。

0