关闭

Spark内核

标签: spark内核RDD
1481人阅读 评论(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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:52984次
    • 积分:962
    • 等级:
    • 排名:千里之外
    • 原创:39篇
    • 转载:24篇
    • 译文:0篇
    • 评论:23条
    最新评论