关闭

Spark内核

标签: spark内核RDD
1557人阅读 评论(2) 收藏 举报
分类:
一、Spark RDD(Spark弹性分布式数据集)
1. RDD是分布式函数式编程的抽象
2. RDD的弹性:
1. 自动地进行内存和磁盘数据存储的切换
2. 基于Lineage的高效容错
3. Task如果失败,则会自动进行特定次数的重试
4. Stage如果失败,则会进行特定测试的重试,且只会计算失败的分片
5. Checkpoint和Persist(效率和容错的延伸)
6. 数据调度:DAG、Task和资源管理无关
7. 数据分片的高度弹性,repartition
3. 与MapReduce的比较:
1. 共同特征:位置感知、容错、负载均衡
2. 应用抽象:
RDD是基于工作集的应用抽象;
MapReduce是基于数据集的应用抽象(从物理存储设备加载数据,然后操作数据,然后再写入物理存储设备)
不适用的场景:大量的迭代、交互式查询,重点是基于数据流的方式不能复用曾经的结果或者中间计算结果
4. 常规容错的方式:
数据检查点
记录数据的更新:
1. RDD是不可变的 + lazy
2. RDD是粗粒度(RDD的写是粗粒度的,RDD的读可以是粗粒度的,也可以是细粒度的)
5. RDD的缺陷:
不支持细粒度的更新操作
不支持增量迭代计算操作

运用缓存的场景
1. 计算特别耗时
2. 有计算链条
3. Shuffle之后
4. Checkpoint

二、Spark之Map、FlatMap
1. Map:对RDD中的元素逐一进行函数操作映射为另一个RDD
2. FlatMap:将函数应用于RDD中的每个元素,将返回的迭代器的所有内容构成一个新的RDD,这样就得到了一个由各个列表中的元素组成的RDD,而不是一个列表组成的RDD
对于返回可迭代类型的函数Map和FlatMap的区别:
Map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象
FlatMap函数是两个集合的操作(先映射后扁平化):
操作1:同Map函数一样,对每一条输入进行指定的操作,然后为每一条输入返回一个对象
操作2:将上述得到的所有对象合并为一个对象

三、Spark之WordCount

四、使用ZooKeeper构建Spark的高可用
1. ZooKeeper中包含哪些内容:
1) Worker:管理每台机器上的计算资源
2) Driver:代表正在运行的程序
3) Application:应用程序本身
注:1)只有Standby模式的Master恢复了整个集群的状态,才能对外继续提供服务,即:可以接受作业提交和资源申请的请求
2)Master切换过程中不会影响应用程序的运行,因为:程序在运行之前已经向Master申请过资源(粗粒度,一次性分配好资源)了,Driver与所有Wrorker分配的Executors进行通信的过程不需要Master参与

五、Spark内核架构
1. Application = Driver + Executor
Driver是用来驱动Executor,代码为:SparkConf + SparkContext
其中SparkContext在创建过程中做了很多事情,包括:DAGScheduler、TaskScheduler、Scheduler Backend、Spark Environment
Executor具体处理数据分片,内部是线程池并发地处理数据分片
2. Spark Cluster
注:Spark Application的运行不依赖与Cluster Manager
Worker是集群中任何可以运行Application操作代码的节点,不负责代码的运行;
管理当前Node的CPU、资源的使用状况,接受Master分配资源的指令,并通过Exetutor Runner具体启动一个新进程,进程中有Executor
Worker不会向Master汇报资源状况
一个Application中可以有多个Job,一个Action操作就会对应一个Job
3.Spark内核架构图


1
2
查看评论

最详细的整个Spark运行时的内核架构以及架构思考

一: Spark内核架构1,Drive是运行程序的时候有main方法,并且会创建SparkContext对象,是程序运行调度的中心,向Master注册程序,然后Master分配资源。应用程序: Application = Driver(驱动程序) + Executor(执行程序)Driver部分的代...
  • erfucun
  • erfucun
  • 2016-07-19 22:16
  • 1265

Spark 内核解析图

Spark 内核调度架构我们要学习的概念,以及下面这些角色在集群中的功能 Application spark-submit Driver SparkContext Master Worker Executor Job DAGScheduler TaskScheduler ShuffleMapTask...
  • qq_16103331
  • qq_16103331
  • 2016-11-29 18:55
  • 4550

第13课Spark内核架构解密

第一阶段:Spark streaming、spark sql、kafka、spark内核原理(必须有一个大型项目经验); 第二阶段:spark运行的各种环境,各种故障的解决,性能优化(精通spark内核、运行原理); 第三阶段:流处理、机器学习为鳌头,需要首先掌握前两个阶段的...
  • lhui798
  • lhui798
  • 2016-01-17 11:45
  • 515

2017年新春报喜!热烈祝贺王家林老师大数据经典著作《SPARK内核机制解析及性能调优》 畅销书籍 出版上市!

2017年新春报喜!热烈祝贺王家林老师大数据经典著作《SPARK内核机制解析及性能调优》 畅销书籍 出版上市!                     本书致力于Spark内核的深入解析,带领读者...
  • duan_zhihua
  • duan_zhihua
  • 2017-01-22 20:04
  • 1288

第13课 spark内核架构解密学习笔记

第13课 spark内核架构解密学习笔记  2016.01.16 内容: 1.通过手动绘图的方式解密spark内核架构 2.通过案例验证spark内核架构 3.spark架构思考 第一阶段:彻底精通spark 第二阶段:价值千万超大型spark项目:包含所有sp...
  • slq1023
  • slq1023
  • 2016-03-07 01:28
  • 1134

Spark内核源码深度剖析:SparkContext原理剖析与源码分析

SparkContext原理剖析与源码分析。
  • VectorYang
  • VectorYang
  • 2017-07-07 15:56
  • 439

Spark 学习视频汇总

Spark作为一门新推出来大数据技术,成长迅速,前景可期。Spark是对Hadoop MapReduce的补充。随着硬件设备的降价,企业对内存计算需求越来越旺盛,基于内存运算的Spark, 已更好地适用于数据挖掘与机器学习等运算上。Spark 使用Scala 语言实现,Scala可以像操作本地集合对...
  • jasonsun0023
  • jasonsun0023
  • 2015-12-24 09:24
  • 851

第001讲-Spark内核解密:Spark五大功能组件

一、Spark SQL  SQL Core Spark SQL的核心是把已有的RDD,带上Schema信息,然后注册成类似sql里的”Table”,对其进行sql查询。这里面主要分两部分,一是生成SchemaRD,二是执行查询。 生成SchemaRDD 如果...
  • zisheng_wang_DATA
  • zisheng_wang_DATA
  • 2016-01-21 20:26
  • 2578

spark内核揭秘-01-spark内核核心术语解析

spark内核揭秘-01-spark内核核心术语解析 spark内核揭秘-01-spark内核核心术语解析 spark内核揭秘-01-spark内核核心术语解析 spark内核揭秘-01-spark内核核心术语解析
  • stark_summer
  • stark_summer
  • 2015-01-18 09:01
  • 14927

Spark源码系列之Spark内核——Job提交

在介绍Job提交之前,我们先看下Job提交的过程: 看完上图只会,大家应该会有一个比较直观的了解,同时也便于对整个流程的把握。 DAGScheduler 在RDD触发Action算子时,会调用sc.runJob(),以count算子为例: def count(): Long = sc.ru...
  • u010376788
  • u010376788
  • 2015-12-28 12:38
  • 630
    个人资料
    • 访问:64337次
    • 积分:1029
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:23篇
    • 译文:0篇
    • 评论:23条
    最新评论