温馨提示×

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/SecondaryNameNodeResourceManager/NodeManager);通过Web界面查看HDFS NameNodeYARN ResourceManager状态;运行示例作业验证(如wordcount)。

关键配置与调优

  • 调度策略
    • FIFO:按提交顺序执行,简单但不利于多用户/多队列;Capacity Scheduler:为队列分配固定资源比例,适合多团队/多业务;Fair Scheduler:按需求与历史使用动态均衡,强调公平与共享。可在yarn-site.xml中设置yarn.resourcemanager.scheduler.class与相关队列参数。
  • 容器与资源
    • yarn-site.xmlmapred-site.xml中合理设置容器内存与CPU(如yarn.nodemanager.resource.memory-mbyarn.scheduler.maximum-allocation-mbmapreduce.map.memory.mbmapreduce.reduce.memory.mb等),避免OOM与资源碎片化;结合作业特性设置mapreduce.job.reducesmapreduce.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参数入手调优。

0