Debian下Hadoop资源管理怎样进行
导读:Debian下Hadoop资源管理实践指南 一 核心概念与总体架构 在Hadoop生态中,HDFS负责数据存储,YARN负责资源管理与调度。资源管理的关键是在YARN层面对CPU、内存、容器、队列等进行合理划分与隔离,使作业稳定高效运行。...
Debian下Hadoop资源管理实践指南
一 核心概念与总体架构
- 在Hadoop生态中,HDFS负责数据存储,YARN负责资源管理与调度。资源管理的关键是在YARN层面对CPU、内存、容器、队列等进行合理划分与隔离,使作业稳定高效运行。
- 典型角色分工:
- ResourceManager:集群级资源调度与分配。
- NodeManager:单节点资源上报与容器生命周期管理。
- ApplicationMaster:单个作业资源申请与任务协调。
- 建议准备:每个节点至少4核CPU/16GB内存(生产推荐8核/32GB+),NameNode用SSD≥500GB,DataNode每节点≥2TB,网络千兆以上(高并发推荐万兆)。
二 环境准备与基础配置
- 安装Java(Debian示例):
- 安装OpenJDK 11:
sudo apt update & & sudo apt install openjdk-11-jdk - 或安装OpenJDK 8:
sudo apt install openjdk-8-jdk
- 安装OpenJDK 11:
- 下载并解压Hadoop(示例3.3.6):
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gztar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/ & & sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
- 环境变量(写入
~/.bashrc并source ~/.bashrc):export HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 主机互通与SSH免密(单节点或小规模集群常用):
- 配置
/etc/hosts映射各节点IP与主机名 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsacat ~/.ssh/id_rsa.pub > > ~/.ssh/authorized_keys & & chmod 600 ~/.ssh/authorized_keys
- 配置
- 基础配置要点(
$HADOOP_HOME/etc/hadoop/):- core-site.xml:设置默认文件系统,如
fs.defaultFS=hdfs://namenode:9000 - hdfs-site.xml:副本数(如3)、NameNode/DataNode数据目录
- mapred-site.xml:指定使用YARN:
mapreduce.framework.name=yarn - yarn-site.xml:启用Shuffle服务:
yarn.nodemanager.aux-services=mapreduce_shuffle与对应类。
- core-site.xml:设置默认文件系统,如
三 YARN资源配置与调优
- 容量规划与容器参数(示例为单节点8核/32GB,可按节点资源线性放大):
- 容器内存上限:
yarn.nodemanager.resource.memory-mb=28672(预留系统/容器开销,通常留出2–4GB) - 容器vcore上限:
yarn.nodemanager.resource.cpu-vcores=7(保留1核给系统) - 单个容器内存:
yarn.scheduler.minimum-allocation-mb=2048、yarn.scheduler.maximum-allocation-mb=28672 - 单个容器vcore:
yarn.scheduler.minimum-allocation-vcores=1、yarn.scheduler.maximum-allocation-vcores=7 - Map/Reduce容器内存(可按作业类型微调):
mapreduce.map.memory.mb=4096、mapreduce.reduce.memory.mb=8192 - JVM堆大小(略小于容器内存,留出堆外与本地内存):
mapreduce.map.java.opts=-Xmx3072m、mapreduce.reduce.java.opts=-Xmx6144m - AM内存:
yarn.app.mapreduce.am.resource.mb=4096、yarn.app.mapreduce.am.command-opts=-Xmx3072m
- 容器内存上限:
- 队列与隔离(Capacity/Fair Scheduler二选一或混用):
- Capacity Scheduler(容量调度器):在
capacity-scheduler.xml中定义队列层级、容量百分比、最大容量、ACL与抢占等,实现多租户与资源保障。 - Fair Scheduler(公平调度器):在
fair-scheduler.xml中定义队列、权重、最小/最大资源、抢占与SLA,实现作业间公平共享。
- Capacity Scheduler(容量调度器):在
- 存储与Shuffle:
- 中间数据本地目录:
yarn.nodemanager.local-dirs(多磁盘逗号分隔,提升I/O) - Shuffle服务:确保
yarn.nodemanager.aux-services=mapreduce_shuffle与类org.apache.hadoop.mapred.ShuffleHandler已配置
- 中间数据本地目录:
- 动态资源与容器复用(可选):
- 启用容器重用:
mapreduce.job.ubertask.enable=true(小作业合并执行,降低调度开销) - 动态容器分配:结合YARN Node Labels与Placement Constraints实现CPU/内存异构节点的精细化调度
- 启用容器重用:
- 配置生效与滚动重启:
- 修改后先滚动重启NodeManager,再重启ResourceManager,避免作业中断
- 通过
yarn rmadmin -refreshQueues刷新队列配置(Capacity/Fair)
四 运行监控与日常运维
- 进程与连通性检查:
jps查看进程:应存在ResourceManager、NodeManager、NameNode、DataNode(以及JobHistoryServer若启用)- Web UI:
- HDFS:http://:50070
- YARN:http://:8088
- 队列与资源观测:
yarn queue -status < queue_name>查看队列容量与用量yarn application -list -appStates ALL查看应用状态yarn node -list查看节点资源与已分配/可用资源
- 容量与瓶颈定位:
- 观察Pending应用与Container等待原因(内存/CPU不足、队列配额、数据本地性)
- 结合NodeManager日志与ResourceManager日志定位调度与资源分配异常
- 扩缩容与维护:
- 扩容:新增节点→同步配置→启动DataNode/NodeManager→
yarn rmadmin -refreshNodes与hdfs dfsadmin -refreshNodes - 缩容:先迁移/排空队列→下线节点→执行刷新与数据再平衡(
hdfs balancer)
- 扩容:新增节点→同步配置→启动DataNode/NodeManager→
五 快速验证与示例配置
- 快速验证流程:
- 格式化HDFS:
hdfs namenode -format - 启动服务:
start-dfs.sh、start-yarn.sh - 运行示例:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 2 1000 - 观察YARN UI与日志,确认应用成功完成
- 格式化HDFS:
- yarn-site.xml最小可用示例(启用Shuffle):
< configuration>< property> < name> yarn.nodemanager.aux-services< /name> < value> mapreduce_shuffle< /value> < /property>< property> < name> yarn.nodemanager.aux-services.mapreduce.shuffle.class< /name> < value> org.apache.hadoop.mapred.ShuffleHandler< /value> < /property>< property> < name> yarn.resourcemanager.hostname< /name> < value> resourcemanager-host< /value> < /property>
< /configuration>
- 提示:
- 生产环境请优先使用Capacity/Fair Scheduler进行队列与配额管理,并开启日志聚合与历史服务器以便审计与回溯。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian下Hadoop资源管理怎样进行
本文地址: https://pptw.com/jishu/778309.html
