温馨提示×

如何在Ubuntu上运行Hadoop示例

小樊
45
2025-10-12 11:01:01
栏目: 智能运维

一、环境准备

在Ubuntu上运行Hadoop示例前,需完成以下基础准备:

  1. 安装Java环境:Hadoop依赖Java运行环境,推荐使用OpenJDK 8。
    执行以下命令安装并验证:

    sudo apt update
    sudo apt install openjdk-8-jdk
    java -version  # 验证安装,需显示Java版本信息
    
  2. 配置SSH免密登录:Hadoop需要无密码SSH访问本地节点(伪分布模式必需)。
    生成密钥对并配置:

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa  # 生成密钥对(直接回车)
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  # 添加公钥到授权文件
    chmod 600 ~/.ssh/authorized_keys  # 设置权限
    ssh localhost  # 测试免密登录(无需输入密码)
    
  3. 下载并解压Hadoop:从Apache官网下载稳定版本(如3.3.1),解压至指定目录:

    wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
    sudo tar -zxvf hadoop-3.3.1.tar.gz -C /usr/local/
    sudo chown -R $USER:$USER /usr/local/hadoop-3.3.1  # 修改所有权(避免权限问题)
    

二、配置Hadoop环境

  1. 设置环境变量:编辑~/.bashrc文件,添加Hadoop路径和Java环境变量:

    export HADOOP_HOME=/usr/local/hadoop-3.3.1
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  # 根据实际Java路径调整
    

    使配置生效:

    source ~/.bashrc
    
  2. 配置Hadoop核心文件:进入Hadoop配置目录($HADOOP_HOME/etc/hadoop),修改以下文件:

    • core-site.xml:设置HDFS默认文件系统地址:
      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
          </property>
      </configuration>
      
    • hdfs-site.xml:配置HDFS副本数(伪分布模式设为1)和数据存储路径:
      <configuration>
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
          <property>
              <name>dfs.namenode.name.dir</name>
              <value>/usr/local/hadoop-3.3.1/data/namenode</value>
          </property>
          <property>
              <name>dfs.datanode.data.dir</name>
              <value>/usr/local/hadoop-3.3.1/data/datanode</value>
          </property>
      </configuration>
      
    • mapred-site.xml(若不存在则复制模板):设置MapReduce框架为YARN:
      cp mapred-site.xml.template mapred-site.xml
      
      编辑内容:
      <configuration>
          <property>
              <name>mapreduce.framework.name</name>
              <value>yarn</value>
          </property>
      </configuration>
      
    • yarn-site.xml:配置YARN资源管理器:
      <configuration>
          <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
          </property>
          <property>
              <name>yarn.resourcemanager.hostname</name>
              <value>localhost</value>
          </property>
      </configuration>
      

三、启动Hadoop服务

  1. 格式化HDFS:首次运行需格式化NameNode(删除原有数据):

    hdfs namenode -format
    
  2. 启动Hadoop集群:依次启动HDFS和YARN服务:

    start-dfs.sh  # 启动HDFS(NameNode、DataNode)
    start-yarn.sh  # 启动YARN(ResourceManager、NodeManager)
    
  3. 验证服务状态

    • 使用jps命令查看守护进程:应显示NameNodeDataNodeResourceManagerNodeManager(若未显示,检查日志文件$HADOOP_HOME/logs)。
    • 访问Web界面:
      • HDFS状态:http://localhost:9870(Hadoop 3.x版本)
      • YARN状态:http://localhost:8088

四、运行Hadoop示例(WordCount)

Hadoop自带WordCount示例,用于统计文本单词频率,步骤如下:

  1. 准备输入文件:在本地创建输入目录和测试文件:

    mkdir -p ~/hadoop_input
    echo "hello world hello hadoop" > ~/hadoop_input/file1.txt
    echo "hadoop mapreduce yarn" > ~/hadoop_input/file2.txt
    
  2. 上传文件到HDFS:将本地输入目录上传至HDFS的/input路径:

    hdfs dfs -mkdir -p /input  # 在HDFS上创建输入目录
    hdfs dfs -put ~/hadoop_input/* /input  # 上传文件
    
  3. 运行WordCount程序:使用Hadoop jar命令执行示例:

    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output
    

    (注:hadoop-mapreduce-examples-*.jar是Hadoop自带的示例程序,路径可能因版本略有差异)

  4. 查看运行结果

    • 查看输出目录:hdfs dfs -ls /output(应包含part-r-00000文件,存储计算结果)。
    • 查看具体结果:hdfs dfs -cat /output/part-r-00000(显示单词及出现次数,如hello 2world 1等)。

五、停止Hadoop服务

测试完成后,使用以下命令停止Hadoop服务:

stop-yarn.sh  # 停止YARN
stop-dfs.sh  # 停止HDFS

注意事项

  • 伪分布模式仅用于开发和调试,生产环境需使用完全分布式模式(多节点集群)。
  • 若遇到权限问题,可通过chmod命令调整目录权限(如HDFS数据目录)。
  • 确保防火墙未阻止Hadoop端口(如9000、50070、8088),或临时关闭防火墙测试:sudo ufw disable

0