作者: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. 近 100 个 Linux 常用命令大全

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出 ...

  2. linux系统下mySQL数据库 备份方法和脚本

    数据库备份1.创建个备份存储目录mkdir /root/backup/2.以下内容写到dbbackup.sh #!/bin/bash cd /data/db_backup/mysqldump -uad ...

  3. BeanstalkClient学习

    针对BeanstalkClient-1.4.6.jar 生产者 示例代码: package com.lky.test; import java.io.UnsupportedEncodingExcept ...

  4. Java[2] 分布式服务架构之java远程调用技术浅析(转http://www.uml.org.cn/zjjs/201208011.asp)

    转自:http://www.uml.org.cn/zjjs/201208011.asp 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如: ...

  5. WINDOWS BITLOCK

    BitLocker是什么? Windows BitLocker驱动器加密通过加密Windows操作系统卷上存储的所有数据可以更好地保护计算机中的数据.BitLocker使用TPM帮助保护Windows ...

  6. Android Sensor Test

    魅蓝note可用 [{Sensor name="MPL Gyroscope", vendor="Invensense", version=1, type=4, ...

  7. Windows移动开发(二)——闭关修炼

    一些武侠小说里的大人物,为了争夺武林盟主,号召天下,常常闭关修炼一段时间,闭关期间仅仅能接触送饭的人,而且关外还有非常多守卫的人员.还有,不管是篮球还是足球运动员,他们在真正接触球之前,都必须做非常长 ...

  8. [Javascript] Safe Nested Object Inspection

    A common problem when dealing with some kinds of data is that not every object has the same nested s ...

  9. OD: Exploit Me - Inject Instruction

    修改之前的代码: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<windo ...

  10. Android-版本与api对应关系图

    Code name Version API level Lollipop 5.1 API level 22 Lollipop 5.0 API level 21 KitKat 4.4 - 4.4.4 A ...