Spark架构模型介绍

标签: spark 架构 模型 | 发表时间:2016-01-25 10:14 | 作者:
出处:http://www.iteye.com

集群概述:

(一)组件
spark应用作为一系列独立的进程运行在集群上,通过SparkContext来协调,这个对象一般在我们的main程序里面,通常称为驱动程序,

特别的,为了能够在集群上运行,SparkContext对象支持集成了大多数集群调度比如,Spark自己的standalone ,Hadoop2.x的Yarn
以及Mesos,通过这些调度来管理分配整个程序的资源, 只要能连接上某种集群调度器,spark就会获得每个节点上的executors
我们的程序task就由executors负责计算和存储数据,下一步spark会分发这些代码(jar包,或者Python文件)到我们的executors,最后
SparkContext 会发送task到executors运行。一个拓扑图如下:






一些注意的地方如下:
1,每个应用获取它自己的executor进程,每个task会以多线程的方式运行在executor进程的jvm中,互相之间完全隔离的,但是这也意味着
他们不能再不同的应用(SparkContex)之间共享数据,除非将他们写入一个外在的存储系统

2,集群管理者,能够获取获取executor,并且相互之间通过心跳相互交流

3,驱动程序会连接监听它的executor在整个executor的生命周期之内,所以驱动程序与worker node之间的网络是必须相通的

4,因为驱动程序(SparkContext)调度task在整个集群中,所以它应该与worknode在一个网络拓扑中,当然我们也可以通过远程提交任务,
更好的远程提交方式是通过RPC驱动和提交任务


(二)集群管理类型

当然的spark支持三种集群类型

1,standalone,spark自带最简单快速的一种方式
2,Apache Mesos  , 一种通用的资源调度器,可以运行Hadoop MapReduce和其他的一些服务应用
3,Hadoop YARN , hadoop2自带的资源调度器

除此之外,Spark自带的ec2集群脚本,能够非常容易的启动一个standalone集群在亚马逊的EC2上


(三)提交应用程序

应用程序可以被提交任何集群类型,通过使用spark-submit脚本

(四)监听
每个驱动程序有一个web页面,默认是使用4040端号,展示正在运行的task,executors,存储利用率,

(五)任务调度

spark集群类型调度控制应用程序之间的资源分配,在一个程序之间同时发生多个计算时。

一些名词解释:

序号 名词 描述
1 Application 使用者编写的spark程序,由驱动程序和executors组成
2 Application jar 一个jar包包含使用者的程序,某些情况下,会创建一个主jar包含其组成的依赖,但这些依赖中,不能包括hadoop和spark的相关的依赖,因为这些会在运行时,添加进去
3 Driver program 运行main方法和创建SparkContext上下文
4 Cluster manager (YARN 或者 Mesos或者Spark Standalone)负责外部应用的资源分配
5 Deploy mode 区别cluster模式,client提交驱动任务在集群外部,而cluster提交驱动程序在集群内部
6 Worker node 在整个集群中运行任务的节点
7 Executor 在一个worker node上启动的一个进程,运行任务,保存数据在内存或者磁盘上,每个应用有它自己的一系列executors
8 Task 一个工作单元,轻量级线程模式运行在进程Executor里面
9 Job 一个并行的计算过程由多个task组成,并且执行一些action(例如collect,save,foreach等)等待spark响应,在log里面可见日志
10 stage 每个job被切分为多个小的task被称为stage,他们之间相互依赖,非常类似hadoop的MapReduce,在驱动的log里面可见日志






有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园













已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [spark 架构 模型] 推荐:

Spark架构模型介绍

- - ITeye博客
spark应用作为一系列独立的进程运行在集群上,通过SparkContext来协调,这个对象一般在我们的main程序里面,通常称为驱动程序,. 特别的,为了能够在集群上运行,SparkContext对象支持集成了大多数集群调度比如,Spark自己的standalone ,Hadoop2.x的Yarn.

Spark和RDD模型研究

