Spark 官方文档(2)——集群模式
Spark版本:1.6.2 简介:本文档简短的介绍了spark如何在集群中运行,便于理解spark相关组件。可以通过阅读应用提交文档了解如何在集群中提交应用。
组件
spark应用程序通过主程序的SparkContext对象进行协调,在集群上通过一系列独立的处理流程运行。
为了便于迁移,SparkContext可以支持多种类型的集群管理器(spark standalone、Yarn、Mesos)。当与集群管理器创建连接后,spark在集群的节点上面申请executors,用于处理应用程序中的计算任务和数据存储。然后executors将一个用的代码发送到各个executors,最后SparkContext发送tasks到各个executor执行。
关于spark架构有一些内容需要指出:
- 每个应用都有自己的executor,他们会在应用程序的整个生命周期内一直存活,这样有利于应用间调度和executor的隔离。但这样也就意味着不同应用之间只能通过外部存储系统进行沟通。
- Spark对于底层的集群管理系统并不知晓,他们能在不同集群上进行资源申请,并提供一致的接口进行通信和计算处理。
- 在应用的整个生命周期内,Driver程序需要监听和接受executors的信息,因此driver程序对于worker节点来说要可以通过网络寻址定位的。
- 由于Driver程序调度集群上面的任务,因而driver最好与worker在同一个网段运行,若远程执行最好开通RPC。
集群类型
目前Spark支持以下三种集群管理:
- Standalone —— spark自带的集群管理器
- Apache Mesos —— 一种可以运行Hadoop Mapreduce的通用集群管理
- Hadoop Yarn —— Hadoop2的集群管理 除此之外,Spark Ec2脚本可以在Amazon EC2上面运行spark standalone模式。
提交应用
通过spark-submit在集群上提交应用程序
监控
每个驱动程序都有一个web UI进行监控,默认端口是4040,展示了正在运行的task、executors和storage usage。通过http://<driver-node>:4040
可以对应用程序进行监控。监控界面简介
作业调度
Spark可以通过代码进行应用内和应用间的集群管理级别的资源分配。作业监控进行了详细介绍。
相关术语
下面对集群中常用的术语进行了介绍:
术语 | 解释 |
---|---|
Application | 用户基于Spark创建的应用程序,包含一个Driver程序和集群上一系列的executor |
Application jar | 用户程序的jar包,需要包含第三方依赖,但不应该包含spark库,这些应该在集群环境中运行时提供 |
Driver program | 运行main函数、创建SparkContext的程序 |
Cluster manager | 申请集群资源的额外的管理器 |
Deploy mode | 区分Driver运行的位置,若是cluster则驱动程序在集群内的节点上运行,若是client则驱动程序在集群外节点运行 |
Worker node | 集群中可以进行计算的节点 |
Executor | 应用在工作节点上的执行器,运行程序同时存储数据。每个应用有自己的executor |
Task | Executor内部执行计算的单元 |
Job | 由Action引起的多个task并行的计算单元,可以在driver日志查看 |
Stage | 每个Job被划分为task,然后根据情况合并为stage |
Spark 官方文档(2)——集群模式的更多相关文章
- 转载-lvs官方文档-LVS集群中的IP负载均衡技术
章文嵩(wensong@linux-vs.org) 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN ...
- 转载-lvs官方文档04-LVS集群的负载调度
LVS集群的负载调度 章文嵩 (wensong@linux-vs.org) 2002 年 5 月 本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法.针对请求的服务时间变 ...
- W3School Redis教程(安装/基本操作/高级操作/命令/官方文档/官方集群教程)
说明:Redis有自身的客户端连接软件,也可以使用Telnet进行连接操作. 来自W3School的Redis教程,基本上涵盖了从安装到状态监控的教程. W3School:https://www.gi ...
- Spark官方文档 - 中文翻译
Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...
- spark 官方文档(1)——提交应用程序
Spark版本:1.6.2 spark-submit提供了在所有集群平台提交应用的统一接口,你不需要因为平台的迁移改变配置.Spark支持三种集群:Standalone.Apache Mesos和Ha ...
- 【译】Spark官方文档——编程指南
本文翻自官方博客,略有添加:https://github.com/mesos/spark/wiki/Spark-Programming-Guide Spark发指南 从高的面看,其实每一个Spark的 ...
- 《Spark 官方文档》在Mesos上运行Spark
本文转自:http://ifeve.com/spark-mesos-spark/ 在Mesos上运行Spark Spark可以在由Apache Mesos 管理的硬件集群中运行. 在Mesos集群中使 ...
- spark api之一:Spark官方文档 - 中文翻译
转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linking with Spark) 3 初始化Spark(Initi ...
- Spark官方文档——独立集群模式(Standalone Mode)
除了部署在Mesos之上, Spark也支持独立部署模式,包括一个Spark master进程和多个 Spark worker进程.独立部署模式可以运行在单机上作为测试之用,也可以部署在集群上.如果你 ...
随机推荐
- 常用算法——排序(二)
简单选择排序法 选择排序(Selection Sort)的基本思想:对n个记录进行扫描,选择最小的记录,将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,--不断重复这个过程,直到只剩 ...
- [No00009E]几种常见的命名规则
变量命名规则 必须遵循的命名规则 1. 变量名首字母必须为字母(a-z A-Z),下划线(_),或者美元符号($)开始php编程中所有变量必须以$开始. 2. 变量名只能是字母(a-z A ...
- jdbc java数据库连接 7)获取插入数据的自增长值
我们创建一个sql表,里面的数据往往都会有自增长值. 那么,我们用jdbc插入数据的时候,要想同时获得这个增长值. 代码: /** * * 这是插入一条数据的同时,获取该数据的则增长列的值(该例子的自 ...
- C#中ToString()格式详解
以下内容均摘自博客园,仅供资料查询. ToString格式化 在很多对象显示为字符串的时候都会使用到ToString中的格式化,由于以前没怎么注意到这个问题,想总结一下各个基础结构对象的格式化,以便后 ...
- jsp基础
1.1动态页面 动态页面的优势: 1.交互性:网页会根据用户的要求和选而动态改变和显示内容; 2.自动更新:无需改变页面代码,便会自动更新的页面内容; 3.随机性:当不同的时间,不同的人访问同一网址时 ...
- 8个排序算法——java
public static void radixsort(int[] a){ int max=a[0]; for(int i=1;i<a.length;i++){ if (max<a[i] ...
- [LeetCode] Word Break 拆分词句
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...
- [LeetCode] Set Matrix Zeroes 矩阵赋零
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. click ...
- smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')解决办法
raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, b'Error: authentica ...
- JTree实现好友列表
最近学习了一下JTree的使用方法: 先来看一下树的实例: 构建一个树, DefaultMutableTreeNode root = new DefaultMutableTreeNode(" ...