Ubuntu上Hadoop资源管理最佳实践
硬件是Hadoop集群性能的基础,需根据集群规模(如节点数量、数据量)合理配置:
yarn.nodemanager.resource.memory-mb参数设置(如8GB)。yarn.nodemanager.resource.cpu-vcores参数设置(如4核),以支持并行任务处理。dfs.datanode.data.dir)需挂载至SSD分区,减少I/O瓶颈。dfs.blocksize参数);小文件过多时,启用小文件合并(如HAR或SequenceFile)。dfs.replication参数),平衡数据可靠性与存储开销;测试环境可设为1以节省资源。dfs.namenode.handler.count,如64),提升元数据操作并发能力。yarn.resourcemanager.scheduler.class参数设置。yarn.scheduler.minimum-allocation-mb如1GB、yarn.scheduler.maximum-allocation-mb如8GB),避免资源浪费或过度分配。yarn.nodemanager.resource.memory-mb)和CPU(yarn.nodemanager.resource.cpu-vcores),确保任务并行度与资源利用率。mapreduce.job.maps如集群CPU核心数×2、mapreduce.job.reduces如集群CPU核心数×1.5),最大化并行处理。sum、count操作),减少Reduce阶段输入量(mapreduce.map.output.compress参数开启压缩)。mapreduce.map.java.opts如-Xmx2G、mapreduce.reduce.java.opts如-Xmx4G),避免频繁GC。mapreduce.job.locality.wait参数(如3秒)控制任务等待数据本地化的时间,优先将任务调度至数据所在节点,减少网络传输开销。yarn.scheduler.fair.preemption),确保小作业获得资源;设置队列权重(yarn.scheduler.fair.queueX.weight),保障关键业务资源分配。default、high_priority),分配不同资源比例(如high_priority占30%),隔离不同业务(如生产任务与测试任务)。/var/log/hadoop-*),通过ELK(Elasticsearch+Logstash+Kibana)或Splunk分析错误日志(如GC过长、任务失败),定位性能问题。/tmp目录)、归档旧数据(如HAR文件),释放存储空间;备份NameNode元数据(dfs.namenode.name.dir),防止数据丢失。mapreduce.map.output.compress)和最终输出(mapreduce.output.fileoutputformat.compress)压缩,使用Snappy或LZO算法(快速压缩/解压),减少磁盘I/O和网络传输。-XX:+UseG1GC)和堆大小,降低Full GC频率,避免长时间停顿。hadoop.security.authentication设为kerberos),防止未授权访问;设置HDFS目录权限(如700),限制用户对敏感数据的操作。