Hadoop在Linux中的资源管理方法
在Linux系统中管理Hadoop资源前,需完成基础配置:
JAVA_HOME环境变量(编辑/etc/profile,添加export JAVA_HOME=/usr/local/java,执行source /etc/profile生效)。ssh-keygen -t rsa生成密钥,将公钥复制到所有节点(ssh-copy-id user@node-ip)。/usr/local/hadoop-3.3.1)。Hadoop的资源管理行为由配置文件决定,需修改以下关键文件:
fs.defaultFS,如hdfs://namenode-host:9000)和临时目录(hadoop.tmp.dir)。dfs.replication,默认3,可根据集群规模调整)、NameNode数据目录(dfs.namenode.name.dir)、DataNode数据目录(dfs.datanode.data.dir)。yarn.resourcemanager.hostname)、NodeManager辅助服务(yarn.nodemanager.aux-services设为mapreduce_shuffle,支持MapReduce shuffle)。mapreduce.framework.name设为yarn)。capacity-scheduler.xml(容量调度,支持多队列)或fair-scheduler.xml(公平调度,动态分配资源)配置资源队列及优先级。hdfs namenode -format),清除旧数据(生产环境需谨慎)。start-dfs.sh启动NameNode和DataNode,通过jps命令验证进程是否运行。start-yarn.sh启动ResourceManager和NodeManager。http://namenode-host:50070)查看HDFS状态,ResourceManager Web UI(默认http://resourcemanager-host:8088)查看集群资源分配及应用运行情况。YARN是Hadoop的资源管理器,负责分配集群资源(CPU、内存)给MapReduce、Spark等应用:
yarn-site.xml设置yarn.scheduler.maximum-allocation-mb(单个任务最大内存)、yarn.scheduler.maximum-allocation-vcores(单个任务最大CPU核心数),防止单个任务占用过多资源。default、high_priority),分配队列资源比例(如capacity-scheduler.xml中的yarn.scheduler.capacity.root.default.capacity设为50%),控制不同用户/应用的资源使用权。/etc/cgconfig.conf配置)。HDFS作为分布式存储系统,其资源管理主要围绕数据存储优化:
dfs.replication调整副本数(生产环境通常为3,可根据数据重要性调整),平衡容错性与存储成本。dfs.block.size调整HDFS块大小(如128MB或256MB,大文件适合大块,小文件适合小块),影响NameNode负载及并行处理效率。mapreduce.job.locality.wait参数调整等待时间)。Linux系统层面的调优可提升Hadoop资源利用率:
sysctl vm.swappiness=0禁用swap(避免Hadoop占用磁盘交换空间,影响性能),修改/etc/sysctl.conf永久生效。ulimit -n 65536临时增加,修改/etc/security/limits.conf(添加* soft nofile 65536、* hard nofile 65536)永久生效。net.core.somaxconn=1024增加socket监听队列长度)、磁盘I/O(如vm.dirty_ratio=10控制脏页比例)。yarn application -list查看运行中的应用,yarn application -kill <app_id>终止异常应用;使用hdfs dfsadmin -report查看HDFS节点状态、存储使用情况。$HADOOP_HOME/logs目录),通过ELK(Elasticsearch+Logstash+Kibana)或Fluentd等工具集中分析,快速定位性能瓶颈或故障。