首页主机资讯Hadoop在Ubuntu上的资源管理

Hadoop在Ubuntu上的资源管理

时间2025-11-27 11:35:03发布访客分类主机资讯浏览1061
导读:Hadoop在Ubuntu上的资源管理实践 一 核心概念与容量规划 资源模型:由 YARN 统一管理集群资源,核心资源为 内存(MB) 与 CPU 虚拟核(vcores)。NodeManager 上报可用资源,ResourceManage...

Hadoop在Ubuntu上的资源管理实践

一 核心概念与容量规划

  • 资源模型:由 YARN 统一管理集群资源,核心资源为 内存(MB)CPU 虚拟核(vcores)。NodeManager 上报可用资源,ResourceManager 按队列与调度策略分配容器(Container)。
  • 容量规划步骤:
    • 明确节点总内存与已用内存,保留系统与安全余量(建议预留 10%–20%)。
    • 设置 yarn.nodemanager.resource.memory-mb 为节点可分配给 YARN 的内存总量。
    • 设置 yarn.nodemanager.resource.cpu-vcores 为可分配给 YARN 的 vcores 数(通常不超过物理核心数)。
    • 结合作业类型(CPU 密集或 I/O 密集)与并发度,规划容器规格与数量,避免资源碎片与过度切分。

二 关键配置与示例

  • 计算资源与容器规格
    • 容器内存上限:yarn.scheduler.maximum-allocation-mb
    • 容器内存下限:yarn.scheduler.minimum-allocation-mb
    • 容器 vcores 上限:yarn.scheduler.maximum-allocation-vcores
    • 容器 vcores 下限:yarn.scheduler.minimum-allocation-vcores
    • 建议:让“容器规格”为“节点资源”的整数约数,减少碎片;Map/Reduce 的 JVM 堆建议设置为“容器内存 × 0.8”左右,留出堆外与本地缓存空间。
  • 存储与 I/O
    • HDFS 块大小:dfs.blocksize(默认 128MB,可按数据规模与访问模式调至 256MB 或更高以减少小文件与元数据压力)。
    • 数据副本:dfs.replication(多节点环境常用 3,单机或测试可设为 1)。
  • 示例配置(单节点或伪分布式,便于起步)
    • yarn-site.xml
      <
          configuration>
          
        <
          property>
          
          <
          name>
          yarn.nodemanager.resource.memory-mb<
          /name>
          
          <
          value>
          8192<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          yarn.nodemanager.resource.cpu-vcores<
          /name>
          
          <
          value>
          8<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          yarn.scheduler.minimum-allocation-mb<
          /name>
          
          <
          value>
          1024<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          yarn.scheduler.maximum-allocation-mb<
          /name>
          
          <
          value>
          4096<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          yarn.scheduler.minimum-allocation-vcores<
          /name>
          
          <
          value>
          1<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          yarn.scheduler.maximum-allocation-vcores<
          /name>
          
          <
          value>
          4<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          yarn.nodemanager.aux-services<
          /name>
          
          <
          value>
          mapreduce_shuffle<
          /value>
          
        <
          /property>
          
      <
          /configuration>
          
      
    • hdfs-site.xml
      <
          configuration>
          
        <
          property>
          
          <
          name>
          dfs.replication<
          /name>
          
          <
          value>
          1<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          dfs.blocksize<
          /name>
          
          <
          value>
          268435456<
          /value>
           <
          !-- 256MB -->
          
        <
          /property>
          
      <
          /configuration>
          
      
    • mapred-site.xml
      <
          configuration>
          
        <
          property>
          
          <
          name>
          mapreduce.framework.name<
          /name>
          
          <
          value>
          yarn<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          mapreduce.map.java.opts<
          /name>
          
          <
          value>
          -Xmx2048m<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          mapreduce.reduce.java.opts<
          /name>
          
          <
          value>
          -Xmx2048m<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          mapreduce.map.output.compress<
          /name>
          
          <
          value>
          true<
          /value>
          
        <
          /property>
          
        <
          property>
          
          <
          name>
          mapreduce.output.fileoutputformat.compress<
          /name>
          
          <
          value>
          true<
          /value>
          
        <
          /property>
          
      <
          /configuration>
      
      
    以上关键项与取值思路可显著提升资源利用率与作业稳定性,并兼顾 I/O 与网络开销。

三 日常运维与监控

  • 集群与节点健康
    • 查看 HDFS 健康与容量:hdfs dfsadmin -report
    • 查看 YARN 应用列表与状态:yarn application -listyarn application -status
    • 终止异常作业:yarn application -kill
  • Web 界面
    • HDFS NameNode:http://:9870
    • YARN ResourceManager:http://:8088
  • 观察要点
    • 队列与应用的 Pending/Running 状态、容器分配与失败重试。
    • NodeManager 的 内存与 vcores 使用率、磁盘与网络 I/O。
    • 是否存在大量 Map/Reduce 失败、数据本地化率低等问题。

四 作业级调优要点

  • 并行度与数据布局
    • 合理设置 mapreduce.job.maps/reduces 或基于数据规模与分片策略控制并发;提高 dfs.blocksize 可降低小文件与元数据压力。
  • 数据本地化
    • 通过 mapreduce.job.locality.wait 控制任务等待本地数据的时长,尽量在数据所在节点执行 Map 任务,减少网络传输。
  • 压缩与 I/O
    • 启用中间与输出压缩:mapreduce.map.output.compressmapreduce.output.fileoutputformat.compress,减少磁盘与网络开销。
  • JVM 与内存
    • 结合容器内存设置 mapreduce.{ map|reduce} .java.opts,通常将堆设为容器内存的 70%–80%,避免 OOM 与频繁 GC。
  • 调度与队列
    • 通过 yarn.scheduler.minimum/maximum-allocation-mbyarn.scheduler.minimum/maximum-allocation-vcores 控制容器规格上下限,减少资源碎片并提升吞吐。

五 快速排障清单

  • 容器申请被拒或长时间 Pending:检查 yarn.scheduler.maximum-allocation-mb/vcores 是否过小、集群资源是否充足、队列配额是否受限。
  • Map/Reduce 频繁失败或 GC 过长:核对 mapreduce.{ map|reduce} .java.opts 与容器内存匹配,适当增大堆或降低并发度。
  • 数据本地化率低:观察作业本地化分布,适当增大 mapreduce.job.locality.wait,并排查数据分布与节点健康。
  • 磁盘或网络瓶颈:结合 dfs.replicationdfs.blocksize 调整数据布局与副本策略,必要时使用更快存储(如 SSD)优化 I/O。

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


若转载请注明出处: Hadoop在Ubuntu上的资源管理
本文地址: https://pptw.com/jishu/757717.html
Ubuntu如何自定义Hadoop参数 Hadoop在Ubuntu上的任务调度

游客 回复需填写必要信息