欢迎光临散文网 会员登陆 & 注册

锁屏面试题百日百刷-Spark篇(十一)

2023-03-22 21:46 作者:zjlala96  | 我要投稿

锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:


1.Mapreduce和Spark的都是并行计算,那么他们有什么相同和区别

答:两者都是用mr模型来进行并行计算:

1)hadoop的一个作业称为job,job里面分为map task和reduce task,每个task都是在自己的进程中运行的,当task结束时,进程也会结束。

2)spark用户提交的任务成为application,一个application对应一个sparkcontext,app中存在多个job,每触发一次action操作就会产生一个job。这些job可以并行或串行执行,每个job中有多个stage,stage是shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset有TaskSchaduler

分发到各个executor中执行,executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。

3)hadoop的job只有map和reduce操作,表达能力比较欠缺而且在mr过程中会重复的读写hdfs,造成大量的io操作,多个job需要自己管理关系。

spark的迭代计算都是在内存中进行的,API中提供了大量的RDD操作如join,groupby等,而且通过DAG图可以实现良好的容错。

2.spark工作机制?

答:用户在client端提交作业后,会由Driver运行main方法并创建spark context上下文。

执行add算子,形成dag图输入dagscheduler,按照add之间的依赖关系划分stage输入task scheduler。Task scheduler会将stage划分为task set分发到各个节点的executor中执行。

3.spark的优化怎么做?

答:spark调优比较复杂,但是大体可以分为三个方面来进行,1)平台层面的调优:防止不必要的jar包分发,提高数据的本地性,选择高效的存储格式如parquet,2)应用程序层面的调优:过滤操作符的优化降低过多小任务,降低单条记录的资源开销,处理数据倾斜,复用RDD进行缓存,作业并行化执行等等,3)JVM层面的调优:设置合适的资源量,设置合理的JVM,启用高效的序列化方法如kyro,增大off head内存等等

4.描述Yarn执行一个任务的过程?

1)客户端client向ResouceManager提交Application,ResouceManager接受Application

并根据集群资源状况选取一个node来启动Application的任务调度器driver(ApplicationMaster)

2)ResouceManager找到那个node,命令其该node上的nodeManager来启动一个新的

JVM进程运行程序的driver(ApplicationMaster)部分,driver(ApplicationMaster)启动时会首先向ResourceManager注册,说明由自己来负责当前程序的运行。

3)driver(ApplicationMaster)开始下载相关jar包等各种资源,基于下载的jar等信息决定向ResourceManager申请具体的资源内容。

4)ResouceManager接受到driver(ApplicationMaster)提出的申请后,会最大化的满足

资源分配请求,并发送资源的元数据信息给driver(ApplicationMaster);

5)driver(ApplicationMaster)收到发过来的资源元数据信息后会根据元数据信息发指令给具体机器上的NodeManager,让其启动具体的container。

6)NodeManager收到driver发来的指令,启动container,container启动后必须向driver(ApplicationMaster)注册。

7)driver(ApplicationMaster)收到container的注册,开始进行任务的调度和计算,直到任务完成。

补充:如果ResourceManager第一次没有能够满足driver(ApplicationMaster)的资源请求,后续发现有空闲的资源,会主动向driver(ApplicationMaster)发送可用资源的元数据信息以提供更多的资源用于当前程序的运行。

锁屏面试题百日百刷-Spark篇(十一)的评论 (共 条)

分享到微博请遵守国家法律