spark原理简介

spark原理简介

  • spark简介
           spark是基于内存的分布式处理框架,它把要执行的作业拆分成多个任务,然后将任务分发到多个CPU进行处理,处理结果的中间数据存储在内存中,减少了数据处理过程中对硬盘的I/O操作,大大提升了处理效率。

  • spark和MapReduce对比
           spark相对于mr,性能上提高了100倍。
           spark相对于mr,数据的中间结果存储在内存中,对于数据的迭代处理效率更高;进行批处理的时候效率更高,延迟更低。
           spark相对于mr,提供了更多的数据集操作类型,编程模型比mr更加灵活,开发效率更高。
           spark相对于mr,具有更高的容错能力(血统机制)。

  • Spark的应用运行架构运行流程如下所示
           1. 应用程序(Application)是作为一个进程的集合运行在集群上的,由Driver进行协调。
           2. 在运行一个应用时,Driver会去连接集群管理器(Standalone、Mesos、YARN)申请运行Executor资源,并启动ExecutorBackend。然后由集群管理器在不同的应用之间调度资源。Driver同时会启动应用程序DAG调度、Stage划分、Task生成。
           3. 然后Spark会把应用的代码(传递给SparkContext的JAR或者Python定义的代码)发送到Executor上。
           4. 所有的Task执行完成后,用户的应用程序运行结束。

  • RDD简介
           RDD是spark框架中的一个分布式弹性数据集,可以理解为一个存储数据的数据结构。spark会把所有需要处理的数据加载到RDD中,然后在进行处理,即所有的操作都是基于RDD来进行的,而想要对RDD进行操作,只能在重新生成一个新的RDD。RDD是只读和可分区的,当前RDD默认是存储在内存中的,只有当内存不足的时候,RDD才会溢出到磁盘中的。RDD的算子类型分为transformation和action两种类型,其中transformation属于懒操作算子,其不会立刻出发RDD开始处理计算数据,例如map(func),action是RDD的触发算子类型,该类算子会立刻出发RDD进行计算,例如:foreach(func),print()。
    在这里插入图片描述

  • Shuffle划分
           shuffle是划分DAG(有向无环图)中的stage的标注,也是影响spark作业执行速度的关键因素。RDD的transformation函数分为宽依赖操作和窄依赖操作,宽依赖和窄依赖的区别就是看是否发生shuffle(洗牌)操作。shuffle操作如下图:
    在这里插入图片描述

  • RDD的宽依赖和窄依赖

       窄依赖是指父RDD的每一个分区只能倍子RDD的一个分区使用,表现为父RDD的每一个分区对应一个子RDD分区。如下图:
在这里插入图片描述
       宽依赖是指父RDD的每一个分区可以对应多个子RDD分区,表现为一个父RDD分区可以被多个子RDD分区使用。如下图:
在这里插入图片描述

  • spark程序入口
           SparkContext是spark的入口,相当于程序中main函数;其表示与spark集群的连接,创建RDD,并记录计算结果和配置环境等。
           在spark2.0中,引入了SparkSession的概念,其为用户提供了一个统一的入口,方便用户使用spark的各项功能。SparkSession封装了SparkConf和SparkContext以及SQLContext,方便用户使用spark的各种API。
  • spark原理
    spark架构图,如下
    在这里插入图片描述
            Cluster Manager:在standalone模式中即为Master主节点,控制整个集群,监控worker,在YARN模式中为资源管理器。
           Worker节点:从节点,负责控制计算节点,启动Executor或者Driver。
           Driver: 运行Application 的main()函数。
           Executor:执行器,是为某个Application运行在worker node上的一个进程。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会飞的乌龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值