Spark的基础知识

与Hadoop中的MapReduce计算模型差异

MapReduce:

  • 磁盘IO开销大
  • Map/Reduce表达能力有限,难以描述复杂的数据处理过程
  • 延迟高: 磁盘读写延迟;Map/Reduce分阶段执行导致的延迟
  • 不利于迭代式

Spark:

  • 内存计算(也不是完全在内存,比如shuffle;比如RDD默认存放在内存中,但内存不足时RDD将被写入磁盘)
  • 比Map/Reduce更多的操作模式,不仅实现了Map/Reduce的算子map函数和reduce函数及计算模型,还提供更为丰富的算子,如filter、 join、groupByKey等
  • 基于DAG的调度机制,优化

生态系统(the Berkeley Data Analytics Stack)

Spark Core:包含Spark基本功能

Spark SQL:允许开发人员直接处理RDD,同时也可以查询Hive、HBase等外部数据源

Spark Streaming:实时流数据处理,支持多种数据输入源,如Kafka、Flue、TCP套接字等

GraphX:图计算

MLlib

基本概念

RDD:

  • 将数据拆分为多个分区的集合,储存在集群中的worker node上的内存中,每个分区有计算函数,计算该分区的数据
  • RDD的操作: transformation (lazy),action (non-lazy);对于transformation,RDD不会直接计算结果,仅记录操作,只有遇到action时才进行计算
  • 只读
  • 分区数量可动态变化(数据集可大可小)
  • 可分布式地储存在多台机器的内存中

DAG:

  • 反应RDD间的依赖关系
  • DAGScheduler将DAG划分为多个stage,每个stage由一组并行的task组成
  • 计算向数据靠拢:优先把计算分发到数据所在的节点,减少数据的移动开销

Application:建立在Spark上的用户程序,包含一个driver program和集群上的executors

Driver program: 执行application中的main方法和创建SparkContext的进程

Cluster manager: 在集群上获取资源的外部服务(与Spark运行过程无关),可以是 Spark’s own standalone cluster manager, Apache Mesos,Hadoop YARN 或 Kubernetes,

Worker node:集群中可以运行applicaion的节点,每个worker node上有一个executor,每个executor派生多个线程,执行具体的task

Executor:工作在worker node上的执行task和存储RDD的进程,每个application有自己专属的executor进程

Task:被送到某个executor上的工作单元,一个task包含多个RDD及作用在相应RDD上的各种操作

Job:包含多个task的并行运行,往往由Spark action触发

Stage:每个job被分成相互依赖的多组tasks,每组tasks称为stage

运行架构

一个application由一个driver program和若干个job组成,一个job由多个stage组成,一个stage由多个task组成

  • 当一个application被提交时,首先为这个application构建基本的运行环境,即由driver program创建一个SparkContext,并在之后通过SparkContext主导application的运行
  • SparkContext连接cluster manager,并向其申请资源
  • 启动executor进程
  • SparkContext根据RDD依赖关系构建DAG,DAGScheduler解析成多个stage并计算出stage间依赖关系,然后发送给TaskScheduler
  • TaskScheduler将task分发给executor(计算将数据靠拢原则),同时SparkContext将application的代码发送给executor
  • executor运行task后,将结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放资源

部署模式

standalone

Spark on Mesos

Spark on YARN

Notes

分布式的两种典型架构模式:master-slave pattern / peer-to-peer pattern

Reference

常见的软件架构模式

猜你喜欢

转载自blog.csdn.net/qq_34276652/article/details/113873680