停🤚
不要往下滑了,
默默想5min,
看看这5道面试题你都会吗?
面试题 01、运行在yarn中Application有几种类型的container? 面试题02、Executor启动时,资源通过哪几个参数指定? 面试题 03、一个task的map数量由谁来决定? 面试题04、列出你所知道的调度器,说明其工作原理? 面试题05、导致Executor产生FULL gc 的原因,可能导致什么问题?
以下答案仅供参考:
面试题 01、运行在yarn中Application有几种类型的container?
1)运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时, 可指定唯一的ApplicationMaster所需的资源;
2)运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。
面试题02、Executor启动时,资源通过哪几个参数指定?
1)num-executors是executor的数量
2)executor-memory 是每个executor使用的内存
3)executor-cores 是每个executor分配的CPU
面试题03、一个task的map数量由谁来决定?
一般情况下,在输入源是文件的时候,一个task的map数量由splitSize来决定的
那么splitSize是由以下几个来决定的
goalSize = totalSize / mapred.map.tasks inSize = max {mapred.min.split.size, minSplitSize} splitSize = max (minSize, min(goalSize, dfs.block.size)) 一个task的reduce数量,由partition决定。
面试题04、列出你所知道的调度器,说明其工作原理?
1)FiFo schedular 默认的调度器 先进先出
2)Capacity schedular 计算能力调度器 选择占用内存小 优先级高的
3)Fair schedular 调度器 公平调度器 所有job 占用相同资源
面试题05、导致Executor产生FULL gc 的原因,可能导致什么问题?
可能导致Executor僵死问题,海量数据的shuffle和数据倾斜等都可能导致full gc。
以shuffle为例,伴随着大量的Shuffle写操作,JVM的新生代不断GC, Eden Space写满了就往Survivor Space写,
同时超过一定大小的数据会直接写到老生代,当新生代写满了之后,也会把老的数据搞到老生代,如果老生代空间不足了, 就触发FULL GC,
还是空间不够,那就OOM错误了,此时线程被Blocked,导致整个Executor处理数据的进程被卡住。
总结
今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?
其实做这个专栏我也有私心,就是希望借助每天写一篇面试题,督促自己学习,以免在面试期间尴尬!平时不流汗,面试多流泪!
对了,如果你的朋友也在准备面试
,请将这个系列扔给他,
好了,今天就到这里,学废了的同学,记得在评论区留言:打卡
。给同学们以激励。