当前位置: 首页 > news >正文

yarn面试题

一、名词解释

1. Container(资源容器)

  • 核心定位:YARN 生态的最小资源单元,是物理资源(CPU、内存)的 “封装与隔离载体”。
  • 核心作用
    1. 由 YARN 的 ResourceManager 分配,为后续所有进程(管理 / 执行进程)提供固定资源,避免资源争抢。
    2. 所有进程(Application/Driver、MapTask/ReduceTask、Executor)必须运行在 Container 内,仅能使用其分配的资源。
  • 适用范围:所有依赖 YARN 调度的框架(MapReduce、Spark 等)。

2. Application/Driver(管理进程)

  • 核心定位:单个计算任务的总协调者,负责 “资源申请 - 任务拆分 - 状态监控”。
  • 框架差异
    • MapReduce 中称为 ApplicationMaster(AM)
    • Spark 中称为 Driver
  • 核心作用
    1. 资源申请:向 ResourceManager 申请 “自身运行的管理 Container” 和 “执行进程的执行 Container”。
    2. 任务调度:将计算任务拆分为子任务(如 Spark Task、MapReduce 子任务),分配给执行进程。
    3. 状态监控:监控执行进程运行状态,失败时协调重启。

3. MapTask/ReduceTask(MapReduce 执行进程)

  • 核心定位:MapReduce 框架的具体计算执行者,仅用于 MapReduce 作业。
  • 核心分工
    • MapTask:读取 HDFS 原始数据,做 “转换处理”(过滤、提取字段),输出中间结果到本地磁盘。
    • ReduceTask:拉取 MapTask 中间结果并分组(Shuffle 阶段),做 “聚合计算”(求和、排序),最终结果写入 HDFS。
  • 资源依赖:由 ApplicationMaster 申请 Container 后启动,数量由作业配置(Map 分片数、Reduce 个数)决定。

4. Executor(Spark 执行进程)

  • 核心定位:Spark 框架的计算与缓存载体,仅用于 Spark 应用。
  • 核心作用
    1. 执行 Task:接收 Driver 分配的 Spark Task,完成具体计算。
    2. 数据缓存:支持将中间数据缓存到内存 / 磁盘(如 persist() 操作),减少重复计算。
    3. 资源复用:1 个 Executor 可运行多个 Task(由 --executor-cores 配置),降低进程开销。
  • 资源依赖:由 Driver 申请 Container 后启动,数量和资源(内存、核数)通过 Spark 提交命令(--num-executors--executor-memory)配置。

整体协作逻辑

  1. 用户提交计算任务(如 Spark 应用、MapReduce 作业);
  2. YARN 启动管理进程(Driver/AM),并分配 1 个 “管理 Container”;
  3. 管理进程向 ResourceManager 申请多个 “执行 Container”;
  4. 在 “执行 Container” 内启动执行进程(Executor 或 MapTask/ReduceTask);
  5. 管理进程分配子任务给执行进程,执行进程在 Container 资源限制内完成计算。

二、面试问题

1、程序提交成功,但是不运行,而且不报错,什么问题,怎么解决?

资源问题:application master就没有启动

环境问题:

        nodemanager进程问题:进程存在,但不工作

        机器资源不足导致yarn或者hdfs服务停止:磁盘超过90%,所有服务不再工作

        解决:实现监控告警:80%,邮件告警

2、yarn中程序运行失败的原因遇到过哪些?

        代码逻辑问题

        资源问题:container

                application/driver:管理进程

                maptask和reducetask/executor:执行进程

        解决问题:配置进程给定更多的资源

问题 1:程序已提交 YARN,但是无法运行,报错: Application is added to the scheduler and is not activated. User's AM resource limit exceeded.       

        这个就是资源不足问题设置一下最大资源

        yarn.scheduler.capacity.maximum-am-resource-percent=0.8

        配置文件:${HADOOP_HOME}/etc/hadoop/capacity-scheduler.xml

        属性功能:指定队列最大可使用的资源容量大小百分比,默认为 0.2,指定越大,AM 能使用的资源越多

问题 2:程序提交,运行失败,报错:无法申请 Container

        yarn.scheduler.minimum-allocation-mb=512

        配置文件:${HADOOP_HOME}/etc/hadoop/yarn-site.xml

        属性功能:指定 AM 为每个 Container 申请的最小内存,默认为 1G,申请不足 1G,默认分配 1G,值过大,会导致资源不足,程序失败,该值越小,能够运行的程序就越多

