spark-core入门:算子,Spark任务执行流程

一、Spark Core概念讲解

Spark Core:内核,也是Spark中最重要的部分。

相当于Mapreduce

SparkCore 和 Mapreduce都是进行离线数据分析

SparkCore的核心:RDD(弹性分布式数据集),由分区组成

二、RDD的五大特性

1、RDD是由一系列的partition组成的。

partition一般有三种方式产生

(1)从Scala集合中创建,通过调用SparkContext#makeRDD或SparkContext#parallelize

是可以指定partition 个数的,若指定了具体值,那么partition的个数就等于该值

对于从 Scala集合中转换而来的RDD:默认的partition数为defaultParallelism,该值在不同的部署模式下不同:

Local 模式:本机 cpu cores 的数量

Mesos 模式:8

Yarn:max(2, 所有 executors 的 cpu cores 个数总和)

对于从外部数据加载而来的 RDD:默认的 partition 数为 min(defaultParallelism, 2)

对于执行转换操作而得到的 RDD:视具体操作而定,如 map 得到的 RDD 的 partition 数与 父 RDD 相同;

union 得到的 RDD的 partition 数为父 RDDs 的 partition 数之和...

(2) 加载外部数据来创建 RDD,例如从 HDFS 文件、mysql 数据库读取数据等

(3)由其它 RDD 执行 transform 操作转换而来

2、函数是作用在每一个partition(split)上的。

partition 是 RDD 的数据单位,代表了一个分区的数据。但这里千万不要搞错了,partition 是逻辑概念,

是代表了一个分片的数据,而不是包含或持有一个分片的数据。

3、RDD之间有一些列的依赖关系。

如下图,可以看到RDD1产生RDD2;RDD2产生RDD3,即RDD分裂时返回的仍是RDD集,

这样就形成了RDD间的层级依赖

4、partitioner是作用在K,V格式的RDD上。

partitioner即分区器,即决定RDD的每一条消息应该分到哪个分区。

但只有 k, v 类型的RDD才能有partitioner(当然,非 key,value类型的RDD的partitioner为None)。

5、RDD提供一系列最佳的计算位置

spark提供了一种机制,在集群中运行任务时,会把task发送到集群中需要读取存储数据的节点来运行,不会将task随意发送到无关节点,这样减少数据节点间网络传输时间,做到计算移动、而数据不移动,实现了最佳计算位置。

RDD特性理解图:

三、 Spark任务执行流程

1、基于standalone-client模式

(1)spark集群启动,Worker节点向Master节点汇报各自资源,master掌握集群资源

(2)在client提交spark应用程序,此时会再client启动一个Driver进程

(3)Driver向Master请求资源,Master收到请求后,在集群中找到符合要求的节点启动Executor

(4)Driver发送task到Worker,Worker上启动的Executor开始执行任务,完成后Driver负责并回收结果

2、基于standalone-cluster模式

standalone-cluster和standalone-client不同的是,client提交任务后,不会再启动Driver,而是Master在集群中找一台节点,即Worker上启动Driver,把Driver分散在集群节点中运行,这样避免了client上提交多个任务而引起的网络流量激增问题。client没有Driver 进程,也看不到task执行情况,以及接收不到输出结果。

3、基于yarn-client模式

yarn-cluste和yarn-client不同的是,client提交任务后,不会再启动Driver,而是RM在集群中找一台节点,即NM上启动Driver,把Driver分散在集群节点中运行,这样避免了client上提交多个任务而引起的网络流量激增问题。client上没有Driver 进程,也看不到task执行情况,以及接收不到输出结果。

术语解释

四、Spark代码流程

(1)创建SparkConf对象

可以设置Applicationname、可以设置运行模式及资源需求。

(2)创建SparkContext对象

(3) 基于Spark的上下文创建一个RDD,对RDD进行处理

(4)应用程序中要有Action类算子来触发Transformation类算子执行。

(5)关闭Spark上下文对象SparkContext。

五、算子操作

1、Transformations转换算子

Transformations类算子是一类算子(函数)叫做转换算子,如map,flatMap,reduceByKey等。Transformations算子是延迟执行,也叫懒加载执行。

2、Action行动算子

Action类算子也是一类算子(函数)叫做行动算子,如foreach,collect,count等。Transformations类算子是延迟执行,Action类算子是触发执行。一个application应用程序中有几个Action类算子执行,就有几个job运行。

3、持久化算子

有时候会多次对同一个RDD进行计算,如果每次只是简单地调用行动算子,spark每次都会重新计算RDD及其所有依赖,这在迭代算法中消耗格外大。为了避免多次计算同一个RDD,spark引入了持久化 算子。

(1)cache

默认将RDD的数据持久化到内存中,cache是懒执行。看spark源码可以知道

chche () = persist()=persist(StorageLevel.Memory_Only),相当于persist的StorageLevel.Memory_Only

(2)persist

可以指定持久化的级别,最常用的是MEMORY_ONLY和MEMORY_AND_DISK,persist是懒执行

(3)checkpoint

checkpoint将RDD持久化到磁盘,还可以切断RDD之间的依赖关系

执行流程:当RDD的job执行完毕后,会从finalRDD从后往前回溯。当回溯到某一个RDD调用了checkpoint方法,会对当前的RDD做一个标记。Spark框架会自动启动一个新的job,重新计算这个RDD的数据,将数据持久化到指定的存储位置上

优化:对RDD执行checkpoint之前,最好对这个RDD先执行cache,这样新启动的job只需要将内存中的数据拷贝到HDFS上就可以,省去了重新计算这一步

最新免费java,架构,大数据AI编程资料获取添加

薇信:18410263200

通过验证填写“111”(备注必填)

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

推荐阅读更多精彩内容