关于Spark框架在大数据生态当中的地位,相信不必多说大家也明白,作为大数据公认的第二代计算引擎,Spark至今仍然占据重要的市场份额,只要提到大数据,那么Spark一定是如影随形的。今天的大数据开发学习分享,我们就主要来讲讲Spark框架核心Spark Core。
Spark Core简介
Spark Core包含Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等。
Spark本身作为一代大数据计算引擎,其核心Spark Core,正是完成计算任务的核心组件,批量的把数据加载到Spark中,然后通过它自带的一系列算子,也就是对数据的一系列操作,将数据转化,计算并最终得到自己想要的数据结果。
比如Transformation算子中的filter算子,就是对数据进行过滤,像过滤掉名字为空,电话号码为空等,都需要用到该算子。
比如Action算子中的saveAsTextFile算子,通常我们的用法就是把计算的结果保存为文本(TXT)格式。
Spark core底层
SparkCore底层是RDD,即弹性分布式分布式数据集,底层又分为多个partition(分区),它本身是不存数据的,只是计算的时候数据存在于RDD中,RDD的产生意味着调用了算子。这样一系列通过调用算子生成的RDD,最终会生成DAG有向无环图。
各个算子之间的依赖分为两种,宽依赖和窄依赖,宽依赖是子RDD的分区依赖于多个父RDD的分区,窄依赖则是子RDD的分区只依赖一个父RDD的分区,这样的依赖关系也就产生的血统的概念。
DAG有向无环图主要是与该Spark程序的执行流程有关。流程如下:
1.当一个Spark应用被提交时,首先需要为这个Spark Application构建基本的运行环境,即由任务节点(Driver)创建一个SparkContext;
2.SparkContext像资源管理器注册并申请运行Executor资源;
3.资源管理器为Executor分配资源并启动Executor进程,Executor运行状况将随着心跳发送到资源管理器上;
4.SparkContext根据RDD的依赖关系生成DAG有向无环图,并提交给DAGScheduler进行解析划分成Stage,并把该Stage中的task组成的Taskset发送给TaskScheduler;
5.TaskScheduler将Task发送到Executor执行,同时SparkContext将应用程序代码发放给Executor。
6.Executor将task丢入到线程池中执行,把执行结果反馈给DAG调度器,运行完毕后写入数据并释放所有资源。
总之,Spark在大数据计算引擎当中,始终占据重要地位,而作为Spark核心的Spark Core,正是Spark学习当中的重难点。