作者:foreyou
出处:http://www.foreyou.net/2015/06/22/spark-cluster-mode-overview/
声明:本文采用以下协议进行授权: 署名-非商用|CC BY-NC 3.0 CN ,转载请注明作者及出处。


本篇文章作为理解Spark框架的入门文章,对《Spark Cluster Mode Overview》的翻译。

集群模式概述

为了便于理解Spark框架的组件,这篇文章对Spark是如何运行在集群上做了概述。如果想要知道如何提交应用程序给Spark集群可以通读《application submission guide》

组件

Spark应用程序以一组独立的进程的运行在集群上,由在主程序(称之为DriverProgram)中的SparkContext对象来协调这些进程。SparkContext可以连接到多种跨应用程序的资源分配集群管理器(比如,Spark自己的StandaloneMesos/Yarn等),以运行Spark集群。一旦连接到集群,Spark便能获得了集群内部节点上的Executor。每个Executor都是集群节点上的一个为应用程序提供计算和数据存储的进程。然后,SparkContext会将代码发送给Executor。最后,SparkContext会把任务发给Executor执行。

关于这个架构,有几个值得注意的细节:

  1. 每个应用程序都会得到属于自己的一组Executor进程,这些进程伴随在应用程序的整个生命周期内,会一直以多线程的方式执行任务。这得益于应用程序彼此之间在调度和执行两端的都是分离的,因为每个driver program都只会调度自己应用程序的任务,同时不同应用程序的任务都会运行在不同的JVM中。这也意味着,除非将数据写到外部存储,否则Spark应用程序(SparkContext实例)之间没法共享数据。
  2. Spark对于底层的集群管理器是不可见的。只要获得Executor并让他们之间能够彼此通信,在集群管理器(例如,Mesos/Yarn)上运行Spark应用程序就会变得相对容易,这些集群管理器还可以运行其他类型的应用程序。
  3. Driver program的整个生命周期内,它都要接听和接受来自Executor的连接请求(详见spark.driver.port and spark.fileserver.port in the network config section)。这样Driver program必须是从工作节点网络可寻址的。
  4. 因为Driver program是用来调度任务在集群上执行的,所以它运行的节点应该尽量靠近工作节点,最好是同一个局域网。如果你想远程发送请求到集群,最好开一个RPC到driver,并把它提交到一个靠近集群的driver而不是一个远离工作节点的driver

集群管理器类型

Spark系统目前支持三种类型的集群管理器:

  • Standalone - Spark框架提供的便于其创建集群的一种集群管理器。
  • Apache Mesos - 一个也可以运行Hadoop MapReduce和服务程序的通用集群管理器。
  • Hadoop YARN - Hadoop 2的资源管理器。

除此之外,Spark还提供了EC2 launch scripts便于其在Amazon EC2之上建立Standalone集群。

提交应用程序

应用程序可以使用spark-submit脚本提交到集群上去运行。《application submission guide》介绍了详细步骤。

监控(Monitoring)

每个Driver program都有一个对应的网络UI,应用程序端口为4040,用于显示有关正在运行的任务,Executor,以及存储使用情况的信息。在浏览器内通过http://<driver-node>:4040链接访问此网络UI。《monitoring guide 》还介绍了其他监控选项。

作业调度(Job Scheduling)

Spark框架下,既有跨应用程序的资源分配(集群管理器级别),也有应用程序内资源分配(如果在同一个SparkContext上发生了多个计算)。详见《job scheduling overview》

术语(Glossary)

下表汇总了Spark框架下的概念术语:

