Spark详细介绍
来源:互联网 发布:电机控制软件招聘 编辑:程序博客网 时间:2024/06/08 21:53
1.Spark基本模块
- RDD (Resillient Distributed Dataset):弹性分布式数据集
- Task:具体执行的任务。Task(ShuffleMapTask & ReduceTask)
- Job:用户提交的作业。Job(one or more Task)
- Stage:Job分成的阶段。Job(one or more Stage)
- Partition:数据分区。RDD(one or more Partition)
- NarrowDependency:窄依赖,即子RDD依赖于父RDD中固定的Partition。NarrowDepenency(OneToOneDependency & RangeDependency)
- ShuffleDependency:宽依赖(shuffle依赖),即子RDD依赖于父RDD中所有Partition
- DAG(Directed Acycle Graph):有向无环图,用于反应各个RDD之间的依赖关系
2.Spark模块设计
2-1 Spark Core:
Spark的核心功能模块,包括:
SparkContext的初始化(Driver Application通过SparkContext提交)、部署模式、存储体系、任务提交与执行、计算引擎
2-2 Spark SQL:提供SQL处理能力
2-3 Spark Streaming:提供流式处理能力
支持:
Kafka、Flume、Twitter、MQTT、ZeroMQ、Kinesis和简单的TCP套接字等数据源,还提供窗口操作
Spark Streaming详细介绍http://blog.csdn.net/Wee_Mita/article/details/70882318
2-4 GraphX:提供图计算处理能力,支持分布式
Pregel提供的API可以解决图计算中的常见问题
2-5 MLlib:提供机器学习相关的算法,一致的API接口大大降低了用户学习的成本
提供:
基础统计、分类、回归、决策树、随机森林、朴素贝叶斯、保序回归、协同过滤、聚类、维数缩减、特征提取与转型、频繁模式挖掘、语言模型标记语言、管道等
3.Spark模型设计
Spark编程模型
1. 使用SparkContext提供的API(textFile、sequenceFile、runJob、stop)编写Driver Application程序【SQLContext、HiveContext、StreamingContext对SparkContext进行封装,并提供了SQL、Hive、流式计算相关的API】
PS:SparkContext隐藏了网络通信,分布式部署,消息通信,存储能力,计算能力,缓存,测量系统,文件服务,Web服务等
2. SparkContext提交的用户应用程序
2-1 使用BlockManager和BroadcastManager将任务的Hadoop配置进行广播
2-2 由DAGScheduler将任务转换为RDD并组织成DAG
2-3 DAG被划分为不同的Stage
2-4 TaskScheduler借助ActorSystem将任务提交给集群管理器(Cluster Manager)
3. Cluster Manager给任务分配资源(即将具体任务分配到Worker上)
3-1 Worker创建Executor来处理任务的运行
PS:Standalone、YARN、Mesos、EC2可以作为Spark的Cluster Manager
RDD计算模型
- RDD可以看成做是对各种数据计算模型的统一抽象,Spark的计算过程主要是RDD的迭代计算过程。
- RDD的迭代计算过程非常类似于管道,分区数量取决于partition数量的设定。
- 每个分区的数据只会在一个Task中计算,所以分区可以在多个机器节点的Executor上并行执行。
4.Spark基本架构图
Cluster Manager:Spark的集群管理器,主要负责资源的分配与管理
集群管理器分配的资源属于一级分配,它将各个Worker上的内存、CPU等资源分配给应用程序,但并不负责对Executor的资源分配
Worker:Spark的工作节点
对Spark应用程序来说,由集群管理器分配得到资源的Worker节点主要负责以下工作:创建Executor,将资源和任务进一步分配给Executor,同步资源信息给Cluster Manager
Executor:自行计算任务的一线进程
主要负责任务的执行以及与Worker、Driver App的通信
Driver App:客户端驱动程序,也可以理解为客户端应用程序
用于将任务程序转换为RDD和DAG,并与Cluster Manager 进行通信和调度
- Spark详细介绍
- 安装spark集群详细介绍
- spark的工作机制详细介绍、spark源码编译、spark编程实战
- spark介绍
- spark介绍
- spark介绍
- Spark 介绍
- spark 介绍
- Spark介绍
- 详细阅读Spark论文
- OpenFire、Spark、Smack介绍
- spark原理介绍
- Spark 之 简单介绍
- spark原理介绍
- 001-spark生态系统介绍
- spark sql介绍
- Spark原理介绍
- Spark核心类介绍
- 【Bzoj1293】生日礼物
- Linux小知识点
- android ndk环境
- Tomcat
- 金融市场分析的起点:非线性和系统性
- Spark详细介绍
- python函数之参数传递
- 基于MyBatis与Spring MVC开发类知乎的简易问答网站
- 页面加载自动提交表单
- 庆功会(多重背包)
- C#字符串截取学习总结
- 获取服务器操作系统等信息
- QA实习第二周总结
- 计蒜客|节假日