1.spark基础概念

hadoop存在问题

  • 基于磁盘,运行慢
  • 函数函数较少,只有map/reduce,不够灵活

spark优点

  • 基于内存,优先存储在内存
  • 使用DAG(有限无环图),优化流程
  • 基于RDD数据集,提供更多的操作函数,且可以基于Scala或Python Shell快速验证原型

Spark技术栈

如下,基于Spark Code常用的组件:

  • Spark SQL SQL方式便捷操作数据集
  • Spark Steaming 流式实时处理框架
  • Mlib 机器学习库,提供常用机器学习算法的spark实现
  • GraphX 图计算库

1.spark基础概念

Spark体系架构

  • 数据存储

基于HDFS文件系统或兼容于HDFS的数据源(HBase/Cassendra等,只需支持MapReduce的InputFormat即可),会将数据封装成RDD数据集

  • 资源管理

支持多种调度器 Hadoop, Apache Mesos, Kubernetes, standalone

  • API

接口基本相同 Scala/Java/Python

核心架构

如下图,Spark集群由Master和多个Worker组成,类似Yarn的AppMaster和YarnChild,Master这里负责协调,具体的任务从Client机器上提交。

具体来说,client执行main入口函数创建SparkContext,并提交集群Job任务来执行,Spark中称为Driver program;每个Worker上可以起多个实例,每个实例为一个Worker Node,这里图中的Worker实际上是Worker Node。

1.spark基础概念

如下图,进一步深入来看执行过程中的概念:

  • 当我们新建一个Spark任务,叫做Application,对应的逻辑写在Applcation Jar包中,然后在Client机器上运行时就会生成一个Driver Propgram,它负责创建SparkContext,具体的执行任务分发到每个Worker Node上,每个Worker Node为不同Application生成不同的Executor来执行。
  • 每个Application包含多个Job,一个Job可分为多个Task并发执行完成,按照执行时机,不同的Task分为不同的组,这就是不同的Stage。
  • 中间过程资源的分配都是依赖资源调度器,即Cluster Manager

1.spark基础概念

架构描述可参考官方文档

原创,转载请注明来自