内核术语:
Application:应用,就是程序员编写的spark代码。
Driver:驱动,就是用来执行main方法的JVM进程,一面会执行一些driver端的代码,如创建sparkContext,设置应用名,设置日志级别。
SparkContext:上下文,用来和clustermanager通信的,并进行资源的申请,任务的分配和监控。
Clustermanager:集群管理器,对于standalone模式就是Master,对于yarn模式就是ResourceManager/ApplicationManager,在集群上做统一资源管理的进程。
Worker:工作节点,是拥有CPU/内存资源的机器,是真正干活的节点。
Executor:运行在Worker中的JVM进程。
RDD:弹性分布式数据集。
DAG,有向无环图,在spark中指代spark程序任务的流程图。DAG的开始是从创建RDD开始,DAG的结束是到Action(比如saveAsTextFile)结束。有几个action操作就有几个DAG。
Job:作业,按照DAG进行执行就形成了job。
Stage,指的是DAG中相互依赖的几个阶段。
Task:一个分区上的一系列操作(pipeline上的一系列流水线操作)就是一个task,同一个stage中的多个task可以并行执行。也就是说task(线程)是运行在executor中的最小单位。
TaskSet:任务集,就是同一个stage中各个task组成的集合。
宽依赖:通常在shuffle之前,比如一个操作只依赖之前的一个操作。
窄依赖:比如在shuffle阶段,需要等待前面所有的操作完成之后才可以进行shuffle操作。
SparkStreaming:流式计算,应用场景如实时大屏,商品推荐,工业大数据(各个设备的运行情况),集群监控(服务器的实时状况),地震实时预警,实时风险控制。随着5G到来,实时场景会越来越多。