设为首页 加入收藏

TOP

Spark详细介绍
2018-12-14 09:06:10 】 浏览:67
Tags:Spark 详细 介绍
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Wee_Mita/article/details/70336530

1.Spark基本模块

  1. RDD (Resillient Distributed Dataset):弹性分布式数据集
  2. Task:具体执行的任务。Task(ShuffleMapTask & ReduceTask)
  3. Job:用户提交的作业。Job(one or more Task)
  4. Stage:Job分成的阶段。Job(one or more Stage)
  5. Partition:数据分区。RDD(one or more Partition)
  6. NarrowDependency:窄依赖,即子RDD依赖于父RDD中固定的Partition。NarrowDepenency(OneToOneDependency & RangeDependency)
  7. ShuffleDependency:宽依赖(shuffle依赖),即子RDD依赖于父RDD中所有Partition
  8. 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计算模型
这里写图片描述

  1. RDD可以看成做是对各种数据计算模型的统一抽象,Spark的计算过程主要是RDD的迭代计算过程。
  2. RDD的迭代计算过程非常类似于管道,分区数量取决于partition数量的设定。
  3. 每个分区的数据只会在一个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 IDE:   System memory..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目