问题 3:怎么提高 YARN 集群的并发度?

        从物理资源、YARN 资源、Container 资源、进程资源解决

物理资源

增加集群节点数量,或升级单节点的 CPU 核数和内存容量

YARN 资源配置

        yarn.nodemanager.resource.cpu-vcores=8单节点可分配的总 CPU 核数上限,定义节点 CPU 资源池大小

        yarn.nodemanager.resource.memory-mb=8192单节点可分配的总内存上限(8GB),定义节点内存资源池大小

Container 资源

        yarn.scheduler.minimum-allocation-vcores=1    单 Container 最少 1 核 CPU

        yarn.scheduler.maximum-allocation-vcores=32     单 Container 最多 32 核 CPU

        yarn.scheduler.minimum-allocation-mb=1024     单 Container 最少 1GB 内存

        yarn.scheduler.maximum-allocation-mb=8192     单 Container 最多 8GB 内存

MR Task 资源

        mapreduce.map.cpu.vcores=1    为每个 MapTask(Map 阶段任务) 分配 1 个 CPU 核心

        mapreduce.map.memory.mb=1024    为每个 MapTask 分配 1024 MB(即 1GB)内存

        mapreduce.reduce.cpu.vcores=1    为每个 ReduceTask(Reduce 阶段任务) 分配 1 个 CPU 核心

        mapreduce.reduce.memory.mb=1024   为每个 ReduceTask 分配 1024 MB(即 1GB)内存

Spark Executor 资源

        --driver-memory   #分配给Driver的内存,默认分配1GB

        --driver-cores   #分配给Driver运行的CPU核数,默认分配1核

        --executor-memory   #分配给每个Executor的内存数,默认为1G,所有集群模式都通用的选项

        --executor-cores   #分配给每个Executor的核心数,YARN集合和Standalone集群通用的选项

        --total-executor-cores NUM   #Standalone模式下用于指定所有Executor所用的总CPU核数

        --num-executors NUM     #YARN模式下用于指定Executor的个数,默认启动2个

http://www.dtcms.com/a/507343.html

相关文章:

  • Android跨进程通信: Binder 进程间通信机制解析
  • 【Day 80】Linux-虚拟化
  • 建设厅官方网站网站主题的分类
  • 广州营销网站建设公司php网站开发实例项目
  • Kubernetes 核心概念解析与集群部署实战(基于 Docker+Flannel)
  • 【课堂笔记】复变函数-6
  • OpenBMC: BmcWeb处理WebScoket1 判断是否为WebSocket
  • 操作系统学习 进程(1)进程的概念与状态
  • Genie Envisioner--智元机器人--世界模型框架--2025.8.7
  • 权威网站有哪些wordpress分类目录浏览权限
  • Vue 缓存之坑,变量赋值方式和响应式数据
  • AWS CloudFormation —— 自动化部署的“云中脚本大师”
  • 响应式网站下载长沙排名推广
  • 【软考备考】 安全协议:SSL/TLS, IPSec 详解
  • 在 HarmonyOS 中平滑切换“点状粒子”与“图片粒子”(含可运行 ArkTS 示例)
  • 海门市规划建设局网站会考网页制作视频教程全集
  • 4-ARM-PEG-Pyrene(2)/Biotin(2),多功能化聚乙二醇修饰荧光标记生物分子的设计与应用探索
  • 做三折页宣传册 网站昆明网上房地产官网
  • redis-7.4.6部署安装
  • CSS学习笔记(五):CSS媒体查询入门指南
  • Redis多线程架构深度解析-从单线程到I/O Threading
  • 掌握 iOS 26 App 性能监控,多工具组合流程与实战指南
  • Spring定时任务中数据未持久化的深度排查指南:从autoCommit到事务管理的终极解法
  • BAT 大厂 java高频面试题汇总:JVM+Spring+ 分布式 +tomcat+MyBatis
  • 宸建设计网站想注册一个做网站的公司好
  • ThingsBoard开源物联网平台实践:从环境搭建到数据可视化
  • 第二章 线性表——课后习题解练【数据结构(c语言版 第2版)】
  • 成都网站建设开发公选择好的软件开发培训班
  • 待学习--中间件
  • Avalonia vs UniApp 全面对比分析