深入理解Spark——准备篇

跟踪源码

spark-shell -> spark-submit -> spark-class

spark-shell
spark-submit
spark-class

SparkSubmit -> repl.Main -> ILoop ( SparkILoop ).process -> loadFiles ( initializeSpark ( createSparkSession ) ) -> printWelcome

repl.Main
ILoop.process
SparkILoop.loadFiles
SparkILoop.initializeSpark

Spark设计理念与基本架构

Hadoop MRv1

MRv1 示意图

组成部分

1.运行环境:JobTracker 和 TaskTracker

2.编程模型:MapReduce

3.数据处理引擎:Map Task 和 Reduce Task

缺点

1.JobTracker 既负责 资源管理 又负责 任务调度,容易成为瓶颈。

2.单 Master,容易down。

3.TaskTracker 采用 slot 等量划分本节点上的资源量( CPU、内存 )。slot 分为 Map slot 和 Reduce slot , MapTask 只能用 Map slot,ReduceTask 只能用 Reduce slot。有时会 MapTask 较多时,而 Reduce Task 还没有被调度,这时 Reduce slot 会被闲置。

Hadoop MRv2

MRv2 示意图

改进

1.JobTracker被拆分成了通用的资源调度平台(ResourceManager RM)和负责各个计算框架的任务调度模块(ApplicationMaster AM)。

2.MRv2 中核心不再是 MapReduce,而是Yarn,MapReduce 框架时可插拔的,可以用 Spark、Storm 替代。

缺点

对HDFS的频繁操作(包括计算结果持久化、数据备份以及 shuffle )导致磁盘 I/O 成为系统性能的瓶颈。只适合离线的数据处理,不具备实时处理的能力。


Spark

基本概念

RDD:弹性分布式数据集

Task:具体执行的任务。分为 ShuffleMapTask 和 ResultTask两种,两者分别对应与 Hadoop 中的 Map 和 Reduce。

Job:用户提交的作业。

Stage:Job分成的阶段。根据依赖划分 Stage 。

Partition:数据分区。一个RDD数据可以被划分成多个 Partition。

NarrowDependency:窄依赖,即子 RDD 依赖于 RDD 中固定的 Partition。分为OneToOneDependency 和 RangeDependency 两种。

ShuffleDependency:shuffle依赖,宽依赖。子 RDD 对父 RDD 中的所有 Partition 都有依赖。

DAG:有向无环图。反映各 RDD 之间的依赖关系。

核心功能

SparkContext

Driver Application 的执行与输出都是通过 SparkContext 来完成的。

①内置的 DAGScheduler 负责创建 Job,将 DAG 中的 RDD 划分到不同的 Stage,提交 Stage 等功能。

②内置的 TaskScheduler 负责资源的申请、任务的提交以及请求集群对任务的调度等工作。

存储体系

优先考虑使用各个节点的内存作为存储。Spark 还提供了以内存为中心的高容错的分布式文件系统 Tachyon 供用户进行选择。Tachyon 能够为 Spark 提供可靠的内存级的文件共享服务。

计算引擎

由 SparkContext 中的 DAGScheduler、RDD以及具体节点上的 Executor 负责执行的 Map 和 Reduce 任务组成。DAGScheduler 和 RDD 虽然位于 SparkContext 内部,但是在任务正式提交与执行之前会将 Job 中的 RDD 组成DAG,决定了执行阶段任务的数量、迭代计算、shuffle 等过程。

部署模式

SparkContext 的 TaskScheduler 组件中提供了对 Standalone 部署模式的实现和 Yarn、Mesos 等分布式资源管理系统的支持。除此之外,还提供了 Local 模式便于开发和调试。

编程模型

代码执行过程

1.使用 SparkContext 提供的API 编写 Driver application程序。

2.使用 SparkContext 提交用户编写的 Driver application程序。具体:

①使用 BlockManager 和 BroadcastManager 将任务的 Hadoop 配置进行广播。

② DAGSchduler 将任务转换为 RDD 并组织成 DAG,DAG还将被划分为不同的Stage。

③ TaskSchduler 通过 ActorSystem将任务提交给集群管理器(Cluster Manager)。

3.集群管理器(Cluster Manager)给任务分配资源,即将具体任务分配到 Worker上,Worker 创建 Executor 来处理任务的运行。Standalone、YARN、Mesos、EC2 等都可以作为 Spark 的集群管理器。

RDD计算模型

每个分区的数据只会在一个Task中计算。

基本架构

Spark 基本架构

1.Cluster Manager

Spark 的集群管理器,主要负责资源的分配与管理。集群管理器分配的资源属于一级分配,它将各个 Worker 上的内存、CPU 等资源分配给应用程序(Driver application),但是并不负责对 Executor 的资源分配。Standalone、YARN、Mesos、EC2 等都可以作为 Spark 的集群管理器。

2.Worker

Spark的工作节点。其获得由集群资源(Cluster Manager)分配的资源,负责创建 Executor,将资源和任务进一步分配给 Executor,同步资源信息给 Cluster Manager。

3.Executor

执行计算任务的单元(线程 or 进程?),主要负责任务的执行以及与 Worker、Driver App的信息同步。

4.Driver App

客户端应用程序。用于将任务程序转换为 RDD 和 DAG,并与 Cluster Manager 进行通信与调度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容