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

2021-12-07 09:10:15 浏览数 (1)

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

文章目录
  • 面试题 01、Spark on Mesos中,什么是的粗粒度分配,什么是细粒度分配,各自的优点和缺点是什么?
  • 面试题02、driver的功能是什么?
  • 面试题03、Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
  • 面试题04、Spark中Worker的主要工作是什么?
  • 面试题05、Mapreduce和Spark的都是并行计算,那么他们有什么相同和区别?
  • 总结

停不要往下滑了,

默默想5min,

看看这5道面试题你都会吗?

代码语言:javascript复制
面试题 01、Spark on Mesos中,什么是的粗粒度分配,什么是细粒度分配,各自的优点和缺点是什么?
面试题02、driver的功能是什么?
面试题 03、Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?
面试题04、Spark中Worker的主要工作是什么?
面试题05、Mapreduce和Spark的都是并行计算,那么他们有什么相同和区别?

以下答案仅供参考:

面试题 01、Spark on Mesos中,什么是的粗粒度分配,什么是细粒度分配,各自的优点和缺点是什么?

1)粗粒度:启动时就分配好资源, 程序启动,后续具体使用就使用分配好的资源,不需要再分配资源;优点:作业特别多时,资源复用率高,适合粗粒度;缺点:容易资源浪费,假如一个job有1000个task,完成了999个,还有一个没完成,那么使用粗粒度,999个资源就会闲置在那里,资源浪费。 2)细粒度分配:用资源的时候分配,用完了就立即回收资源,启动会麻烦一点,启动一次分配一次,会比较麻烦。

面试题02、driver的功能是什么?

1)一个Spark作业运行时包括一个Driver进程,也是作业的主进程,具有main函数,并且有SparkContext的实例,是程序的入口点; 2)功能:负责向集群申请资源,向master注册信息,负责了作业的调度,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler, TaskScheduler。

面试题03、Spark技术栈有哪些组件,每个组件都有什么功能,适合什么应用场景?

可以画一个这样的技术栈图先,然后分别解释下每个组件的功能和场景 1)Spark core:是其它组件的基础,spark的内核,主要包含:有向循环图、RDD、Lingage、Cache、broadcast等,并封装了底层通讯框架, 是Spark的基础。 2)SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kafka、Flume、Twitter、Zero和TCP 套接字) 进行类似Map、Reduce和Join等复杂操作,将流式计算分解成一系列短小的批处理作业。 3)Spark sql:Shark是SparkSQL的前身,Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员可以轻松地使用SQL命令进行外部查询, 同时进行更复杂的数据分析。 4)BlinkDB :是一个用于在海量数据上运行交互式 SQL 查询的大规模并行查询引擎,它允许用户通过权衡数据精度来提升查询响应时间,其数据的精度 被控制在允许的误差范围内。 5)MLBase是Spark生态圈的一部分专注于机器学习,让机器学习的门槛更低,让一些可能并不了解机器学习的用户也能方便地使用MLbase。MLBase分为四部分:MLlib、MLI、ML Optimizer和MLRuntime。 6)GraphX是Spark中用于图和图并行计算。huffle操作或者仅有较少shuffle操作的Spark作业,可以大大减少性能开销。

面试题04、Spark中Worker的主要工作是什么?

主要功能:管理当前节点内存,CPU的使用状况,接收master分配过来的资源指令,通过ExecutorRunner启动程序分配任务,worker就类似于包工头, 管理分配新进程,做计算的服务,相当于process服务。 需要注意的是: 1)worker会不会汇报当前信息给master,worker心跳给master主要只有workid,它不会发送资源信息以心跳的方式给mater,master分配的时候就知道work, 只有出现故障的时候才会发送资源。 2)worker不会运行代码,具体运行的是Executor是可以运行具体appliaction写的业务逻辑代码,操作代码的节点,它不会运行程序的代码的。

面试题05、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需要自己管理关系。 4)spark的迭代计算都是在内存中进行的,API中提供了大量的RDD操作如join,groupby等,而且通过DAG图可以实现良好的容错。

总结

今天我们复习了面试中常考的Spark相关的五个问题,你做到心中有数了么?

0 人点赞