首页主机资讯Ubuntu如何简化Hadoop的安装过程

Ubuntu如何简化Hadoop的安装过程

时间2025-12-11 17:49:03发布访客分类主机资讯浏览338
导读:在 Ubuntu 上简化 Hadoop 安装的可行方案 一、最快路径 单机伪分布式一键脚本 适用目标:本机学习/验证,最快在几分钟内跑起来 Hadoop 伪分布式(HDFS + YARN)。 准备:Ubuntu 20.04/22.04 L...

在 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”

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu如何简化Hadoop的安装过程
本文地址: https://pptw.com/jishu/769586.html
Hadoop在Ubuntu上的网络配置有哪些要点 Hadoop在Ubuntu上的资源分配策略是什么

游客 回复需填写必要信息