day1112

  1. 1.spark core复习
  2. 任务提交
  3. 缓存
  4. checkPoint
  5. 自定义排序
  6. 自定义分区器
  7. 自定义累加器
  8. 广播变量
  9. Spark Shuffle过程
  10. SparkSQL

一. Spark Core回顾

1 集群启动

  1. Spark集群启动流程:
  2. 1、调用start-alsh脚本,开始启动Master
  3. 2Master启动以后, preStart方法调用了一个定时器,定时的检查超时的Worker.
  4. 3、启动脚本会解析slaves配置文件,找到启动Worker的相应节点,开始启动Worker
  5. 4Worker服务启动后开始调用preStart方法开始向所有的Master进行注册
  6. 5Master接收到Worker发送过来注册信息, Master开始保存注册信息并把自己的url响应给Worker
  7. 6Worker接收到Masterurl后并更新 ,开始调用一个定时器 ,定时的向Master发送心跳信息
  8. 7Master不断的收到心跳信息(WorkerId),Master根据WorkerId去找是否有之前存过的WorkerId对应的WorkerInfo,如果有则更新最后一次心跳信息

2 任务提交

  1. Spark任务提交流程:
  2. 1Driver端会通过spark-sumbit脚本启动SparkSubmit进程,此时创建了一个非常重要的对象
  3. (SparkContext),开始向Master发送信息
  4. 2Master接收到发送过来的信息后开始生成任务信息,并把任务信息放到一个队列里
  5. 3Master把所有有效的Worker过滤出来,按照空闲的资源进行排序
  6. 4Master开始向有效的Worker通知拿取任务信息并启动相应的Executor
  7. 5Worker启动Executor并向Driver反向注册
  8. 6Driver开始把生成的task发送给相应的Executor,Executor开始执行任务
  9. 任务提交划分四个阶段:
  10. ->生成RDD的过程
  11. ->stage划分过程(DAGScheduler)
  12. -> task生成和调度过程(TaskScheduler)
  13. ->Executor执行task过程(在Executor端产生)

3 缓存

  1. 应用场景:接下来的操作会经常用到某个RDD,该RDD最好进行缓存处理
  2. 调用方法:cache,persist
  3. 可以指定缓存级别
  4. 若要存4G,但是只能存2G:按照先存2G.剩余的不存,调用时没有存进去的重新计算,存进去的直接调用

4 checkPoint

  1. 存储的路径:HDFS
  2. 应用场景:为了缩短依赖链条,起到数据容错,最终还是为了提高计算效率,一般在重要的shuffle后需要进行checkpoint
  3. 操作步骤:
  4. |->1:设置checkpoint目录
  5. |->2:将RDD进行cache
  6. |->3:将RDD进行checkpoint

5 自定义排序

  1. 应用场景:为了解决比较复杂的排序需求,(例如:自定义一个对象,里面有多个字段,先按照某个字段进行排序,如果相同,接下来在按照另一个字段进行排序)

6 自定义分区器

  1. 应用场景:Spark的分区器无法实现的业务场景,可以用自定义分区器实现
  2. 实现:需要继承Partition抽象类,实现getPartition,numPartitions方法

7 自定义累加器

  1. 应用场景:有累加的需求,需要将累加的结果赋值给Driver端的某个变量
  2. 注意:累加的变量只能在Driver端,而且是由Executortask进行累加(分布式累加),Executor端无法读取累加值

8 广播变量

  1. 应用场景:Driver端的某个变量的值在分布式计算(task的执行过程中)过程中会经常用到该值,为了提高计算效率,可以用广播变量的方式将变量的值广播到相应的Executor
  2. 注意:
  3. |->1:广播变量不一定会对每个Executor都发送一遍,只是会将变量的值发送给每个节点一次,该节点其他Executor用该变量只会从本节点的Executor取数据,不会从Driver端去拿.如果本节点没有,则遵循就近原则,从离他最近的节点取值.
  4. |->2:广播出去的值不可以后期更改,RDD是无法广播的.

9 Spark Shuffle过程(重要)

  1. shufflemaptaskreducetask,shuffle过程是跨stage
  2. maptask端发生的是shufflewrite过程
  3. reducetask端发生的shuffleread过程

10 SparkSQL

  1. 初始化兑现g:SparkSession
  2. 操作的对象:DataFrame,Dataset
  3. DataFrame = Dataset[Row]:是Dataset的弱类型(自动推断类型),Dataset是强类型(开始就需要指定一个类型)
  4. RDD,DataFrame,Dataset互相转化
  5. 两种操作方式:
  6. |->DSL语言风格:select,filter,where,group by, join, agg(max/min/avg/count...)...
  7. |->SQL语言风格:处理过程:
  8. |->1.生成DataFrame/Dataset
  9. |->2.注册临时表
  10. |->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. Centos7添加磁盘并分区格式化

    1.安装前准备 [root@localhost ~]# yum install xfsprogs [root@localhost ~]# modprobe xfs [root@localhost ~] ...

  2. OAuth 2.0 的四种授权模式

    RFC 6749 OAuth 2.0 的标准是 RFC 6749 文件.该文件先解释了 OAuth 是什么. OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者.......资源 ...

  3. Linux操作系统安全-OpenSSL工具常用命令介绍

    Linux操作系统安全-OpenSSL工具常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.OpenSSL开源项目有三个组件 openssl: 多用途的命令行工具,包 ...

  4. 网络编程socket理论一

    网络通信理论 首先说下网络之间的通信流程看图 Socket 层是位于运输层和应用层之间的,封装好的,方便使用 Socket 是什么和工作流程 Socket是应用层与TCP/IP协议族通信的中间软件抽象 ...

  5. 等了半年的AMD锐龙3000系列台式机处理器今天终于上市开卖了!

    第三代AMD锐龙台式机处理器参数:

  6. Python面试题(1)

    1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reversetempList = [1,2,3,4]tempList.reverse()for x in tempList:    pr ...

  7. 自动化测试框架:jmeter + maven+ jenkins

    原理:jenkins驱动maven执行,maven驱动jmeter执行 前提条件:windows安装了jmeter.maven.tomcat.jenkins 安装方法参考汇总目录中对应的博文:http ...

  8. 记录一次群答问:requests获取cookie

    问题: 为了测试,写的sever,下面仅为set cookie的部分代码 response = make_response('{"code":9420, "msg&quo ...

  9. Spring 整合 JPA

    spring 整合 jpa 客户的基本CRUD 依赖 <properties> <spring.version>4.2.4.RELEASE</spring.version ...

  10. python基础之八:知识小结及补充

    一.python2 与python3 的区别 1.在2中print后可带扣号,也可不带,3中必须带,否则报错! #print 'hello python2' print('hello python3' ...