Spark 原理性探究及基本操作

来自官网的介绍:

一些比较基础的问题解答:http://spark.apache.org/faq.html

1.Spark是一个与Hadoop数据兼容的快速且通用的处理引擎。它可以通过YARN或Spark的独立模式在Hadoop集群中运行,并且可以在HDFS,HBase,Cassandra,Hive和任何Hadoop InputFormat中处理数据。它旨在执行批处理(类似于MapReduce)和新的工作负载,如流,交互式查询和机器学习。

2.许多组织在数千个节点的集群上运行Spark。我们知道的最大的集群有8000个。就数据大小而言,Spark已经被证明可以工作到PB级。它被用来在1/10的机器上比Hadoop MapReduce快3倍的数据,赢得2014 Daytona GraySort Benchmark,以及分类1 PB几个生产工作量使用Spark来对PB数据进行ETL和数据分析

3.Spark的操作员将数据泄漏到磁盘,如果它不适合内存,允许它在任何大小的数据上运行良好。同样,不符合内存要求的缓存数据集要么溢出到磁盘上,要么在需要时重新计算,这由RDD的存储级别决定

从上面我们可以看到:Spark 具有独立于Hadoop却兼容的执行引擎,处理效率比传统的MapReduce快,可以处理PB级别的文件流,同样皆有MapReduce的特性,比如磁盘罗列,但我们并不想要那么做,这也是MapReduce和Spark 最大的区别,执行的中转流程,Spark走内存,MapReduce走磁盘。

Spark 原理性探究及基本操作

基本语言支持:Python、Scala、|Java(效率低下

交互式对应接口:Pyspark(Python)、Spark(Scala)

RDD(Resilient Distributed Dataset):弹性分布式数据集【Spark基本单位:一个或者多个RDD(RDDs)】
属性:      1.内存数据丢失、则返回上级重新计算,上级丢失,再往上追溯
 2.在集群分布式处理(本地处理原则)
 3.初始数据来之文件或者程序创建【内存数据或者RDD】
 4.大多数的编程逻辑都是针对RDDs进行操作

逻辑流程:RDD---API---->new_RDD----API---->new_RDD

模式下作业执行流程:  

阶段一 请求与分配、
SparkContext 节点初始化逻辑
1. 客户端生成作业信息提交给ResourceManager(RM)【发起请求和代码传送】
2. Resource Manager 收到请求和代码后,开始分配根据所设置的conf参数分配资源,在一个或者多个NodeManager(数据节点管理上启动)启动应用管理Application Master(AM),Application Master开启后开始监听线程,同时开始进程分配Executor(执行器)这里也可以看作是类似执行代码的线程。

【数据本地化操作,可以想象成二级映射,一个Resource Manager---》多个数据节点管理Node Manager---》每一个Node Manager可能对应多个Executor 

【Node Manager 接收到 Resource Manager的分配,启动 Application Master 并初始化作业时,Node Manager所在的设备就称为Driver】

阶段二 Spark数据操作、

1.初始化完成,Node Manager、Application Manager、Resource Manager ,通信和监听建立,开始数据导入

理想状态下的数据操作    【Number】Block_file ->【Number】partition ->

【在整个程序运行中的过程中,Application Manager充当管理者,一方面监听Executor执行器的状态,一方面向Resourec进行资源的分配和释放】

【应该存在一个类似集群资源申请队列的东西,每一个Application 处理数据所需的资源不同】

。。。。。。。。。未完待写。。。。。。。。