图解Spark第一季【全是大厂面试题!】

Spark作为大数据计算平台后起之秀,在2014年打破了Hadoop保持的基准排序记录,使用206个节点在23分钟里完成了100TB数据的排序,而Hadoop则是使用2000个节点在72分钟的时间里完成同样数据的排序。也就是说,Spark仅用了十分之一的计算资源,获得了比Hadoop快3倍的速度。

为什么速度如此之快?让我们首先探讨一下Spark的底层架构设计,揭示其中的精妙之处。

一、Spark架构设计

面试官:你知道Spark架构吗?

标准答案:我知道的,Spark架构包括控制节点Driver,以及工作节点Executor和集群资源管理器。其中,Diver是整个架构的老大,主要负责资源申请以及任务分配等工作;Executor是一个JVM进程,专门用于计算;集群资源管理器可以是 Spark 自带的资源管理器, 也可以是 YARN 或 Mesos 等资源管理框架。总结一下,Spark 采用主从架构, 包含一个 Master(即Driver)和若干个 Worker。

如果面试官继续追问:这种架构相比Hadoop有什么优势?

标准答案:与Hadoop MapReduce 计算框架相比,Spark 所采用的 Executor 有两个优点:一是利用多线程来执行具体的任务,减少任务的启动开销,而MapReduce采用的是多进程模型;二是 Executor 中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备(默认使用内存,当内存不够时,会写到磁盘),当需要多轮迭代计算时,可以将中间结果存储到这个存储模块里,下次需要时,就可以直接读该存储模块里的数据,而不需要读写到 HDFS 等文件系统里,因而有效地减少了 I/O 开销,

如果面试官继续追问:Application、Job、Stage、Task之间的联系是什么?

标准答案:总体而言,在 Spark 中,一个应用(Application)包含若干个作业(Job),一个作业由多个阶段(Stage)构成,一个阶段由多个任务(Task)组成。

如果面试官继续追问:Spark如何运行这些作业?

二、Spark运行基本流程

标准答案:

  1. 当一个 Spark 应用被提交时,首先需要为这个应用构建基本的运行环境,即由任务控制节点 (Driver)创建一个 SparkContext 对象,由 SparkContext 负责与资源管理器(Cluster Manager)的通信以及进行资源的申请、任务的分配和监控等,SparkContext 会向资源管理器注册并申请运行 Executor的资源,SparkContext 可以看成是应用程序连接集群的通道。
  2. 资源管理器为Executor分配资源,并启动Executor进程,Executor运行情况将随着心跳发送到资源管理器上。
  3. SparkContext根据RDD的依赖关系构建DAG图,并将DAG图提交给 DAG 调度器(DAGScheduler)进行解析,将 DAG 图分解成多个阶段(每个阶段都是一个任务集),并且计算出各个阶段之间的依赖关系,然后把一个个“任务集”提交到底层的任务调度器(TaskScheduler)进行处理;Executor 向 SparkContext 申请任务,任务调度器将任务分发给 Executor 运行,同时,SparkContext 将应用程序代码发放给 Executor。
  4. 任务在 Executor 上运行,把执行结果反馈给任务调度器,然后反馈给 DAG 调度器,运行完毕后写入数据并释放所有资源

#数据人的面试交流地##牛客在线求职答疑中心##大数据开发##面试经验#
全部评论

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
你找工作的时候用AI吗?
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
真烦好烦真烦:豆包润色了自己没看看吗,再说了,都说豆包是愚蠢且勤快的大学生,ds才是聪明的研究生,怎么敢让豆包写论文的
你们的毕业论文什么进度了
点赞 评论 收藏
分享
评论
6
41
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务