大数据开发岗面试复习30天冲刺 - 日积月累,每日五题【Day21】——Spark8

124 阅读3分钟

这是我参与8月更文挑战的第21天,活动详情查看: 8月更文挑战

前言

大家好,我是程序员manor。作为一名大数据专业学生、爱好者,深知面试重要性,很多学生已经进入暑假模式,暑假也不能懈怠,正值金九银十的秋招 接下来我准备用30天时间,基于大数据开发岗面试中的高频面试题,以每日5题的形式,带你过一遍常见面试题及恰如其分的解答。

  相信只要一路走来,日积月累,我们终会在最高处见。 以古人的话共勉:道阻且长,行则将至;行而不辍,未来可期!

在这里插入图片描述

本栏目大数据开发岗高频面试题主要出自大数据技术专栏的各个小专栏,由于个别笔记上传太早,排版杂乱,后面会进行原文美化、增加。

@[toc] 停🤚 不要往下滑了, 默默想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相关的五个问题,你做到心中有数了么? 其实做这个专栏我也有私心,就是希望借助每天写一篇面试题,督促自己学习,以免在面试期间尴尬!平时不流汗,面试多流泪! 对了,如果你的朋友也在准备面试,请将这个系列扔给他, 好了,今天就到这里,学废了的同学,记得在评论区留言:打卡。给同学们以激励。 在这里插入图片描述