[大数据][spark]核心原理整理笔记(一)
spark本地模式运行流程

spark yarn模式流程

spark分成几个部分
1、DRIVER
这个部分负责作业的启动监控与结果的收集。一般可以配置让driver端运行在哪里本地或者云上。如果运行在云上对于collect之类的数据收集和日志信息会汇聚在云上不方便调试。
正常都将driver落在本地,执行器和worker放在其他集群控制。这样就能在本地一直接受到所有信息。正因为driver是发起者和结果收集者。所以这部分如果收集的数据过多就很容易oom。所以在执行collect等将数据结果输出的操作要结合driver进程分配的内存来考虑
2、MASTER 也即管理者
作为整个集群的控制器,负责整个集群的正常运行。类似指挥工人合理高效运作的包工头监管。负责控制所有执行器子进程的启停,与任务的分配和执行
3、WORKER
执行作业的子进程。负责接收MASTER的命令与状态监控。播报当前子进程的运行状态
4、Excecutor
负责任务的执行。将算子对分区内的数据进行执行
5、client
即任务的发起
这里我粘贴一下SPARK的各个模块的概念
三种集群模式:
1.Standalone 独立集群
2.Mesos, apache mesos
3.Yarn, hadoop yarn
基本概念:
Application =>Spark的应用程序,包含一个Driver program和若干Executor
SparkContext => Spark应用程序的入口,负责调度各个运算资源,协调各个Worker Node上的Executor
Driver Program => 运行Application的main()函数并且创建SparkContext
Executor => 是为Application运行在Worker node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上。每个Application都会申请各自的Executor来处理任务
Cluster Manager =>在集群上获取资源的外部服务 (例如:Standalone、Mesos、Yarn)
Worker Node => 集群中任何可以运行Application代码的节点,运行一个或多个Executor进程
Task => 运行在Executor上的工作单元
Job => SparkContext提交的具体Action操作,常和Action对应
Stage => 每个Job会被拆分很多组task,每组任务被称为Stage,也称TaskSet
RDD => 是Resilient distributed datasets的简称,中文为弹性分布式数据集;是Spark最核心的模块和类
DAGScheduler => 根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler
TaskScheduler => 将Taskset提交给Worker node集群运行并返回结果
Transformations => 是Spark API的一种类型,Transformation返回值还是一个RDD,所有的Transformation采用的都是懒策略,如果只是将Transformation提交是不会执行计算的
Action => 是Spark API的一种类型,Action返回值不是一个RDD,而是一个scala集合;计算只有在Action被提交的时候计算才被触发。
以上是基础概念
要想很好的使用SPARK需要深入了解SPARK的几个概念细节
1、RDD
2、Transformations / Actions
3、Jobs / Stage
4、Shuffle
5、Cache
因为这些概念网上到处都有我就不在这讲多少了。我就着重记录一下我自己认为比较重要但是缺容易忽视的地方
1、cache会将标记需要缓存的rdd,真正缓存是在第一次被相关action调用后才缓存;unpersisit是抹掉该标记,并且立刻释放内存。
2、持久化级别为MEMORY_ONLY的,会将java对象保存在内存中。如果保存不下就不会保存,以至于每次计算都需要重新计算一遍。这个是cache的持久化策略
3、Spark只要写磁盘,就会用到序列化。除了shuffle阶段和persist会序列化,其他时候RDD处理都在内存中,不会用到序列化。
目前先整理这些。下一次准备开始整理spark streaming

浙公网安备 33010602011771号