HDFS与YARN在CentOS如何协同工作
小樊
41
2025-12-25 16:15:31
协同工作原理
- HDFS负责分布式存储,YARN负责集群资源管理与作业调度,二者职责分离、协同运行。典型流程为:客户端提交作业到ResourceManager(RM);RM为作业分配首个容器运行ApplicationMaster(AM);AM向RM按需申请Container;各**NodeManager(NM)**在本地创建容器并拉取HDFS上的输入数据执行任务;Map阶段完成后AM再申请容器执行Reduce并将结果写回HDFS;作业结束后AM注销并释放资源。这样实现了“数据在HDFS、计算由YARN调度”的解耦与共享。
部署与集成步骤
- 基础环境(所有节点)
- 安装并统一JDK 8,配置环境变量(如JAVA_HOME);设置主机名/IP映射(/etc/hosts);开启NTP时间同步;建议内网环境关闭firewalld/SELinux或按需放行端口;配置SSH免密登录以便集群启停与分发配置。
- Hadoop安装与配置
- 下载解压Hadoop(如3.3.x),设置HADOOP_HOME与PATH;编辑hadoop-env.sh指定JDK;在core-site.xml配置默认文件系统(如hdfs://:9000);在hdfs-site.xml设置副本数与块大小;在yarn-site.xml指定ResourceManager主机与yarn.nodemanager.aux-services=mapreduce_shuffle;在mapred-site.xml设置mapreduce.framework.name=yarn;将配置同步到所有节点。
- 启动与验证
- 在NameNode执行hdfs namenode -format初始化;启动HDFS:start-dfs.sh;启动YARN:start-yarn.sh;用jps检查进程(应见到NameNode/DataNode/SecondaryNameNode与ResourceManager/NodeManager);通过Web界面查看HDFS NameNode与YARN ResourceManager状态;运行示例作业验证(如wordcount)。
关键配置与调优
- 调度策略
- FIFO:按提交顺序执行,简单但不利于多用户/多队列;Capacity Scheduler:为队列分配固定资源比例,适合多团队/多业务;Fair Scheduler:按需求与历史使用动态均衡,强调公平与共享。可在yarn-site.xml中设置yarn.resourcemanager.scheduler.class与相关队列参数。
- 容器与资源
- 在yarn-site.xml与mapred-site.xml中合理设置容器内存与CPU(如yarn.nodemanager.resource.memory-mb、yarn.scheduler.maximum-allocation-mb、mapreduce.map.memory.mb、mapreduce.reduce.memory.mb等),避免OOM与资源碎片化;结合作业特性设置mapreduce.job.reduces、mapreduce.task.io.sort.mb等以优化Shuffle与I/O。
- HDFS支撑计算
- 依据数据规模与访问模式设置dfs.replication(副本数)与dfs.blocksize(块大小);确保计算节点对HDFS数据具备良好本地性;为YARN与HDFS配置统一的JDK版本与用户,减少权限与兼容性问题。
常见故障排查
- 进程与连通性
- 使用jps核对进程是否齐全;用netstat/ss或浏览器访问NameNode Web(50070/9870)与ResourceManager Web(8088)确认服务就绪;若端口不通,检查firewalld/SELinux与网络策略。
- 配置与版本
- 确认所有节点配置文件一致、JDK版本一致(推荐JDK 8);环境变量(如JAVA_HOME/HADOOP_HOME)在各节点正确生效;修改配置后先停服务、分发再启动,避免不一致。
- 数据与作业
- 作业失败优先查看YARN Application日志与NodeManager日志;数据读写异常检查HDFS权限/副本与磁盘空间;Shuffle/慢作业可从容器资源、并发度与I/O参数入手调优。