温馨提示×

Debian怎么部署Hadoop

小樊
41
2026-08-17 13:50:36
栏目: 智能运维

在中国大陆,Debian 系统上部署 Hadoop 通常推荐采用 “手动安装 + 伪分布式模式” 作为入门,或者 “手动安装 + 完全分布式模式” 用于生产环境。由于 Hadoop 官方主要提供基于 Linux 的二进制包,且 Debian 的软件源中 Hadoop 版本往往较旧,因此手动下载官方二进制包是最稳妥、最通用的方式。

以下是基于 Debian 11/12 部署 Hadoop 3.x 的详细步骤(以伪分布式为例,这是学习和开发最常用的模式)。


一、 环境准备

1. 安装 Java (JDK)

Hadoop 3.x 需要 Java 8 或 Java 11。在 Debian 上推荐使用 OpenJDK。

sudo apt update
sudo apt install openjdk-11-jdk -y

验证安装:

java -version

记下 JAVA_HOME 路径,通常是 /usr/lib/jvm/java-11-openjdk-amd64,后续配置需要。

2. 创建专用用户(推荐)

为了安全,不要使用 root 运行 Hadoop。创建一个 hadoop 用户。

sudo adduser hadoop
sudo usermod -aG sudo hadoop  # 赋予sudo权限(可选)
su - hadoop                   # 切换到该用户

3. 配置 SSH 免密登录

Hadoop 需要通过 SSH 管理节点,即使是单机伪分布式也需要。

sudo apt install ssh -y

生成密钥并授权给自己:

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

测试是否免密成功(第一次可能需要输入 yes):

ssh localhost

如果不需要输入密码直接登录,说明成功。退出 SSH 回到原终端。


二、 下载与安装 Hadoop

1. 下载 Hadoop

前往 Apache Hadoop 官方归档清华 TUNA 镜像 下载稳定版(例如 3.3.6)。

cd /home/hadoop
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz

2. 解压并移动到标准目录

tar -zxvf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
sudo chown -R hadoop:hadoop /usr/local/hadoop

3. 配置环境变量

编辑 ~/.bashrc 文件:

nano ~/.bashrc

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

# Hadoop Environment Variables
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

使配置生效:

source ~/.bashrc

验证 Hadoop 版本:

hadoop version

三、 配置 Hadoop(伪分布式)

进入配置目录:

cd $HADOOP_HOME/etc/hadoop

你需要修改以下 4 个核心文件:

1. hadoop-env.sh

设置 Java 环境变量(虽然 bashrc 里有,但 Hadoop 脚本有时需要显式指定)。

nano hadoop-env.sh

找到并修改(取消注释并修改):

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

2. core-site.xml

配置默认文件系统和临时目录。

nano core-site.xml

<configuration> 标签内添加:

<configuration>
    <!-- 指定 NameNode 的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <!-- 指定 Hadoop 运行时临时目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/hadoop_tmp</value>
    </property>
</configuration>

注意:确保 /home/hadoop/hadoop_tmp 目录存在,或者手动创建 mkdir -p /home/hadoop/hadoop_tmp

3. hdfs-site.xml

配置 HDFS 副本数(伪分布式设为 1)。

nano hdfs-site.xml
<configuration>
    <!-- 副本数量,伪分布式设为1 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

4. mapred-site.xml (可选,用于 YARN)

配置 MapReduce 使用 YARN 框架。

nano mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

5. yarn-site.xml

配置 YARN 资源管理器。

nano yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</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>

四、 启动与验证

1. 格式化 HDFS 文件系统

注意:这是第一次运行前必须做的,且只能做一次(除非你想清空所有数据)。

hdfs namenode -format

2. 启动 HDFS

start-dfs.sh

3. 启动 YARN (如果需要运行 MapReduce)

start-yarn.sh

4. 检查进程

使用 jps 命令查看是否所有守护进程都启动了:

jps

你应该看到类似以下进程(名称可能略有不同):

  • NameNode
  • DataNode
  • SecondaryNameNode
  • ResourceManager
  • NodeManager

5. 访问 Web UI

在 Debian 本机上打开浏览器,或通过端口转发访问:

  • HDFS NameNode UI: http://localhost:9870
  • YARN ResourceManager UI: http://localhost:8088

五、 运行测试任务

创建一个 HDFS 目录并上传文件测试:

# 创建用户目录
hdfs dfs -mkdir -p /user/hadoop

# 创建一个本地测试文件
echo "Hello Hadoop" > test.txt

# 上传到 HDFS
hdfs dfs -put test.txt /user/hadoop/

# 查看文件
hdfs dfs -ls /user/hadoop/

运行 Hadoop 自带的 WordCount 示例:

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /user/hadoop/test.txt /user/hadoop/output

# 查看结果
hdfs dfs -cat /user/hadoop/output/part-r-00000

常见问题排查 (Troubleshooting)

  1. JAVA_HOME 找不到: 确保 hadoop-env.sh~/.bashrc 中的路径完全一致,且路径真实存在。
  2. 端口被占用: 如果启动失败,检查 9000, 9870, 8088 端口是否被占用。
  3. 权限拒绝 (Permission Denied): 确保 /usr/local/hadoop 和临时目录的所有者是 hadoop 用户,而不是 root。
  4. Debian 防火墙: 如果是远程访问 Web UI,确保 Debian 防火墙放行了端口(或者关闭防火墙 sudo ufw disable 仅用于测试)。

进阶:完全分布式部署

如果你需要在多台 Debian 机器上部署:

  1. 每台机器都要安装 Java 和 Hadoop。
  2. 配置 /etc/hosts 绑定所有节点的 IP 和主机名。
  3. 配置 workers 文件(旧版叫 slaves),填入所有 DataNode 的主机名。
  4. 将 NameNode 的 core-site.xml 中的 localhost 改为 NameNode 的主机名。
  5. 配置 SSH 免密登录(NameNode 能免密登录所有 DataNode)。

0