温馨提示×

Ubuntu如何简化Hadoop的安装过程

小樊
45
2025-12-10 21:36:23
栏目: 智能运维

在 Ubuntu 上简化 Hadoop 安装的可行方案

一、最快路径 单机伪分布式一键脚本

  • 适用目标:本机学习/验证,最快在几分钟内跑起来 Hadoop 伪分布式(HDFS + YARN)。
  • 准备:Ubuntu 20.04/22.04 LTS,至少 2 核 CPU / 4GB 内存 / 20GB 磁盘,可用用户具备 sudo 权限。
  • 一键脚本(复制整段到终端执行):
#!/usr/bin/env bash
set -e
echo "=== 简化安装 Hadoop 伪分布式(Ubuntu 20.04/22.04) ==="

# 0) 参数
HADOOP_VER=${HADOOP_VER:-"3.3.6"}
JAVA_PKG=${JAVA_PKG:-"openjdk-11-jdk"}
HADOOP_HOME=${HADOOP_HOME:-"$HOME/hadoop"}

# 1) 基础依赖
sudo apt update -y
sudo apt install -y $JAVA_PKG openssh-server rsync

# 2) SSH 免密(本机)
mkdir -p ~/.ssh
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-keyscan -H localhost >> ~/.ssh/known_hosts
ssh localhost true

# 3) 安装 Hadoop
cd ~
wget -q https://archive.apache.org/dist/hadoop/core/hadoop-${HADOOP_VER}/hadoop-${HADOOP_VER}.tar.gz
tar -xzf hadoop-${HADOOP_VER}.tar.gz
rm -f hadoop-${HADOOP_VER}.tar.gz
[ -d "$HADOOP_HOME" ] && mv "$HADOOP_HOME" "$HADOOP_HOME.bak_$(date +%F_%T)"
mv hadoop-${HADOOP_VER} "$HADOOP_HOME"

# 4) 环境变量
grep -qxF "export HADOOP_HOME=$HADOOP_HOME" ~/.bashrc || echo "export HADOOP_HOME=$HADOOP_HOME" >> ~/.bashrc
grep -qxF 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' ~/.bashrc || echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
grep -qxF "export JAVA_HOME=$(readlink -f /usr/bin/java | sed 's:/bin/java::')" ~/.bashrc || echo "export JAVA_HOME=$(readlink -f /usr/bin/java | sed 's:/bin/java::')" >> ~/.bashrc
source ~/.bashrc

# 5) 写入 Hadoop 配置
cat > "$HADOOP_HOME/etc/hadoop/core-site.xml" <<'EOF'
<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>
EOF

cat > "$HADOOP_HOME/etc/hadoop/hdfs-site.xml" <<'EOF'
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>
EOF

if [ ! -f "$HADOOP_HOME/etc/hadoop/mapred-site.xml" ]; then
  cp "$HADOOP_HOME/etc/hadoop/mapred-site.xml.template" "$HADOOP_HOME/etc/hadoop/mapred-site.xml"
fi
cat > "$HADOOP_HOME/etc/hadoop/mapred-site.xml" <<'EOF'
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>
EOF

cat > "$HADOOP_HOME/etc/hadoop/yarn-site.xml" <<'EOF'
<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>
EOF

# 6) 格式化并启动
"$HADOOP_HOME/bin/hdfs" namenode -format -force
"$HADOOP_HOME/sbin/start-dfs.sh"
"$HADOOP_HOME/sbin/start-yarn.sh"

echo "✅ 安装完成,进程:"
jps
echo "✅ Web UI:"
echo "  HDFS NameNode:  http://localhost:9870"
echo "  YARN ResourceManager: http://localhost:8088"
echo "✅ 测试命令:"
echo "  hdfs dfs -ls /"
echo "  hdfs dfs -mkdir -p /test && echo 'hello hadoop' | hdfs dfs -put - /test/hello.txt"
  • 说明:脚本自动设置 JAVA_HOME(读取 java 命令的链接目标),并写入最小化的 core-site.xml / hdfs-site.xml / mapred-site.xml / yarn-site.xml。首次启动会格式化 NameNode,请确认无重要数据。

二、常见坑与快速修复

  • JAVA_HOME 未生效

    • 现象:执行脚本报 “ERROR: JAVA_HOME is not set …”
    • 快速修复:
      • 确认路径:readlink -f /usr/bin/java 输出如 /usr/lib/jvm/java-11-openjdk-amd64/bin/java,则 JAVA_HOME 应为 /usr/lib/jvm/java-11-openjdk-amd64
      • 写入环境:echo ‘export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64’ >> ~/.bashrc && source ~/.bashrc
      • 或在 Hadoop 环境文件显式设置:echo ‘export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64’ >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh
      • 某些环境下,仅在 /etc/environment 中设置 JAVA_HOME 才被脚本识别,可补充写入:echo ‘JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64’ | sudo tee -a /etc/environment。
  • SSH 免密失败

    • 现象:start-dfs.sh 卡住或提示需要密码
    • 快速修复:
      • 生成密钥:ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
      • 授权公钥:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
      • 本机测试:ssh localhost 无需密码即成功。
  • 端口被占用

    • 现象:NameNode/ResourceManager 启动失败
    • 快速修复:
      • 检查占用:ss -tulpen | grep -E ‘9000|8088|9870’
      • 结束占用或改用未占用端口,并同步修改 core-site.xml / yarn-site.xml 对应端口后重启。

三、进阶 使用现成脚本与自动化工具

  • 开源一键脚本
    • 示例一:GitHub 上的 hadoop 一键搭建脚本(支持自动安装 OpenSSH、配置免密、修改 Hadoop 配置,适合 Ubuntu 18.04,示例版本 Hadoop 2.8.5 + JDK 1.8)。适合快速体验与教学演示。
    • 示例二:hadoop2023.sh(面向 Ubuntu 23.04 等,自动安装 Java 8、解压 Hadoop 3.1.3/usr/local、写入 PATH 与 hadoop-env.sh 的 JAVA_HOME)。脚本思路清晰,便于二次改造。
  • 自动化运维
    • 团队/多机环境建议用 Ansible 编排(批量安装 JDK、分发 Hadoop、统一配置与启停),可显著减少重复劳动与人为失误。

四、验证与常用命令

  • 进程检查:jps 应看到 NameNode / DataNode / ResourceManager / NodeManager
  • HDFS 操作:
    • 查看根目录:hdfs dfs -ls /
    • 上传测试:echo ‘hello hadoop’ | hdfs dfs -put - /test/hello.txt
    • 读取测试:hdfs dfs -cat /test/hello.txt
  • Web UI:
    • HDFS NameNode:http://localhost:9870
    • YARN ResourceManager:http://localhost:8088
  • 停止服务:
    • “$HADOOP_HOME/sbin/stop-yarn.sh”
    • “$HADOOP_HOME/sbin/stop-dfs.sh”

0