温馨提示×

如何在Ubuntu上利用HDFS进行大数据处理

小樊
38
2025-11-25 04:01:53
栏目: 智能运维

在 Ubuntu 上使用 HDFS 进行大数据处理的实操指南

一 环境准备与安装

  • 安装 Java(推荐 OpenJDK 8,Hadoop 3.x 系列对该版本兼容性更好):
    • 执行:sudo apt update && sudo apt install -y openjdk-8-jdk
    • 验证:java -version
  • 安装与配置 SSH(用于节点间通信,单机也建议配置免密登录):
    • 执行:sudo apt install -y openssh-server
    • 生成密钥:ssh-keygen -t rsa -P ''
    • 免密登录本机:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
    • 测试:ssh localhost
  • 下载并解压 Hadoop(示例版本 3.3.6):
    • 执行:wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
    • 解压:sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/ && sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
  • 配置环境变量(写入 ~/.bashrc/etc/profile):
    • 内容:
      export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
      export HADOOP_HOME=/usr/local/hadoop
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
      
    • 生效:source ~/.bashrc

二 配置 HDFS 与 YARN

  • 核心配置($HADOOP_HOME/etc/hadoop/)
    • core-site.xml
      <configuration>
        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://localhost:9000</value>
        </property>
      </configuration>
      
    • hdfs-site.xml(单机副本设为 1,并指定本地数据目录)
      <configuration>
        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>
        <property>
          <name>dfs.namenode.name.dir</name>
          <value>/usr/local/hadoop/hdfs/namenode</value>
        </property>
        <property>
          <name>dfs.datanode.data.dir</name>
          <value>/usr/local/hadoop/hdfs/datanode</value>
        </property>
      </configuration>
      
    • mapred-site.xml(使用 YARN 作为执行框架)
      <configuration>
        <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
        </property>
      </configuration>
      
    • yarn-site.xml
      <configuration>
        <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>
      
  • 创建本地数据目录并赋权:
    • 执行:sudo mkdir -p /usr/local/hadoop/hdfs/{namenode,datanode}
    • 赋权(如使用 hdfs 用户):sudo chown -R hdfs:hdfs /usr/local/hadoop/hdfs
  • 首次启动前格式化 NameNode:
    • 执行:hdfs namenode -format

三 启动与验证

  • 启动服务:
    • 仅 HDFS:start-dfs.sh
    • HDFS + YARN:start-dfs.sh && start-yarn.sh
  • 进程健康检查:
    • 执行:jps
    • 期望看到:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager
  • Web 管理界面(注意 Hadoop 3.x 与 2.x 端口差异):
    • HDFS NameNode:http://localhost:9870
    • YARN ResourceManager:http://localhost:8088
  • 若启用了防火墙,放行端口(示例 UFW):
    • 执行:sudo ufw allow 9000,9870,8088

四 HDFS 基本操作与示例作业

  • 基本文件操作(HDFS Shell)
    • 创建用户目录:hdfs dfs -mkdir -p /user/$USER
    • 上传文件:hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /user/$USER/input
    • 查看文件:hdfs dfs -cat /user/$USER/input/*.xml | head
    • 下载结果:hdfs dfs -get /user/$USER/output ./output
    • 删除目录:hdfs dfs -rm -r /user/$USER/output
  • 运行内置示例(单词计数)
    • 执行:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar grep /user/$USER/input /user/$USER/output 'dfs[a-z.]+'
    • 查看结果:hdfs dfs -cat /user/$USER/output/*
  • 常用补充
    • 列出目录:hdfs dfs -ls /user/$USER
    • 复制/移动:hdfs dfs -cp input/my.txt /inputhdfs dfs -mv input/my.txt /input2

五 常见问题与优化建议

  • 无法访问 Web UI
    • 确认服务已启动(jps)、端口未被占用、以及本机/服务器防火墙已放行(如 9870/8088)。
  • 权限错误
    • 若以 hdfs 用户运行,确保 HDFS 目录属主为 hdfs:hdfs;或在命令前加 sudo -u hdfs 执行相关 HDFS 操作。
  • 数据块副本与容错
    • 单机伪分布式副本只能设为 1;多节点集群建议将 dfs.replication 设为 3 以提升容错性。
  • 版本与端口差异
    • Hadoop 3.x 的 NameNode Web 默认端口为 9870(2.x 为 50070),访问时请核对版本。
  • 性能与稳定性
    • 合理设置 HDFS 数据目录到性能更好的磁盘;YARN 可根据内存与 CPU 核数调整容器资源;大数据量作业优先使用 YARN 模式以获得更好的资源调度与扩展性。

0