查看“Spark运行架构”的源代码
←
Spark运行架构
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==基本概念== 在具体讲解Spark运行架构之前,需要先了解几个重要的概念: ===RDD=== * RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型; ===DAG=== * DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系; ===Executor=== * Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行任务,并为应用程序存储数据; ===应用=== * 应用:用户编写的Spark应用程序; ===任务=== * 任务:运行在Executor上的工作单元; ===作业=== * 作业:一个作业包含多个RDD及作用于相应RDD上的各种操作; ===阶段=== * 阶段:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。 ==架构设计== 如图9-5所示,Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点(Worker Node)、每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor)。其中,集群资源管理器可以是Spark自带的资源管理器,也可以是YARN或Mesos等资源管理框架。 与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点:一是利用多线程来执行具体的任务(Hadoop MapReduce采用的是进程模型),减少任务的启动开销;二是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,当需要多轮迭代计算时,可以将中间结果存储到这个存储模块里,下次需要时,就可以直接读该存储模块里的数据,而不需要读写到HDFS等文件系统里,因而有效减少了IO开销;或者在交互式查询场景下,预先将表缓存到该存储系统上,从而可以提高读写IO性能 [[文件:bd20-7-17.png]]
返回至
Spark运行架构
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息