术语 意思
Application Spark上构建的程序,由Driver program和集群上的Executor组成
Driver program 运行main()函数和创建SparkContext的进程
Cluster manager 用于获取集群上资源的外部服务(例如,StandaloneMesosYARN
Worker node 集群中任意可以运行应用的节点
Executor 在工作员节点上为应用所启动的一个进程,可以运行任务以及可以在内存或是硬盘中保存数据。每一个应用都有属于自己的一组Executor
Task 一个可以被发送给Executor的工作单元
Job 一个用于响应Spark action(例如,savecollect)的多任务组成的并行计算;你可以在驱动日志中看到这个术语
Stage 每个工作被分为较小相互依赖的Task集合称为Stage (和MapReduce中的mapreduce阶段相似); 你可以在驱动日志中看到这个术语

Spark集群模式概述的更多相关文章

  1. Apache Spark 2.2.0 中文文档 - 集群模式概述 | ApacheCN

    集群模式概述 该文档给出了 Spark 如何在集群上运行.使之更容易来理解所涉及到的组件的简短概述.通过阅读 应用提交指南 来学习关于在集群上启动应用. 组件 Spark 应用在集群上作为独立的进程组 ...

  2. Spark集群模式&Spark程序提交

    Spark集群模式&Spark程序提交 1. 集群管理器 Spark当前支持三种集群管理方式 Standalone-Spark自带的一种集群管理方式,易于构建集群. Apache Mesos- ...

  3. 【待补充】Spark 集群模式 && Spark Job 部署模式

    0. 说明 Spark 集群模式 && Spark Job 部署模式 1. Spark 集群模式 [ Local ] 使用一个 JVM 模拟 Spark 集群 [ Standalone ...

  4. 【原】简述使用spark集群模式运行程序

    本文前提是已经正确安装好scala,sbt以及spark了   简述将程序挂载到集群上运行的步骤: 1.构建sbt标准的项目工程结构: 其中: ~/build.sbt文件用来配置项目的基本信息(项目名 ...

  5. spark集群模式

    1.配置集群主机免登陆,参考http://www.cnblogs.com/puroc/p/5996730.html2.修改/etc/hosts文件,增加所有主机名和IP的对应关系 3.修改spark- ...

  6. Spark集群-Standalone 模式

    Spark 集群相关 table td{ width: 15% } 来源于官方, 可以理解为是官方译文, 外加一点自己的理解. 版本是2.4.4 本篇文章涉及到: 集群概述 master, worke ...

  7. 大数据技术之_19_Spark学习_01_Spark 基础解析 + Spark 概述 + Spark 集群安装 + 执行 Spark 程序

    第1章 Spark 概述1.1 什么是 Spark1.2 Spark 特点1.3 Spark 的用户和用途第2章 Spark 集群安装2.1 集群角色2.2 机器准备2.3 下载 Spark 安装包2 ...

  8. Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续)

    Spark Streaming揭秘 Day31 集群模式下SparkStreaming日志分析(续) 今天延续昨天的内容,主要对为什么一个处理会分解成多个Job执行进行解析. 让我们跟踪下Job调用过 ...

  9. Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析

    Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...

随机推荐

  1. linux0.12 学习总序(不断更新状态中)

    最近有空闲时间,想静下心来学点东西.一直对kernel有兴趣,又苦于无从下手,就拿linux0.12练手.尝试了解并熟悉kernel各模块工作原理. 接下来的博客主要用来记录自己所遇到的问题和解决的方 ...

  2. [C/C++标准库]_[0基础]_[交集和补集]

    场景: 1. 计算std::vector A和 std::vector B里的同样的元素, 用于保留不删除. 2. 计算std::vector A和 std::vector B里各自的补集, 用于删除 ...

  3. Android经常使用的五种弹出对话框

    一个Android开发中经常使用对话框的小样例,共同拥有五种对话框:普通弹出对话框,单选对话框,多选对话框,输入对话框及进度条样式对话框: <LinearLayout xmlns:android ...

  4. 10个热门IT证书

    MCP (微软专家认证) CCNA (思科认证网络支持工程师) MCPD (微软认证开发专家) SCJP (SUN认证Java程序员) CISSP (信息系统安全认证专家) CompTIA A+认证 ...

  5. Linux下Weblogic域的创建过程

    环境介绍:操作系统 :Redhat 5.5Weblogic :英文版 8.1.6 Weblogic安装目录 :/weblogic 一.域的建立执行下面语句进入weblogic的bin目录: cd /w ...

  6. [RxJS] Refactoring CombineLatest to WithLatestFrom

    This lesson shows why it’s preferable to using withLatestFrom instead of combineLatest in certain sc ...

  7. mysql主从监控

    要求:检测myslq从库状态,跳过固定的错误号,每隔30秒检测一次,如果符合条件自动跳过或者是重启从库 1)取出mysql从库的关键字 [root@localhost scripts]# mysql ...

  8. (四)《Java编程思想》——可变参数列表

    以object数组为参数的方法实现可变参数列表 package chapter5; /** * 以object数组为参数的方法实现可变参数列表 */ class A { } public class ...

  9. Oracle—用户管理的备份(一)

    用户管理的备份(一) 一.首先要知道数据库中表空间和文件的信息,有几个性能视图,v$datafile,v$tablespace,v$tempfile,v$logfile,v$controlfile,d ...

  10. text-align:justify小例子

    一个使用 text-align: justify; 使元素均匀分布的小例子: <!DOCTYPE html> <html lang="en"> <he ...