Debian下Hadoop资源管理策略
YARN(Yet Another Resource Negotiator)是Hadoop资源管理的核心,其组件配置直接影响资源分配效率:
yarn.scheduler.minimum-allocation-mb(最小容器内存,默认512MB)、yarn.scheduler.maximum-allocation-mb(最大容器内存,默认8GB)、yarn.resourcemanager.hostname(RM主机名)。yarn.nodemanager.resource.memory-mb,默认8GB)、虚拟CPU核心数(yarn.nodemanager.resource.cpu-vcores,默认8)、虚拟内存与物理内存的比值(yarn.nodemanager.vmem-pmem-ratio,默认2.1,防止单个任务占用过多虚拟内存)。yarn.resourcemanager.am.max-attempts(AM最大尝试次数,默认2)、yarn.am.liveness-monitor.expiry-interval-ms(AM存活监控过期时间,默认10分钟)。YARN支持多种调度器,需根据集群场景选择:
yarn.scheduler.capacity.root.default.capacity设置为50%),保证高优先级队列的资源保障。yarn.scheduler.fair.user-as-default-queue设置为true,按用户划分队列),避免资源饥饿。合理配置资源分配参数是提升集群利用率的关键:
mapreduce.map.memory.mb、mapreduce.reduce.memory.mb),如内存密集型任务可将reduce内存设置为map的2倍;同时需匹配YARN的最大容器内存(yarn.scheduler.maximum-allocation-mb),避免超出限制。yarn.nodemanager.resource.cpu-vcores(如8核节点可设置为8),并根据任务需求调整容器虚拟CPU核心数(yarn.scheduler.minimum-allocation-vcores、yarn.scheduler.maximum-allocation-vcores,如最小1核、最大4核)。spark.dynamicAllocation.enabled(Spark作业)或YARN的动态资源分配功能,根据作业负载自动调整资源,提高集群利用率(如空闲时释放资源,繁忙时分配更多资源)。yarn.log-aggregation-enable设置为true),将各节点的运行日志收集至HDFS中央存储(yarn.nodemanager.remote-app-log-dir设置为/logs),方便集中查看和分析;同时设置日志保留时间(yarn.log-aggregation.retain-seconds,如7天),避免存储溢出。ulimit -n设置为65536)和网络连接数(net.core.somaxconn设置为1024),优化TCP参数(如增大缓冲区大小net.ipv4.tcp_rmem、net.ipv4.tcp_wmem),提升系统吞吐量。