CentOS上HDFS资源管理策略有哪些
小樊
33
2025-11-22 05:15:22
CentOS上HDFS资源管理策略
一 存储与数据布局策略
- 副本策略:通过 dfs.replication 设置副本数(常用为3),在可靠性与存储成本间平衡;对热点或关键数据可适当提高副本数。
- 块大小:依据业务与作业并行度选择 128MB/256MB 等块大小,大文件顺序读写更优,小文件过多会放大 NameNode 内存与元数据压力。
- 纠删码与压缩:对冷数据启用 Erasure Coding 降低存储占用;对传输与落盘密集型任务使用 ZSTD 等压缩提升吞吐与容量效率。
- 小文件治理:合并小文件、采用列式存储或 SequenceFile/Parquet 等容器格式,减轻 NameNode 负担。
- 数据本地化:在调度层面优先将计算任务调度到数据所在节点,减少跨节点网络开销,提升作业性能。
二 容量与配额管理
- 存储空间配额:对目录设置 空间配额(Space Quota),限制其最大占用,防止单租户/项目占满集群。
- 文件数量配额:对目录设置 文件数配额(Name Quota),控制元数据规模,避免 NameNode 过载。
- 配额应用示例:
- 设置目录空间配额为 1GB:
hdfs dfsadmin -setSpaceQuota 1G /path/to/dir
- 设置目录文件数配额为 1000:
hdfs dfsadmin -setQuota 1000 /path/to/dir
- 快照与备份:对关键目录启用 HDFS 快照(Snapshot) 实现时间点保护;结合 DistCp 做跨集群/跨机房复制与迁移。
三 访问与权限控制
- 传统权限模型:使用 hdfs dfs -chmod/-chown 进行用户/组与权限位管理,类似 Linux 权限模型。
- 细粒度授权:通过 ACL(Access Control List) 设置更灵活的访问控制:
- 设置 ACL:
hdfs dfs -setfacl -m user:alice:rwx /path
- 查看 ACL:
hdfs dfs -getfacl /path
- 安全模式:在维护窗口或异常恢复时,利用 安全模式 保护元数据一致性:
- 查看状态:
hdfs dfsadmin -safemode get
- 进入模式:
hdfs dfsadmin -safemode enter
- 离开模式:
hdfs dfsadmin -safemode leave
四 计算资源调度与YARN配置
- 角色边界:HDFS 负责存储与数据管理,YARN 负责任务资源管理与调度,两者协同提供端到端资源治理能力。
- 节点资源上限:在 yarn-site.xml 中配置 yarn.nodemanager.resource.memory-mb(如 8192MB)与 yarn.nodemanager.resource.cpu-vcores(如 4),约束单节点可分配资源总量。
- 容器资源边界:设置 yarn.scheduler.minimum-allocation-mb(如 1024MB)、yarn.scheduler.maximum-allocation-mb(如 8192MB)、以及 vcores 的最小/最大值,避免单个容器过度占用。
- 调度器选择:通过 yarn.resourcemanager.scheduler.class 指定 CapacityScheduler 或 FairScheduler,实现队列化与公平性策略。
五 队列与多租户策略
- 容量调度器(CapacityScheduler):在 capacity-scheduler.xml 定义多队列与容量配额,实现强隔离与上限控制。示例:
- 队列列表:
yarn.scheduler.capacity.root.queues=default,queue1,queue2
- 默认队列容量:
yarn.scheduler.capacity.root.default.capacity=50
- 队列1容量:
yarn.scheduler.capacity.root.queue1.capacity=25
- 队列2容量:
yarn.scheduler.capacity.root.queue2.capacity=25
- 公平调度器(FairScheduler):在 fair-scheduler.xml 配置队列、权重与抢占策略,强调资源使用的公平与弹性。
- 队列应用与监控:提交作业时指定队列(如
-D mapreduce.job.queuename=queue1),并通过 ResourceManager Web UI(端口 8088) 观察队列资源使用与排队情况。