美文网首页spark
Spark面试知识点

Spark面试知识点

作者: Movle | 来源:发表于2020-07-24 22:48 被阅读0次

    一.Spark架构

    1.Spark架构中的组件

    (1)Client:提交应用的客户端
    (2)Driver:执行Application中的main函数并创建SparkContext
    (3)ClusterManager:在YARN模式中为资源管理器。在Standalone模式中为Master(主节点),控制整个集群。
    (4)worker:从节点,负责控制计算节点。启动Executor或Driver,在YARN模式中为NodeManager
    (5)Executor:在计算节点上执行任务的组件
    (6)SparkContext:应用的上下文,控制应用的生命周期
    (7)RDD:弹性分布式数据集,spark的基本计算单元,一组RDD可形成有向无环图。
    (8)DAG Scheduler:根据应用构建基于stage的DAG,并将Stage提交给Task Scheduler
    (9)Task ScheduIer:将Task分发给Executor执行
    (10)SparkEnv:线程级别的上下文,存储运行时重要组件的应用,具体如下:
    * SparkConf:存储配置信息。
    * BroadcastManager:负责广播变量的控制及元信息的存储
    * BlockManager:负责Block的管理、创建和查找
    * MetricsSystem:监控运行时的性能指标。
    * MapOutputTracker:负责shuffle元信息的存储
    

    2.spark架构揭示了spark的具体流程如下:

    (1)用户在Client提交了应用
    (2)Master找到Worker,并启动Driver
    (3)Driver向资源管理器(YARN模式)或者Master(standalone模式)申请资源,并将应用转化为RDD Graph
    (4)DAG Scheduler将RDD Graph转化为Stage的有向无环图提交给Task Scheduler
    (5)Task ScheduIer提交任务给Executor执行
    

    二.RDD

    1.Spark弹性数据集RDD有两种创建方式:

    (1)从文件系统输入(如HDFS)
    (2)从已存在的RDD转换得到新的RDD
    

    2.RDD的两种操作算子

    (1)Transformation(变换)
    * Transformation类型的算子不是立刻执行,而是延迟执行。也就是说从一个RDD变换为另一个RDD的操作需要等到Action操作触发时,才会真正执行。
    (2)Action(行动)
    * Action类型的算子会触发spark提交作业,并将数据输出到spark系统。
    

    3.RDD依赖

    (1)窄依赖:
    如果RDD的每个分区最多只能被一个Child RDD的一个分区使用,则称之为窄依赖(narrowdependency);
    (2)宽依赖:
    若多个Child RDD分区都可以依赖,则称之为宽依赖(widedependency)。
    

    4.RDD特性总结

    (1)RDD是不变的数据结构存储
    (2)RDD将数据存储在内存中,从而提供了低延迟性
    (3)RDD是支持跨集群的分布式数据结构
    (4)RDD可以根据记录的Key对结构分区
    (5)RDD提供了粗粒度的操作,并且都支持分区
    

    5.算子分类

    根据所处理的数据类型及处理阶段的不同,算子大致可以分为如下三类:
    (1)处理value数据类型的Transformation算子;这种变换并不触发提交作业,处理的数据项是value型的数据
    (2)处理Key-Value数据类型的Transfromation算子;这种变换并不触发提交作业,处理的数据项是Key-Value型的数据对。
    (3)Action算子:这类算子触发SparkContext提交作业
    

    三.Spark机制原理

    1.Spark运行模式

    (1)Spark运行模式分为:Local,Standalone,Yarn,Mesos
    (2)根据Spark Application的Driver Program是否在集群中运行,Spark应用的运行方式又可以分为Cluster模式和Client模式
    

    2.Spark应用的基本概念

    (1)SparkContext:spark应用程序的入口,负责调度各个运算资源,协调各个Worker Node上的Executor
    (2)DriverProgram:运行Application的main()函数并创建SparkContext
    (3)RDD:RDD是Spark的核心数据结构,可以通过一系列算子进行操作。当RDD遇到Action算子时,将之前的所有算子形成一个有向无环图(DAG)。再在Spark中转化为Job,提交到集群执行。一个App中可以包含多个Job。
    (4)Worker Node:集群中任何可以运行Application代码的节点,运行一个或多个Executor进程
    (5)Executor:为Application运行在Worker Node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上。每个Application都会申请各自的Executor来处理任务。
    

    3.Spark应用(Application)执行过程中各个组件的概念:

    (1)Task(任务):RDD中的一个分区对应一个Task,Task是单个分区上最小的处理流程单元。
    (2)TaskSet(任务集):一组关联的,但相互之间没有Shuffle依赖关系的Task集合。
    (3)Stage(调度阶段):一个TaskSet对应的调度阶段。每个Job会根据RDD的宽依赖关系被切分很多stage,每个stage都包含一个TaskSet。
    (4)Job(作业):由Action算子触发生成的由一个或多个stage组成的计算作业
    (5)Application:用户编写的Spark的应用程序,由一个或多个Job组成。提交到Spark之后,Spark为Application分配资源,将程序转换并执行。
    (6)DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler。
    (7)TaskScheduler:将Taskset提交给Worker Node集群运行并返回结果。
    
    Spark基本概念之间的关系

    4.Spark应用执行机制概要

    Spark执行流程

    四.Spark内核

    1.Spark Core内模块概述

    (1)Api:Java、Python及R语言API的实现
    (2)BroadCast:包含广播变量的实现
    (3)Deploy:spark部署与启动运行的实现
    (4)Executor:worker节点负责计算部分的实现
    (5)Metrics:运行时状态监控的实现
    (6)Network:集群通信实现
    (7)Partial:近似评估代码。
    (8)Serializer:序列化模块
    (9)Storage:存储模块
    (10)UI:监控界面的代码逻辑实现。
    
    Spark代码布局

    2.Spark Core外模块概述

    (1)Begal:Pregel是Google的图计算框架,Begal是基于Spark的轻量级Pregel实现。
    (2)MLlib:机器学习算法库。
    (3)SQL:SQL on Spark,提供大数据上的查询功能。
    (4)GraphX:图计算模块的实现
    (5)Streaming:流处理框架Spark Streaming的实现
    (6)YARN:Spark on YARN的部分实现
    

    五.Spark SQL

    相关文章

      网友评论

        本文标题:Spark面试知识点

        本文链接:https://www.haomeiwen.com/subject/rgpslktx.html