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的资 ...
随机推荐
- Astyle格式化插件
可以集成到Visual Studio.Eclipse和source insight当中.下面只介绍集成到source insight 下载地址: https://sourceforge.net/pro ...
- ORACLE隐藏参数查看及修改
查看隐藏参数 select x.ksppinm name, y.ksppstvl value, y.ksppstdf isdefault, decode(bitand(y.ksppstvf,7),1, ...
- Linux Firewalld 基础介绍
互联网上提供了各种网络服务,而防火墙可以设置各种规则来限制访问,保护服务器. 概述 Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙. Linux系 ...
- 使用conda安装tensorflow-gpu
1.之前已经安装了anaconda,之前疏忽使用的pip安装的tensorflow,但pycharm还是使用的anaconda环境. 现在把pip的tensorflow删除了 pip uninstal ...
- Django框架(十)--常用字段、参数、元信息、多对多关联关系
一.ORM字段 # AutoField() int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列 # IntegerField() ...
- Java字符串——String深入
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10840495.html 一:字符串的不可变性 1.可变 与 不可变 辨析 Java中的对象按照创建后,对象的 ...
- Python 的版本控制
版本控制工具的差异 这里介绍几个工具:pyenv.pyvenv. venv.virtualenv.pyenv-virtualenv virtualenv 是针对python的包的多版本管理,通过将py ...
- Magic Master(2019年南昌网络赛E题+约瑟夫环)
目录 题目链接 题意 思路 代码 题目链接 传送门 题意 初始时你有\(n\)张牌(按顺序摆放),每一次操作你将顶端的牌拿出,然后按顺序将上面的\(m\)张牌放到底部. 思路 首先我们发下拿走\(1\ ...
- ESA2GJK1DH1K升级篇: IAP详解
前言: 源码下载链接: https://gitee.com/yang456/STM32_IAP_Learn.git 后期所有出售的升级程序皆在此代码之上进行优化和开发 请必须把此文章各个的地方的说明看 ...
- [RN] React Native 实现 多选标签
React Native 实现 多选标签 效果如下: 实现代码: import React, {Component} from 'react'; import {Button, StyleSheet, ...