本栏目大数据开发岗高频面试题主要出自
大数据技术
专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。
停不要往下滑了,
默默想5min,
看看这5道面试题你都会吗?
面试题 01、运行在yarn中Application有几种类型的container?
面试题02、Executor启动时,资源通过哪几个参数指定?
面试题 03、一个task的map数量由谁来决定?
面试题04、列出你所知道的调度器,说明其工作原理?
面试题05、导致Executor产生FULL gc 的原因,可能导致什么问题?
以下答案仅供参考:
1)运行ApplicationMaster的Container:这是由ResourceManager(向内部的资源调度器)申请和启动的,用户提交应用程序时, 可指定唯一的ApplicationMaster所需的资源; 2)运行各类任务的Container:这是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启动之。
1)num-executors是executor的数量 2)executor-memory 是每个executor使用的内存 3)executor-cores 是每个executor分配的CPU
一般情况下,在输入源是文件的时候,一个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决定。
1)FiFo schedular 默认的调度器 先进先出 2)Capacity schedular 计算能力调度器 选择占用内存小 优先级高的 3)Fair schedular 调度器 公平调度器 所有job 占用相同资源
可能导致Executor僵死问题,海量数据的shuffle和数据倾斜等都可能导致full gc。 以shuffle为例,伴随着大量的Shuffle写操作,JVM的新生代不断GC, Eden Space写满了就往Survivor Space写, 同时超过一定大小的数据会直接写到老生代,当新生代写满了之后,也会把老的数据搞到老生代,如果老生代空间不足了, 就触发FULL GC, 还是空间不够,那就OOM错误了,此时线程被Blocked,导致整个Executor处理数据的进程被卡住。
今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?