Spark Core知识点复习-2
day1112
1.spark core复习
任务提交
缓存
checkPoint
自定义排序
自定义分区器
自定义累加器
广播变量
Spark Shuffle过程
SparkSQL
一. Spark Core回顾
1 集群启动
Spark集群启动流程:
1、调用start-alsh脚本,开始启动Master
2、Master启动以后, preStart方法调用了一个定时器,定时的检查超时的Worker.
3、启动脚本会解析slaves配置文件,找到启动Worker的相应节点,开始启动Worker
4、Worker服务启动后开始调用preStart方法开始向所有的Master进行注册
5、Master接收到Worker发送过来注册信息, Master开始保存注册信息并把自己的url响应给Worker
6、Worker接收到Master的url后并更新 ,开始调用一个定时器 ,定时的向Master发送心跳信息
7、Master不断的收到心跳信息(WorkerId),Master根据WorkerId去找是否有之前存过的WorkerId对应的WorkerInfo,如果有则更新最后一次心跳信息
2 任务提交
Spark任务提交流程:
1、Driver端会通过spark-sumbit脚本启动SparkSubmit进程,此时创建了一个非常重要的对象
(SparkContext),开始向Master发送信息
2、Master接收到发送过来的信息后开始生成任务信息,并把任务信息放到一个队列里
3、Master把所有有效的Worker过滤出来,按照空闲的资源进行排序
4、Master开始向有效的Worker通知拿取任务信息并启动相应的Executor
5、Worker启动Executor并向Driver反向注册
6、Driver开始把生成的task发送给相应的Executor,Executor开始执行任务
任务提交划分四个阶段:
->生成RDD的过程
->stage划分过程(DAGScheduler)
-> task生成和调度过程(TaskScheduler)
->Executor执行task过程(在Executor端产生)
3 缓存
应用场景:接下来的操作会经常用到某个RDD,该RDD最好进行缓存处理
调用方法:cache,persist
可以指定缓存级别
若要存4G,但是只能存2G:按照先存2G.剩余的不存,调用时没有存进去的重新计算,存进去的直接调用
4 checkPoint
存储的路径:HDFS
应用场景:为了缩短依赖链条,起到数据容错,最终还是为了提高计算效率,一般在重要的shuffle后需要进行checkpoint
操作步骤:
|->1:设置checkpoint目录
|->2:将RDD进行cache
|->3:将RDD进行checkpoint
5 自定义排序
应用场景:为了解决比较复杂的排序需求,(例如:自定义一个对象,里面有多个字段,先按照某个字段进行排序,如果相同,接下来在按照另一个字段进行排序)
6 自定义分区器
应用场景:Spark的分区器无法实现的业务场景,可以用自定义分区器实现
实现:需要继承Partition抽象类,实现getPartition,numPartitions方法
7 自定义累加器
应用场景:有累加的需求,需要将累加的结果赋值给Driver端的某个变量
注意:累加的变量只能在Driver端,而且是由Executor的task进行累加(分布式累加),Executor端无法读取累加值
8 广播变量
应用场景:Driver端的某个变量的值在分布式计算(task的执行过程中)过程中会经常用到该值,为了提高计算效率,可以用广播变量的方式将变量的值广播到相应的Executor中
注意:
|->1:广播变量不一定会对每个Executor都发送一遍,只是会将变量的值发送给每个节点一次,该节点其他Executor用该变量只会从本节点的Executor取数据,不会从Driver端去拿.如果本节点没有,则遵循就近原则,从离他最近的节点取值.
|->2:广播出去的值不可以后期更改,RDD是无法广播的.
9 Spark Shuffle过程(重要)
shuffle分maptask和reducetask,shuffle过程是跨stage的
maptask端发生的是shufflewrite过程
reducetask端发生的shuffleread过程
10 SparkSQL
初始化兑现g:SparkSession
操作的对象:DataFrame,Dataset
DataFrame = Dataset[Row]:是Dataset的弱类型(自动推断类型),Dataset是强类型(开始就需要指定一个类型)
RDD,DataFrame,Dataset互相转化
两种操作方式:
|->DSL语言风格:select,filter,where,group by, join, agg(max/min/avg/count...)...
|->SQL语言风格:处理过程:
|->1.生成DataFrame/Dataset
|->2.注册临时表
|->3.调用上下文的sql方法
Spark Core知识点复习-2的更多相关文章
- Spark Core知识点复习-1
Day1111 Spark任务调度 Spark几个重要组件 Spark Core RDD的概念和特性 生成RDD的两种类型 RDD算子的两种类型 算子练习 分区 RDD的依赖关系 DAG:有向无环图 ...
- Spring知识点复习
Spring知识点复习 一.专业术语 侵入式设计 引入框架,对现有的类的结构有影响,即需要实现或继承某些特定类.如:Struts框架 非侵入式设计 引入框架,对现有的类结构没有影响.如:Hiberna ...
- 大数据笔记(二十七)——Spark Core简介及安装配置
1.Spark Core: 类似MapReduce 核心:RDD 2.Spark SQL: 类似Hive,支持SQL 3.Spark Streaming:类似Storm =============== ...
- Spark Streaming揭秘 Day35 Spark core思考
Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...
- 【Spark Core】任务运行机制和Task源代码浅析1
引言 上一小节<TaskScheduler源代码与任务提交原理浅析2>介绍了Driver側将Stage进行划分.依据Executor闲置情况分发任务,终于通过DriverActor向exe ...
- TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9a7c0a1 转换为 spark.core.IViewport。
1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9aa90a1 转换为 spark.core.IViewport. ...
- Spark Core
Spark Core DAG概念 有向无环图 Spark会根据用户提交的计算逻辑中的RDD的转换(变换方法)和动作(action方法)来生成RDD之间的依赖关系,同时 ...
- spark core (二)
一.Spark-Shell交互式工具 1.Spark-Shell交互式工具 Spark-Shell提供了一种学习API的简单方式, 以及一个能够交互式分析数据的强大工具. 在Scala语言环境下或Py ...
- Spark Core 资源调度与任务调度(standalone client 流程描述)
Spark Core 资源调度与任务调度(standalone client 流程描述) Spark集群启动: 集群启动后,Worker会向Master汇报资源情况(实际上将Worker的资 ...
随机推荐
- 基于windows 10打造的kali工具集
基于windows 10打造的kali工具集.iso,适合于习惯使用windows的安全从业者.if you like it,please touch star! 作为安全从业主,Kali都是必备工具 ...
- 小程序自定义tabbar custom-tab-bar 6s出不来解决方案,cover-view不兼容
1.从微信小程序的官网扣下来的demo,实际测试中,发现6s ios10 系统不兼容,里面的内容出不来 <cover-view class="tab-bar"> < ...
- vue+element创建动态的form表单.以及动态生成表格的行和列
动态创建form表单,网上有插件 (form-create) 不过我不知道它怎么用,没有使用成功,如果你使用成功了,欢迎下方留言. 最后我使用了笨方法,针对各个表单写好通用的组件,然后根据type用v ...
- android studio学习---标签页分离,满足查同一个文件的不同部分
分离一个标签窗口:右键标签页,打开上下文菜单,选择Split Vertically or Split Horizontall改变分离窗口的摆放方式:右键标签页,打开上下文菜单,选择 Change Sp ...
- Nginx+Mysql调优
使用nginx实现反向代理作用,具备负载均衡的功能. 接受客户端的请求 | nginx(宿主机) | |-------------------| web1 web2 (客户机) 原理: 与 ...
- 四步理解GloVe!(附代码实现)
1. 说说GloVe 正如GloVe论文的标题而言,GloVe的全称叫Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & ...
- 01-赵志勇机器学习-Logistics_Regression-train
Logistics Regression 二分类问题. 模型 线性模型 响应 sigmoid 损失函数(显示) 最小均方 优化方法 BGD 例子: #coding utf-8 import numpy ...
- 第二阶段冲刺(个人)——five
今天的计划:优化登录.注册信息的填写判断. 昨天做了什么?做背景. 困难:无
- python基础之五:dict 字典
1.数据类型的划分:可变数据类型.不可变数据类型 不可变的有:元组(tuple).字符(str).整型(int).布尔型(bool) 它们都可以哈希 可变的:列表(list).set.字典(dict) ...
- 【java】new Date什么样
Thu Nov 21 10:39:40 GMT+08:00 2019 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31).getDay() 从 Date 对象返回一周中的某一 ...