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的更多相关文章

  1. Spark Core知识点复习-1

    Day1111 Spark任务调度 Spark几个重要组件 Spark Core RDD的概念和特性 生成RDD的两种类型 RDD算子的两种类型 算子练习 分区 RDD的依赖关系 DAG:有向无环图 ...

  2. Spring知识点复习

    Spring知识点复习 一.专业术语 侵入式设计 引入框架,对现有的类的结构有影响,即需要实现或继承某些特定类.如:Struts框架 非侵入式设计 引入框架,对现有的类结构没有影响.如:Hiberna ...

  3. 大数据笔记(二十七)——Spark Core简介及安装配置

    1.Spark Core: 类似MapReduce 核心:RDD 2.Spark SQL: 类似Hive,支持SQL 3.Spark Streaming:类似Storm =============== ...

  4. Spark Streaming揭秘 Day35 Spark core思考

    Spark Streaming揭秘 Day35 Spark core思考 Spark上的子框架,都是后来加上去的.都是在Spark core上完成的,所有框架一切的实现最终还是由Spark core来 ...

  5. 【Spark Core】任务运行机制和Task源代码浅析1

    引言 上一小节<TaskScheduler源代码与任务提交原理浅析2>介绍了Driver側将Stage进行划分.依据Executor闲置情况分发任务,终于通过DriverActor向exe ...

  6. TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9a7c0a1 转换为 spark.core.IViewport。

    1.错误描述 TypeError: Error #1034: 强制转换类型失败:无法将 mx.controls::DataGrid@9aa90a1 转换为 spark.core.IViewport. ...

  7. Spark Core

    Spark Core    DAG概念        有向无环图        Spark会根据用户提交的计算逻辑中的RDD的转换(变换方法)和动作(action方法)来生成RDD之间的依赖关系,同时 ...

  8. spark core (二)

    一.Spark-Shell交互式工具 1.Spark-Shell交互式工具 Spark-Shell提供了一种学习API的简单方式, 以及一个能够交互式分析数据的强大工具. 在Scala语言环境下或Py ...

  9. Spark Core 资源调度与任务调度(standalone client 流程描述)

    Spark Core 资源调度与任务调度(standalone client 流程描述) Spark集群启动:      集群启动后,Worker会向Master汇报资源情况(实际上将Worker的资 ...

随机推荐

  1. W3C推进SVG规范Ver1.1(中文译稿)—Part I

    转自:http://www.gispark.com/html/GISarticle/2006/1215/826.html Scalable Vector Graphics (SVG) 1.1 Spec ...

  2. How to prove that SAP CRM WebUI is a stateful application

    I create an enhancement in this function module to print out current session id: As long as I do not ...

  3. vmware安装后设置网络

    CentOS安装无法ping 出现Name or service not known   [root@www ~]# ping www.baidu.comping: www.baidu.com: Na ...

  4. windows设置多个JDK环境

    1.查看jdk版本 java -version 2.查看JAVA_HOME和PATH的变量值 echo %JAVA_HOME% set path 3.临时修改环境变量JAVA_HOME和PATH的变量 ...

  5. Kubernetes port-forward

    命令格式: kubectl port-forward <pod_name> <forward_port> --namespace <namespace> --add ...

  6. Java中基本数据类型、不能用浮点数表示金额

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10831763.html 一:8种基本数据类型 8种基本数据类型(4整,2浮,1符,1布): 整型:byte( ...

  7. <人人都懂设计模式>-状态模式

    同样是水,固态,气态,液态的变化,是由温度引起. 引此为思考状态模式. from abc import ABCMeta, abstractmethod # 引入ABCMeta和abstractmeth ...

  8. JMeter【第四篇】参数化

    概念 参数化的原因,并不是网上说的真实模拟不同用户,真实反应服务器性能,而是: 数据唯一性(比如注册名不能一样) 避免数据库查询缓存 如何避免参数化: 去掉唯一性校验的约束 关闭数据库的查询缓存,my ...

  9. 关于ID命名 一个页面唯一

    1.一般ID在一个区域内必须是唯一的.这样是一个规范而且在IE中使用JS通过ID获取这个对象永远只能获取第一个. 2.js无法找到重复的ID,用js获取时,只能得到第一个ID元素,但,如果不同的区域范 ...

  10. React / Ant Design Pro 实现Canvas画布实时自适应

    如何实现canvas根据父容器进行自适应? Ant Design的组件都提供了强大的自适应能力,为了对齐父组件,镶嵌在Ant Design组件里的canvas也需要能根据父级容器进行自适应的能力,页面 ...