开发者社区> 陈国林> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Spark-分布式集群运行

简介: 1.简介 这篇文章主要是简单的介绍一下Spark应用如何在集群上运行, 更进一步的理解Spark所涉及到的相关主件 目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN 2.
+关注继续查看

1.简介

这篇文章主要是简单的介绍一下Spark应用如何在集群上运行, 更进一步的理解Spark所涉及到的相关主件

目前Apache Spark支持三种分布式部署方式,分别是standalone、spark on mesos和 spark on YARN

2.架构

Spark应用在集群上是独立运行的进程, 通过主程序(main program)的SparkContext进行协调. 一般我们成Spark的主程序为driver程序(driver program)

特别的, 在集群上运行Spark, SparkContext对象支持和多种不同类型的集群管理器(Cluster manager)进行通信. 包括Spark自己的standalone集群管理器, Mesos还有YARN. SparkContext和Cluster manager连接之后, Cluster manager会在集群的worker节点上启动executor进程(真正进行数据处理, 计算和存储), 接下来把应用程序的代码(JAR包或Python文件)发送到executor进程, 最后SparkContext在executor进程上调度task执行

上诉的流程, 简单用几个步骤进行描述

  1. SparkContext和Cluster manager通信
  2. Cluster manager在集群的worker节点启动executor进程
  3. Cluster manager把Spark应用代码发送给executor进程
  4. SparkContext推送task到executor上执行

从上图可以看出

  1. SparkContext负责驱动整个Spark应用的执行
  2. Cluster manager负责进行资源分配和任务调度(executros启动)
  3. executor负责执行Spark的task任务

对于这个架构, 有几个我们必须了解

  1. 每个应用的executor进程是相互隔离的, executor进程贯穿于整个应用的生命周期, 同时用多线程执行task. executor进程隔离有什么好处呢? 第一点对于driver调度来说, 每个driver只管负责调度自己的task即可. 第二点对于executor执行来说不同的应用的task运行在不同JVM. 相反, 进程隔离意味着不同Spark应用程序之间的数据无法共享, 除了持久化存储的那些数据
  2. 对于Spark来说并不关心Cluster manager, 只要能够启动executor进程同时也能够互相通信就可以. 对于Mesos/YARN来说非常容易运行其他运用程序, 包括Spark
  3. Spark的整个生命周期期间, driver程序需要监听并且接收外部请求. 因此必须保证driver程序网络可用
  4. 由于driver程序要调度task到worker节点的executor进程运行, 因此driver程序最好能够和worker节点在同一个集群内执行. 如果想发送一个请求到远程集群, 最好通过发送RPC请求来提交相关操作

3.Clsuter manager

目前有三种类型的Cluster manager支持Spark

standalone

Apache Mesos

Hadoop YARN

4.名词解释

Spark应用程序可以通过 spark-submit进行提交

每个driver程序都有一个web UI, 端口4040. 前端可以展示tasks, executors和存储使用情况.

Term              Meaning
----------------------------------------------------------------------------------
Application       用户开发的Spark应用程序, 包括driver程序和集群的executors进程
----------------------------------------------------------------------------------
Application jar   包含用户Spark应用程序的jar包, 有些时候用户创建一个jar包, 包含应用
                  所有的依赖项. 但是用户的jar包不应该包括Hadoop或者Spark相关的库
----------------------------------------------------------------------------------
Driver program    应用程序执行main函数的进程, 同时生成SparkContext
----------------------------------------------------------------------------------
Cluster manager   集群服务用于分配资源
----------------------------------------------------------------------------------
Deploy mode       driver程序运行的区别. "cluster"模式, driver程序运行在集群的任意wroker
                  节点. "client"模式, driver程序运行在本地
----------------------------------------------------------------------------------
Worker node       集群的任何一个可以执行应用的节点
----------------------------------------------------------------------------------
Executor          每个应用在worker节点上启动的一个进程, 执行task任务同时把数据放在
                  内存或者磁盘. 每个应用都有自己的executor进程
----------------------------------------------------------------------------------
Task              executor执行的一个单元
----------------------------------------------------------------------------------
Job               多个并行计算task组成一个Job
----------------------------------------------------------------------------------
Stage             每个job被分割成多个不同task集合, 每个task集合称为stage
                  例如map和reduce是Mapeduce的一个stage

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
重磅解读:基于Occlum和BigDL构建端到端的安全分布式Spark大数据分析方案
重磅解读:基于Occlum和BigDL构建端到端的安全分布式Spark大数据分析方案
0 0
【Spark】(二)Spark2.3.4 集群分布式安装
【Spark】(二)Spark2.3.4 集群分布式安装
0 0
BigDL:Apache Spark 上的分布式深度学习库
BigDL是 Apache Spark 的分布式深度学习库;使用 BigDL,用户可以将他们的深度学习应用程序编写为标准 Spark 程序,这些程序可以直接运行在现有的 Spark 或 Hadoop 集群之上。为了轻松构建 Spark 和 BigDL 应用程序,为端到端分析 + AI 管道提供了高级Analytics Zoo。
0 0
5月14日Apache Spark中国社区技术直播【Analytics Zoo上的分布式TensorFlow训练AI玩FIFA足球游戏】
近年来,由于对通用人工智能研究的潜在价值,训练AI玩游戏一直是一个火热的研究领域。FIFA实时视频游戏场景复杂,需要结合图像,强化学习等多种不同的AI技术,同时也要求agents响应有实时性,因此是一个非常好的试验场,可以用来探索不同类型的AI技术。本次分享主要介绍我们在训练AI玩FIFA视频游戏方面的一些工作。
0 0
BR-MLP基于spark+Hadoop分布式数据挖掘解决方案功能剖析
BR-MLP是基于大数据BR-ODP的分布式数据挖掘平台,基于Hadoop和Spark技术,支持海量数据挖掘。提供数据源、数据预处理、特征工程、统计分析、机器学习……组件。
496 0
【MaxCompute Spark】不想自己搭Spark集群, 也能跑Spark分布式作业???
【MaxCompute Spark】不想自己搭Spark集群, 也能跑Spark分布式作业???
1275 0
Spark中分布式使用HanLP(1.7.0)分词示例
HanLP分词,如README中所说,如果没有特殊需求,可以通过maven配置,如果要添加自定义词典,需要下载“依赖jar包和用户字典".分享某大神的示例经验:是直接"java xf hanlp-1.6.8-sources.jar" 解压源码,把源码加入工程(依赖本地jar包,有些麻烦,有时候到服务器有找不到jar包的情况)按照文档操作,在Spark中分词,默认找的是本地目录,所以如果是在driver中分词是没有问题的。
626 0
Hanlp分词1.7版本在Spark中分布式使用记录
新发布1.7.0版本的hanlp自然语言处理工具包差不多已经有半年时间了,最近也是一直在整理这个新版本hanlp分词工具的相关内容。不过按照当前的整理进度,还需要一段时间再给大家详细分享整理的内容。昨天正好看到的这篇关于关于1.
1241 0
spark集群使用hanlp进行分布式分词操作说明
本篇分享一个使用hanlp分词的操作小案例,即在spark集群中使用hanlp完成分布式分词的操作,文章整理自【qq_33872191】的博客,感谢分享!以下为全文:   分两步: 第一步:实现hankcs.
14078 0
+关注
陈国林
曾任职于阿里巴巴,现就职于美图,专业搬砖100年~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
云HBaseSQL及分析 ——Phoenix&Spark
立即下载
R AND SPARK
立即下载
基于Apache* Spark* 的大规模分布式机器学习实践
立即下载