首页主机资讯Hadoop任务如何在Ubuntu上高效执行

Hadoop任务如何在Ubuntu上高效执行

时间2025-11-25 12:33:03发布访客分类主机资讯浏览695
导读:在 Ubuntu 上高效执行 Hadoop 任务的实用指南 一 环境与基础配置 安装 Java 8(Hadoop 3.x 常用稳定版本),并配置环境变量: 安装:sudo apt update && sudo apt i...

在 Ubuntu 上高效执行 Hadoop 任务的实用指南

一 环境与基础配置

  • 安装 Java 8(Hadoop 3.x 常用稳定版本),并配置环境变量:
    • 安装:sudo apt update & & sudo apt install -y openjdk-8-jdk
    • 配置:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  • 安装并启用 SSH(伪分布式/集群需要节点间通信与免密登录):
    • 安装:sudo apt install -y openssh-server
    • 免密:ssh-keygen -t rsa & & cat ~/.ssh/id_rsa.pub > > ~/.ssh/authorized_keys & & chmod 600 ~/.ssh/authorized_keys
  • 下载并解压 Hadoop 3.3.x,设置环境变量:
    • 示例:export HADOOP_HOME=/usr/local/hadoop & & export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • 基础配置要点(位于 $HADOOP_HOME/etc/hadoop):
    • core-site.xml:fs.defaultFS=hdfs://localhost:9000
    • hdfs-site.xml:dfs.replication=1(单机/伪分布式),dfs.namenode.name.dirdfs.datanode.data.dir 指向本地存储目录
    • mapred-site.xml:mapreduce.framework.name=yarn
    • yarn-site.xml:yarn.nodemanager.aux-services=mapreduce_shuffle
  • 初始化与启动:
    • 格式化:hdfs namenode -format
    • 启动:start-dfs.sh & & start-yarn.sh
    • 验证:jps 应看到 NameNode、DataNode、ResourceManager、NodeManager;访问 http://localhost:9870(HDFS)与 http://localhost:8088(YARN)。

二 高效执行的关键配置

  • 资源配置(yarn-site.xml)
    • 依据节点内存/CPU 合理设置:
      • yarn.nodemanager.resource.memory-mb:为 NodeManager 分配的总内存(如:8192 MB
      • yarn.nodemanager.resource.cpu-vcores:为 NodeManager 分配的 vCore 数(如:8
    • 调度边界:yarn.scheduler.minimum-allocation-mbyarn.scheduler.maximum-allocation-mb
  • 存储与 I/O(hdfs-site.xml)
    • 块大小:按数据规模与访问模式调整 dfs.blocksize(如:256MB 对应 268435456
    • 存储介质:优先使用 SSD 作为 HDFS 数据目录,提高读写性能
  • 并行度与 JVM
    • 并行度:可按数据量与集群规模设置 mapreduce.job.mapsmapreduce.job.reduces
    • 容器内存:结合容器规格设置 mapreduce.map.memory.mbmapreduce.reduce.memory.mb
    • JVM 堆:通过 mapreduce.map.java.optsmapreduce.reduce.java.opts 设置堆大小(通常略小于容器内存,留出堆外开销)
  • 数据压缩(减少磁盘 I/O 与网络传输)
    • 中间数据:mapreduce.map.output.compress=true
    • 输出数据:mapreduce.output.fileoutputformat.compress=true
  • 数据本地化
    • 适度等待本地数据:mapreduce.job.locality.wait,提升 Map 任务数据本地率,降低网络开销。

三 作业提交与调度

  • 提交作业(MapReduce)
    • 示例:hadoop jar /path/to/your-job.jar com.example.YourJobClass input output
  • 运行时调优
    • 通过命令行覆盖参数:-D mapreduce.job.reduces=200 -D mapreduce.map.output.compress=true
  • 监控与诊断
    • 命令行:yarn application -listyarn application -status < app_id>
    • Web UI:ResourceManager 8088HDFS NameNode 9870
  • 工作流调度
    • 复杂依赖与定时调度建议集成 Apache OozieApache Airflow,与 Hadoop/YARN 协同管理任务生命周期。

四 快速性能调优示例

  • 目标:提升大表扫描与聚合类作业的整体吞吐与稳定性
  • 示例配置片段(按需调整数值)
    • yarn-site.xml
      <
          property>
          
        <
          name>
          yarn.nodemanager.resource.memory-mb<
          /name>
          
        <
          value>
          16384<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          yarn.nodemanager.resource.cpu-vcores<
          /name>
          
        <
          value>
          16<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          yarn.scheduler.minimum-allocation-mb<
          /name>
          
        <
          value>
          2048<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          yarn.scheduler.maximum-allocation-mb<
          /name>
          
        <
          value>
          16384<
          /value>
          
      <
          /property>
          
      
    • hdfs-site.xml
      <
          property>
          
        <
          name>
          dfs.blocksize<
          /name>
          
        <
          value>
          268435456<
          /value>
           <
          !-- 256MB -->
          
      <
          /property>
          
      
    • mapred-site.xml
      <
          property>
          
        <
          name>
          mapreduce.map.output.compress<
          /name>
          
        <
          value>
          true<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          mapreduce.output.fileoutputformat.compress<
          /name>
          
        <
          value>
          true<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          mapreduce.job.reduces<
          /name>
          
        <
          value>
          200<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          mapreduce.map.memory.mb<
          /name>
          
        <
          value>
          4096<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          mapreduce.reduce.memory.mb<
          /name>
          
        <
          value>
          8192<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          mapreduce.map.java.opts<
          /name>
          
        <
          value>
          -Xmx3072m<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          mapreduce.reduce.java.opts<
          /name>
          
        <
          value>
          -Xmx6144m<
          /value>
          
      <
          /property>
          
      <
          property>
          
        <
          name>
          mapreduce.job.locality.wait<
          /name>
          
        <
          value>
          5000<
          /value>
          
      <
          /property>
          
      
    • 提交示例
      hadoop jar your-job.jar com.example.YourJobClass \
        -D mapreduce.job.reduces=200 \
        -D mapreduce.map.output.compress=true \
        input output
      
    • 调优要点
      • 合理设置 reduce 数量(通常与 reduce 阶段目标并行度、数据倾斜程度相关)
      • 容器内存与 JVM 堆配比建议为:堆 ≈ 容器内存的 75%–85%
      • 结合 数据本地化压缩 减少网络与 I/O 开销。

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


若转载请注明出处: Hadoop任务如何在Ubuntu上高效执行
本文地址: https://pptw.com/jishu/755447.html
Ubuntu下Hadoop备份策略有哪些 如何在Ubuntu上配置Hadoop网络

游客 回复需填写必要信息