- - CSDN博客云计算推荐文章
现今分布式计算框架像MapReduce和Dryad都提供了高层次的原语,使用户不用操心任务分发和错误容忍,非常容易地编写出并行计算程序. 然而这些框架都缺乏对分布式内存的抽象和支持,使其在某些应用场景下不够高效和强大. RDD(Resilient Distributed Datasets弹性分布式数据集)模型的产生动机主要来源于两种主流的应用场景:.

Spark概览

- - 简单文本
Spark具有先进的DAG执行引擎,支持cyclic data flow和内存计算. 因此,它的运行速度,在内存中是Hadoop MapReduce的100倍,在磁盘中是10倍. 这样的性能指标,真的让人心动啊. Spark的API更为简单,提供了80个High Level的操作,可以很好地支持并行应用.

Spark与Mapreduce?

- - 崔永键的博客
我本人是类似Hive平台的系统工程师,我对MapReduce的熟悉程度是一般,它是我的底层框架. 我隔壁组在实验Spark,想将一部分计算迁移到Spark上. 年初的时候,看Spark的评价,几乎一致表示,Spark是小数据集上处理复杂迭代的交互系统,并不擅长大数据集,也没有稳定性. 但是最近的风评已经变化,尤其是14年10月他们完成了Peta sort的实验,这标志着Spark越来越接近替代Hadoop MapReduce了.

Spark迷思

- - ITeye博客
目前在媒体上有很大的关于Apache Spark框架的声音,渐渐的它成为了大数据领域的下一个大的东西. 证明这件事的最简单的方式就是看google的趋势图:. 上图展示的过去两年Hadoop和Spark的趋势. Spark在终端用户之间变得越来越受欢迎,而且这些用户经常在网上找Spark相关资料. 这给了Spark起了很大的宣传作用;同时围绕着它的也有误区和思维错误,而且很多人还把这些误区作为银弹,认为它可以解决他们的问题并提供比Hadoop好100倍的性能.

Spark 优化

- - CSDN博客推荐文章
提到Spark与Hadoop的区别,基本最常说的就是Spark采用基于内存的计算方式,尽管这种方式对数据处理的效率很高,但也会往往引发各种各样的问题,Spark中常见的OOM等等. 效率高的特点,注定了Spark对性能的严苛要求,那Spark不同程序的性能会碰到不同的资源瓶颈,比如:CPU,带宽、内存.

beeline 连接SPARK /Hive

- - 开源软件 - ITeye博客
hiveclient所在主机的jdk 1.7_51,hive 0.12和hadoop 2.3.0是从服务器端拷贝过来的,环境变量一切OK. 执行连接报了Invalid URL的错误:. 开始的一段时间都在纠结这个jdbc的URL格式问题,后来在cloudra论坛上找到了一个方法,. 直接调用的jdbc:hive2的驱动测试是正常的,证明CLASSPATH等环境变量没有问题.

Spark容错机制

- - zzm
一般来说,分布式数据集的容错性有两种方式: 数据检查点和记录数据的更新. 面向大规模数据分析,数据检查点操作成本很高,需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源. 因此,Spark选择记录更新的方式. 但是,如果更新粒度太细太多,那么记录更新成本也不低.

Mesos上部署spark

- - 开源小站
还是回到之前一直持续的 Mesos话题. 在之前的环节里,我们已经尝试了Mesos的安装,Marathon守护服务以及相对比较主流的Mesos作为Hadoop的资源管理器的实际操作. 这次就说说同属于伯克利出品的Spark. 其实spark最初0.7以前的版本还没有自己的资源管理系统,资源的调度都是通过Mesos来执行的.

Spark性能调优

- - zzm
通常我们对一个系统进行性能优化无怪乎两个步骤——性能监控和参数调整,本文主要分享的也是这两方面内容. Spark提供了一些基本的Web监控页面,对于日常监控十分有用. http://master:4040(默认端口是4040,可以通过spark.ui.port修改)可获得这些信息:(1)stages和tasks调度情况;(2)RDD大小及内存使用;(3)系统环境信息;(4)正在执行的executor信息.