温馨提示×

Ubuntu HDFS如何进行资源调度与管理

小樊
39
2025-11-23 05:03:51
栏目: 智能运维

Ubuntu 上 HDFS 的资源调度与管理实践

在 Hadoop 生态中,HDFS 负责分布式存储,YARN 负责集群资源管理与调度。实际生产环境中通常在 Ubuntu 20.04/22.04 上部署,通过 YARN 的调度器对 CPU、内存 等资源进行分配,并结合 HDFS 的存储策略保障性能与可靠性。

架构与职责

  • HDFS:由 NameNode(管理元数据与块映射)与 DataNode(存储数据块)构成,默认副本因子为 3,面向高吞吐的批处理场景。
  • YARN:由 ResourceManager(全局资源调度)与 NodeManager(单节点资源与容器管理)构成,承载 MapReduce/Spark 等计算框架的资源请求与隔离。

YARN 资源调度配置步骤(Ubuntu)

  • 配置计算框架使用 YARN:在 $HADOOP_HOME/etc/hadoop/mapred-site.xml 设置
    • mapreduce.framework.name 为 yarn
  • 配置 NodeManager 资源容量:在 yarn-site.xml 设置
    • yarn.nodemanager.resource.memory-mb(如:8192 MB
    • yarn.nodemanager.resource.cpu-vcores(如:8
    • yarn.nodemanager.aux-services 为 mapreduce_shuffle
    • yarn.nodemanager.aux-services.mapreduce.shuffle.class 为 org.apache.hadoop.mapred.ShuffleHandler
  • 配置 ResourceManager 调度边界与队列:在 yarn-site.xml 设置
    • yarn.scheduler.minimum-allocation-mb(如:1024 MB
    • yarn.scheduler.maximum-allocation-mb(如:8192 MB
  • 配置容量调度器队列(capacity-scheduler.xml):定义多租户/多队列与容量
    • yarn.scheduler.capacity.root.queues(如:default,queue1,queue2
    • yarn.scheduler.capacity.root.queue.default.capacity(如:50
    • yarn.scheduler.capacity.root.queue.queue1.capacity(如:30
    • yarn.scheduler.capacity.root.queue.queue2.capacity(如:20
  • 启动与验证
    • 启动:start-dfs.shstart-yarn.sh
    • 验证进程:jps(应见 NameNode、DataNode、ResourceManager、NodeManager
    • 查看 YARN Web:http://:8088
    • 查看节点资源:yarn node -list;查看应用:yarn application -list/-status/-kill

HDFS 存储与数据布局优化(配合资源调度)

  • 块大小:默认 128MB,大文件/长任务可增大(如 256MB)以减少 NameNode 元数据与任务数;小文件密集场景可适当减小(如 64MB)。配置项:dfs.blocksize
  • 副本因子:默认 3,可靠性优先;测试/容量紧张环境可降为 1(权衡容错)。命令:hdfs dfs -setrep 3 /path
  • 小文件治理:合并为 HAR/SequenceFile,降低 NameNode 压力。命令:hadoop archive -archiveName my.har -p /user/input /user/output
  • 数据本地化:在作业侧设置等待本地数据的超时(如 mapreduce.job.locality.wait),减少跨节点网络开销。
  • 压缩:中间与输出启用 Snappy/LZO 等压缩(如 mapreduce.map.output.compressmapreduce.output.fileoutputformat.compress),降低 I/O 与网络。
  • 存储介质:将 HDFS 数据目录配置在 SSD/NVMe 上可显著提升读写性能(视预算与节点规划)。

监控 运维与容量管理

  • 集群健康与容量
    • HDFS:hdfs dfsadmin -report(节点与存储使用)、hdfs fsck /path -files -blocks(块分布与健康)、hdfs dfs -du/-count(目录用量)。
    • YARN:yarn node -list(节点资源)、yarn application -list/-status/-kill(应用生命周期)。
  • 可视化与告警
    • YARN Web:8088;HDFS NameNode Web:50070;SecondaryNameNode:50090(如启用)。
    • 结合 Prometheus/Ganglia 与日志分析,持续观测 GC、网络、磁盘、队列排队 等指标并调参。
  • 日常维护
    • 启用回收站:fs.trash.interval=1440(分钟),误删可于 /user/.Trash/Current 恢复。
    • 数据均衡:使用 start-balancer.sh 平衡块分布,避免热点与容量倾斜。

快速排障清单

  • 资源不足或容器申请失败:核对 yarn.nodemanager.resource.memory-mb/cpu-vcoresyarn.scheduler.minimum/maximum-allocation-mb 的上下界是否合理,必要时调整队列容量或应用并发度。
  • 应用长时间等待调度:检查 队列配额/容量数据本地化 设置,适当增大 locality.wait 或优化数据布局。
  • 小文件导致 NameNode 压力大:合并为 HAR/SequenceFile,并考虑增大 dfs.blocksize 减少文件数量。
  • 磁盘或网络瓶颈:核对 DataNode 数据目录是否在 SSD、集群网络带宽是否充足,并结合监控定位热点节点。

0