温馨提示×

怎样在 Ubuntu 上运行 Hadoop 程序

小樊
38
2025-11-23 04:21:52
栏目: 智能运维

在 Ubuntu 上运行 Hadoop 程序的完整步骤

一 环境准备与安装

  • 安装 Java(Hadoop 3.x 建议使用 OpenJDK 8 或 11):
    • 安装命令:sudo apt update && sudo apt install openjdk-11-jdk
    • 验证版本:java -version
  • 下载并解压 Hadoop(示例版本 3.3.1):
    • 下载:wget https://downloads.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
    • 解压与移动:tar -xzf hadoop-3.3.1.tar.gz && sudo mv hadoop-3.3.1 /usr/local/hadoop
  • 配置环境变量(写入 ~/.bashrc/etc/profile.d/hadoop.sh):
    • 内容:
      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 由 HDFS、YARN、MapReduce 组成,本流程以单机伪分布式为例,便于学习与开发。

二 配置 Hadoop 伪分布式

  • 配置文件路径:$HADOOP_CONF_DIR(即 /usr/local/hadoop/etc/hadoop
  • 核心配置示例:
    • core-site.xml
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://localhost:9000</value>
        </property>
      </configuration>
      
    • hdfs-site.xml
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>/usr/local/hadoop/data/namenode</value>
        </property>
      </configuration>
      
    • mapred-site.xml(如文件为模板,先重命名为 mapred-site.xml)
      <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>
      </configuration>
      
    • yarn-site.xml
      <configuration>
        <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>localhost</value>
        </property>
        <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
        </property>
        <property>
          <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
          <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
      </configuration>
      
  • 初始化与启动:
    • 格式化 HDFS:hdfs namenode -format
    • 启动 HDFS:start-dfs.sh
    • 启动 YARN:start-yarn.sh
    • 验证进程:jps(应看到 NameNode、DataNode、ResourceManager、NodeManager
    • Web 界面:HDFS http://localhost:9870,YARN http://localhost:8088

三 运行第一个 MapReduce 程序 WordCount

  • 准备输入数据到 HDFS:
    • hdfs dfs -mkdir -p /user/$USER/input
    • 可使用本地示例:hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$USER/input
  • 方式一 使用 Hadoop 自带示例 JAR(最简便)
    • 执行:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /user/$USER/input /user/$USER/output
  • 方式二 自行编译打包运行(示例)
    • 编译:$HADOOP_HOME/bin/hadoop com.sun.tools.javac.Main WordCount.java
    • 打包:jar cf wc.jar WordCount*.class
    • 运行:hadoop jar wc.jar WordCount /user/$USER/input /user/$USER/output2
  • 查看结果:
    • hdfs dfs -cat /user/$USER/output/part-r-00000
  • 注意:输出目录不能已存在,否则作业会失败。

四 常用管理与排错命令

  • 服务启停:
    • 启动:start-dfs.shstart-yarn.sh
    • 停止:stop-dfs.shstop-yarn.sh
  • HDFS 常用:
    • 列目录:hdfs dfs -ls /
    • 上传:hdfs dfs -put localfile /user/$USER/
    • 下载:hdfs dfs -get /user/$USER/file ./
  • 作业与资源:
    • 查看应用:yarn application -list
    • 查看日志:yarn logs -applicationId <app_id>
  • 进程检查与端口:
    • jps 确认守护进程
    • 访问 9870/8088 检查 HDFS/YARN 是否正常。

五 常见问题与优化建议

  • Java 版本不匹配:Hadoop 3.3.x 常见搭配为 JDK 8 或 11,版本差异可能导致启动或运行异常,建议统一版本并正确设置 JAVA_HOME
  • SSH 与权限:伪分布式通常需配置本机 SSH 免密登录;如使用专用用户运行 Hadoop,注意目录与数据的权限设置。
  • 目录权限与路径:为 dfs.namenode.name.dir 等目录预先创建并赋予 hadoop 用户读写权限,避免因权限导致格式化或启动失败。
  • 资源不足:单机环境内存紧张时,可在 yarn-site.xml 调低容器内存参数(如 yarn.nodemanager.resource.memory-mb),或减少作业并发。
  • 输出目录冲突:每次运行前确保输出目录不存在,或使用不同输出路径,避免作业报错退出。

0