Spark Core

Spark Core是什么

Spark之一行写WordCount: sc.textFile("/home/data.txt").flatMap(_.split("/t")).map((_,1)).reduceBykey(_+_).collect

spark共有5大组件:Spark Core、Spark Streaming、SparkSQL、Spark MLlib和Spark GraphX。

spark core是spark的核心,是一个提供内存计算的框架,其他的四大框架都是基于spark core上进行计算的,所以没有spark core,其他的框架是浮云.

Spark Core工作机制

Spark Core的运行机制

Spark的具体流程:

1.Driver进程启动,会有一些初始化操作,并发送请求到Master上,告知Master有一个新的Spark应用程序要执行--->

2.Master收到Spark的请求之后,会发送给Worker,进行资源的调度和分配,其实就是Executor的分配--->

3.Worker负责内存存储RDD某个或某些partition,启动其他进程和线程,对RDD上的partition进行版型的处理和计算--->

4.Worker启动的进程就叫Executor,Executor开启之后,然后Executor会向最开始的Driver进行发送请求,Driver就知道哪些Executor是为它进行服务的了--->

5.Driver会根据我们对RDD定义的操作,提交一大堆task到Executor上--->

6.Executor接到后Driver返回的task信息后,会按照task信息来启动task的数量--->

7.task就负责执行RDD的partition进行并行的计算,也就是我们在RDD中定义的map.flatMap.reduce等,task对RDD的partition数据指定的算子操作,执行后会产生新的RDD的partition--->

8.然后新的RDD的partition就会又轮回刚刚的步骤,计算新的算子,内存迭代!

Spark Core之RDD

Spark Core的组件叫RDD;

RDD: RDD被称为Spark的基石,它是一个弹性分布式数据集. 弹性:当内存不够用了,可临时放在磁盘上,内存与磁盘可以自动切换;  分布式:分区计算;  容错性:发现数据丢失后,会从元数据里拿那里拿到丢失的数据,这些对于用户都是透明的,也不会损失数据.

Spark Core其实就是在操作RDD: RDD的创建 ->RDD的转换 ->RDD的缓存 ->RDD的行动 ->RDD的输出.....

RDD的创建

RDD的创建分为三种: 从集合创建RDD  /  从外部存储创建RDD  /  从其他创建RDD

从集合创建: Spark提供了两种函数:parallelize和makeRDD

parallelize: 函数的源码如下

def parallelize[T:ClassTag](seq:Seq[T],numSlices:Int =defaultParallelism):RDD[T]

paralelize创建函数

makeRDD: 函数的源码如下

def makeRDD[T:ClassTag](seq:Seq[T],numSlices:Int =defaultParallelism):RDD[T]

makeRDD创建

从外部存储创建RDD: 顾名思义,外部存储,外部存储包括本地的文件系统,还有Hadoop支持的数据集,比如HDFS 、Hbase等

传入一个path路径就行

从其他创建RDD 就是RDD通过算子转换而来得到新的RDD;

RDD处理数据的函数

RDD为什么说是Spark的基石呢?

答:因为它的底层封装了大量易用,强大的处理数据的函数库

下面只是大量函数其中的冰山一角.......


sollect: 将RDD转换成函数数组输出

map:将函数应用于RDD中的每一元素,并返回一个新的RDD


filter: 通过提供的产生boolean条件的表达式来返回符合结果为True的新RDD

flatMap: 将函数应用于RDD中的每一项,并每一项都成了集合,,再将所有集合压成一个大集合


union: 将两个RDD中的元素进行合并,返回一个新的RDD

intersection: 求两个RDD元素的交集,当作一个新的RDD返回

distinct: 对RDD中的元素去重

reduceByKey: 对键相同的value进行合并,这个用的特别多

aggregateByKey: 建了三个分区,找出最大的,相加操作,看起来很多很长,其实是一个侮辱智商的题目..下面那张图解释这个的过程...

下次再加...

Spark Core中的一些名词

Caching: 把RDD缓存到内存,提高处理计算效率,用于重复读写的数据

Cluster Manager:在集群上获取资源的外部服务分别有Standalone, Spark原生的资源管理,Apache Mesos, 和Hadoop Mapreduce兼容性良好的资源调度框架。

Application:用户编写的应用应用程序。

Driver:Application中运行main函数并创建的SparkContext, 创建SparkContext的目的是和集群的ClusterManager通讯,进行资源的申请、任务的分配和监控等。所以,可以用SparkContext代表Driver

Worker:集群中可以运行Application代码的节点。

Executor:某个Application在Worker上面的一个进程,该进程负责执行某些Task,并负责把数据存在内存或者磁盘上。每个Application都各自有一批属于自己的Executor。

Task:被送到Executor执行的工作单元,和Hadoop MapReduce中的MapTask和ReduceTask一样,是运行Application的基本单位。多个Task组成一个Stage,而Task的调度和管理由TaskScheduler负责。

Job:包含多个Task组成的并行计算,往往由Spark Action触发产生。一个Application可以产生多个Job。

Stage:每个Job的Task被拆分成很多组Task, 作为一个TaskSet,命名为Stage。Stage的调度和划分由DAGScheduler负责。Stage又分为Shuffle Map Stage和Result Stage两种。Stage的边界就在发生Shuffle的地方。

RDD:Spark的基本数据操作抽象,可以通过一系列算子进行操作。RDD是Spark最核心的东西,可以被分区、被序列化、不可变、有容错机制,并且能并行操作的数据集合。存储级别可以是内存,也可以是磁盘。

DAGScheduler:根据Job构建基于Stage的DAG(有向无环任务图),并提交Stage给TaskScheduler。

TaskScheduler:将Stage提交给Worker(集群)运行,每个Executor运行什么在此分配。

共享变量:Spark Application在整个运行过程中,可能需要一些变量在每个Task中都使用,共享变量用于实现该目的。Spark有两种共享变量:一种缓存到各个节点的广播变量;一种只支持加法操作,实现求和的累加变量。

宽依赖:或称为ShuffleDependency, 宽依赖需要计算好所有父RDD对应分区的数据,然后在节点之间进行Shuffle。

窄依赖:或称为NarrowDependency,指某个RDD,其分区partition x最多被其子RDD的一个分区partion y依赖。窄依赖都是Map任务,不需要发生shuffle。因此,窄依赖的Task一般都会被合成在一起,构成一个Stage。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,271评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,725评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,252评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,634评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,549评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,985评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,471评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,128评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,257评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,233评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,235评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,940评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,528评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,623评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,858评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,245评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,790评论 2 339

推荐阅读更多精彩内容