、架构设计
1. 架构设计图
? ?![](F:\大数据笔记\图片\spark架构设计.jpg)
2. 相关术语名称解释
- RDD(Resilient Distributed DataSet) - partiton(分区) - 算子 - transformation类算子 - Action算子 - 窄依赖 - 宽依赖 - Application - Driver - Cluster Manager - WorkerNode - Exector - Task - Job(作业) - Stage(阶段)
二、spark运行模式与用户交互方式
1. 运行模式
- 即作业以什么样的模式去执行,主要是单击、分布式两种方式的细节选择
? | **序号** | **模式名称** ? ? ? ? ? ? ? ? ? | **特点** ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | **应用场景** ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? | -------- | ------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ? | 1 ? ? ? ?| 本地运行模式(local) ? ? ? ? ? ?| 单台机器多线程来模拟spark分布式计算 ? ? ? ? ? ? ? ? ? ? ? ? ?| 机器资源不够 ?测试验证程序逻辑的正确性 ? ? ? ? ? ? ? ? ? ? ? | ? | 2 ? ? ? ?| 伪分布式模式 ? ? ? ? ? ? ? ? ? | 单台机器多进程来模拟spark分布式计算 ? ? ? ? ? ? ? ? ? ? ? ? ?| 机器资源不够 ?测试验证程序逻辑的正确性 ? ? ? ? ? ? ? ? ? ? ? | ? | 3 ? ? ? ?| standalone(client) ? ? ? ? ? ? | 独立布署spark计算集群 ?自带clustermanager ?driver运行在spark submit ?client端 | 机器资源充分 ?纯用spark计算框架 ?任务提交后在spark submit client端实时查看反馈信息 ?数据共享性弱 ?测试使用还可以,生产环境极少使用该种模式 | ? | 4 ? ? ? ?| standalone(cluster) ? ? ? ? ? ?| 独立布署spark计算集群 ?自带clustermanager ?driver运行在spark worker node端 | 机器资源充分 ?纯用spark计算框架 ?任务提交后将退出spark submit client端 ?数据共享性弱 ?测试和生产环境均可以自由使用,但更多用于生产环境 | ? | 5 ? ? ? ?| spark ?on yarn ?(yarn-client) ?| 以yarn集群为基础 ?只添加spark计算框架相关包 ?driver运行在yarn client上 | 机器资源充分 ?多种计算框架混用 ?数据共享性强 ?任务提交后在yarn client端实时查看反馈信息 | ? | 6 ? ? ? ?| spark ?on yarn ?(yarn-cluster) | 以yarn集群为基础 ?只添加spark计算框架相关包 ?driver运行在集群的am contianer中 | 机器资源充分 ?多种计算框架混用 ?数据共享性强 ?任务提交后将退出yarn client端 | ? | 7 ? ? ? ?| spark ?on mesos/ec2 ? ? ? ? ? ?| 与spark on yarn类似 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 与spark on yarn类似 ?在国内应用较少 ? ? ? ? ? ? ? ? ? ? ? ? ?|
2. 用户交互模式
- spark-shell:spark命令方式来操作spark作业 ? - 多用于简单的学习、测试、简易作业操作。 - spark-submit:通过程序脚本,提交相关的代码、依赖等来操作spark作业。 ? - 最多见的提交任务的交互方式,简单易用、参数齐全。 - spark-sql:通过sql的方式操作spark作业。 ? - sql相关的学习、测试、生产环境研发均可以使用该直接操作交互方式。 - spark-class:最低层的调用方式,其它调用方式多是最终转化到该方式中去提交。 ? - 直接使用较少 - sparkR,sparkPython:通过其它非java、非scala语言直接操作spark作业的方式。 ? - R、python语言使用者的交互方式。
|