Spark核心概念(一)

1.什么是分布式计算

  • 分布式程序:Mapreduce,Spark程序
    1) 多进程:一个程序由多个进程共同实现,不同进程可以运行在不同的机器上
    2)每个进程负责计算的数据是不一样的,都是整体数据的某一部分
    分布式资源
    3)自己基于MapRedeuce或者Spark的api开发的程序。
    这部分主要关心数据处理的逻辑,它如何将提交的程序分成不同的进程运行。

    • MapReduce: MapTask进程:由分片规则决定,基于处理的数据做计算。将文件分成多个分片,并且128M作为一个分片。
      ReduceTask进程:指定
    • Spark:下面说明
  • 分布式资源:Yarn,Standalone、K8s等资源容器
    1)将多台机器的物理资源:CPU、内存、磁盘从逻辑上合并为一个整体
    2)Yarn:每个NameNode管理每台机器的资源,ResouceManager管理所有的NameNode
    3)Standalone:Spark自带的资源管理程序,使用Master和Worker。

  • 实现统一的资源管理
    使用Yarn进行资源管理。因为Yarn作为统一的资源管理平台,不论是MR,Spark还是Flink都能在上面运行,而类似Standalone的资源管理平台只能在Spark上运行,不具备统一性。所以使用Yarn作为统一的资源管理平台能够降低开销成本。

2.Spark on Yarn模式下运行一个程序的据体流程(Standalone模式下ResourceManager为Master,NodeManager为Worker):
1)(SparkContex)首先启动Drive,Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaste
2)然后ResouceManager通知NodeManager构建一个容器启动ApplicationMaster,ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存
3)ApplicationMaste再向Diver确认需要多少资源,确认好资源需求后告知ResouceManager,ResouceManager检查资源是否充足,没有问题后告知ApplicationMaste通知各个NodeManager启动Excuter进程
4)Excuter启动后向Driver申请反向注册形成连接关系(之所以需要反向注册是因为Driver需要和Excuter形成通讯,知道目前资源的使用情况,即时的分配Task)
5)Excuter全部注册完成后,Driver根据提交的程序执行main函数
6)Driver和一行一行的执行代码,对TransfomationRDD进行懒加载,直至触发ActionRDD,形成一个Job,然后基于DAG Scheduler将Job划分出具体的逻辑Task,形成TaskSet(这是一个Task集合,每个Task都会有一个编号,之后Excuter基于任务编号的大小执行Task),这个集合是基于分区和宽窄依赖形成,通过宽依赖(Shuffle)产生不同的Stage,每个Stage内部又基于Stage中RDD的最大分区形成不同的内存迭代计算管道,这些内存迭代计算管道就是具体要执行的Task。之后基于Task Scheduler将DAG Scheduler产生的的逻辑Task分配到物理的Excuter上运行,并对它们进行监控实时反馈给Excutor。

客户端模式下Driver提交任务的具体流程

集群模式下模式下Driver提交任务的具体流程

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值