1 Spark 了解
- 开发语言:scala
目前支持的应用编程语言如下:
- Scala
- Java
- Python
- Clojure
- R
2 Spark 生态
- Spark Core
(1)有向无环图(DAG)的分布式并行计算框架,并提供Cache机制来支持多次迭代计算或者数据共享,大大减少迭代计算之间读取数据局的开销。
(2)在Spark中引入了RDD (Resilient Distributed Dataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”对它们进行重建,保证了数据的高容错性。
(3)移动计算而非移动数据,RDD Partition可以就近读取分布式文件系统中的数据块到各个节点内存中进行计算
(4)使用多线程池模型来减少task启动开稍
(5)采用容错的、高可伸缩性的akka作为通讯框架
- Spark Streaming
基于微批量方式的计算和处理,可以用于处理实时的流数据。它使用DStream,简单来说就是一个弹性分布式数据集(RDD)系列,处理实时数据。
DStream : 底层通过将RDD在时间轴上拆解成多个小的RDD-macro batch(构建在RDD之上的微批,严格意义上并不是真正的流)。
- Spark SQL
通过JDBC API将Spark数据集暴露出去,而且还可以用传统的BI和可视化工具在Spark数据上执行类似SQL的查询。
- Spark MLlib
是一个可扩展的Spark机器学习库,由通用的学习算法和工具组成,包括二元分类、线性回归、聚类、协同过滤、梯度下降以及底层优化原语
-
Spark GraphX
用于图计算和并行图计算的新的(alpha)Spark API。通过引入弹性分布式属性图(Resilient Distributed Property Graph),一种顶点和边都带有属性的有向多重图,扩展了Spark RDD
3 运行模式
运行环境 | 模式 | 描述 |
Local | 本地模式 | 常用于本地开发测试,本地还分为local单线程和local-cluster多线程; |
Standalone | 集群模式 | 典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持 ZooKeeper来实现HA |
On yarn | 集群模式 | 运行在yarn资源管理器框架之上,由yarn负责资源管理,Spark负责任务调度和计算 |
On mesos | 集群模式 | 运行在mesos资源管理器框架之上,由mesos负责资源管理,Spark负责任务调度和计算 |
On cloud | 集群模式 | 比如AWS的EC2,使用这个模式能很方便的访问Amazon的S3; Spark支持多种分布式存储系统:HDFS和S3 |
4 常用术语
术语 | 描述 |
Application | Spark的应用程序,包含一个Driver program和若干Executor |
SparkContext | Spark应用程序的入口,负责调度各个运算资源,协调各个Worker Node上的Executor |
Driver Program | 运行Application的main()函数并且创建SparkContext |
Executor | 是为Application运行在Worker node上的一个进程,该进程负责运行Task,并且负责将数据存在内存或者磁盘上。 每个Application都会申请各自的Executor来处理任务 |
Cluster Manager | 在集群上获取资源的外部服务 (例如:Standalone、Mesos、Yarn) |
Worker Node | 集群中任何可以运行Application代码的节点,运行一个或多个Executor进程 |
Task | 运行在Executor上的工作单元 |
Job | SparkContext提交的具体Action操作,常和Action对应 |
Stage | 每个Job会被拆分很多组task,每组任务被称为Stage,也称TaskSet |
RDD | 是Resilient distributed datasets的简称,中文为弹性分布式数据集;是Spark最核心的模块和类 |
DAGScheduler | 根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler |
TaskScheduler | 将Taskset提交给Worker node集群运行并返回结果 |
Transformations | 是Spark API的一种类型,Transformation返回值还是一个RDD, 所有的Transformation采用的都是懒策略,如果只是将Transformation提交是不会执行计算的 |
Action | 是Spark API的一种类型,Action返回值不是一个RDD,而是一个scala集合;计算只有在Action被提交的时候计算才被触发。 |
参考链接:
https://www.cnblogs.com/zhaojinyan/p/9395541.html
https://www.cnblogs.com/itboys/p/9201750.html
https://blog.csdn.net/LvJinYang/article/details/102675835
https://www.cnblogs.com/qingyunzong/p/8899715.html
https://blog.csdn.net/weixin_39868387/article/details/104275336?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-11.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-11.nonecase