Spark 统一分布式计算平台(一) 概念及原理介绍

技术背景

2009年诞生于美国加州大学伯克利分校AMP实验室
2013年捐赠给ASF并于2014年成为ASF的顶级项目

设计目的

  • 为了弥补Mapreduce的缺陷,替代mapreduce进行分布式并行计算

  • 补充: Mapreduce的缺陷表现?

  1. 编程方式:
    1. Mapreduce的源码是java语言,Spark的源码是scala语言,更简洁
    2. Mapreduce处理数据只有map和reduce方法API,而spark提供有80多种API处理数据
  2. 运行级别:
    1. mapreduce的task级别是以运行在nodemanager上的maptask和reducetask进程方式,而spark的task级别是以运行在nodemanager上的excuter中的线程方式
  3. 资源申请:
    1. mapreduce中的资源申请是由appmaster根据maptask和reducetask启动时需要的资源每一次去向resourcemanager进行申请,spark中的资源申请是由Driver构建SparkContext去向clusterManager启动excuter时一次申请的资源,spark消耗资源更大,因为spark释放资源不灵活及时,
  4. shuffle过程:
    1. mapreduce每次shuffle必定经过spill,merge,group,sort等固定的过程,不论业务逻辑需不需要,也会有默认的流程,非常影响性能,Spark的shuffle过程,需要哪些可以自己操作,更灵活,更节省时间
  5. 迭代计算:
    1. 多个job参与计算时,mapreduce的每次job的计算结果,会不断地读取磁盘,写入磁盘,将job的中间结果都保存在磁盘文件中,造成磁盘文件的IO过高,性能下降,Spark中的多个job迭代式计算时,中间结果保存在内存中,避免过高的磁盘IO,优化性能

设计思想

分布式并行计算

技术本质

  • 概念: 统一的分布式计算平台
  • 补充:
  1. 统一,平台
    1. 一站式解决服务:
      sprakcore-离线批处理,sparkSQL-sql式数据分析,sparkStream-流式计算,sparkMLlib-机器学习,sparkGraphx-图计算
  2. 分布式
    1. 最终通过RDD分布式弹性数据集来实现分布式计算

核心特性

  1. Speed:
    1. 与Mr相比,Spark基于要比MR快上100倍,Spark基于硬盘要比MR快上10倍,因为Spark不仅基于内存存储和计算,还有DAG执行引擎优化
  2. Ease Of Use:
    1. shell支持python,scala语言
    2. API支持java,python,scala,R
    3. 算法支持超过80多种
  3. Generality
    1. spark提供统一的一站式解决方案
  4. Runs EveryWhere
    1. spark非常好的兼容hadoop平台,例如HDFS,Hbase,Yarn等
    2. spark可以自我管理资源调度,也可交由第三方管理,例如: yarn,mesos,K8S,EC2等

运行模式

Local本地模式

  1. 本地单线程: 没有并行计算
  2. 本地多线程: 可以指定本地几个worker线程进行并行计算,local[*]为使用本机最大cpu核数

StandAlone独立集群模式

  1. client: 客户端
    1. 向master注册并发送job请求
    2. 接受excuter的反向注册
    3. 给excuter分配并跟踪task状态
  2. master: 主节点
    1. 接受客户端注册请求
    2. 申请资源,启动并跟踪excuter状态
  3. worker: 从节点
    1. 启动excuter进程,并分配cpu计算和内存缓存
    2. 向client反向注册并申请task任务

ClusterManager第三方资源管理资源模式

  • 角色:

    1. client: 客户端
      1. 提交任务
    2. resourcemanager: 主节点
      1. 选择一个nm启动am,然后又am启动Driver
    3. NodeManager: 从节点
      1. am启动excuter,并分配task
  • 补充:

  1. yarn-client模式和yarn-cluster模式

    • yarn-client模式指的是Driver程序运行在client上,在哪个客户端提交,Driver就运行在哪个机器上,适用于测试,运行结果会在客户端显示
    • yarn-cluster模式指的是Driver程序运行在由resourcemanager启动的applicationmaster的机器上,适用于生产,避免Driver过于集中在某个机器上,运行结果不能再客户端显示,
  2. 使用on yarn 优点
    yarn的调度模式,可使计算资源按需伸缩,都使用hdfs进行底层共享存储,避免数据跨集群迁移,集群利用率高

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容