Cluster Mode Overview

本文是对Cluster Mode Overview的翻译,请多提宝贵意见。

这个文档给出了关于Spark如何在集群上运行的简短的概述,通过它是对相关组件的理解更加容易。通过读取application submission guide来学习如何在一个集群上发布application。

Components

Spark application在集群上作为一组独立的进程运行,并通过你的主程序(被称为驱动程序)中的SparkContext进行协调。
特别的,要在一个cluster运行,SparkContext能够连接到几个类型的cluster managers(Spark自己的standalone cluster manager、Mesos或YARN),通过application来分配资源。一旦连接到,Spark要求集群中node上的executors进程来为你的application计算并存储数据。接下来,它发送你的应用程序代码(通过JAR或Python文件传递给SparkContext)给executors。最终,SparkContext发送tasks给executors来执行。

架构

关于这个架构,有些有用的东西需要注意:

1、每个application拥有自己的executor进程,executor进程会在整个application期间等待并以多线程方式运行tasks。这对于隔离各个application是有好处的,在scheduling端(每个driver安排它自己的tasks)和executor端(来自不同applications的tasks运行在不同的JVMs中)。这意味着数据不能在不同的Spark application(SparkContext的实例)之间共享数据,除非是将数据写到外部存储系统。
2、Spark是不可知的底层cluster manager。只要它能够得到executor进程,它们彼此相互通信,在一个cluster manager运行它是相当的容易,同时支持其他applications(例如,Mesos/YARN)。
3、driver驱动程序必须在贯穿它的生命期内监听并接收来自它的executors的连接(例如,查看在network config 章节中的spark.driver.port、park.fileserver.port)。因此,driver程序必须是从worker node可寻址的。
4、因为driver在cluster上安排tasks,它应该与worker节点运行的很近,最好的是在相同的本地网络区域。如果你想要发送请求到远程cluster,打开一个到driver的RPC并从附近进行提交操作要比从一个距离worker nodes很远的driver提交任务更好。

Cluster Manager Types

当前这个系统支持三种cluster managers:

1、standalone - 一个简单的cluster manager,它使得构建一个集群变得很容易。
2、Apache Mesoso - 一个一般的cluster manager,可以运行Hadoop MapReduce和service applications。
3、Hadoop YARN - Hadoop 2中的资源管理器。

另外,Spark的EC2 launch scripts是的Spark很容易在Amazon EC2上发布一个standalone cluster。 大专栏  Cluster Mode Overview

Submitting Applications

使用spark-submit脚本,能够将applications提交到任意类型的cluster。

Monitoring

每个driver program都有一个web UI,通常是在4040端口,它显示了运行tasks、executors和存储使用的信息。简单的,在web浏览器中输入 http:// :4040来访问这个UI。这个monitor guide同时描述其他监控选项。

Job Scheduling

在资源分配上,Spark给出了across应用(在cluster manager级别上)和within application(如果多个计算发生在同一个SparkContext上)。job scheduling overview对此做了更多的描述。

Glossary

下面的表格总结了你将经常看到的一些涉及cluster的概念:

term Meaning
Application 用户在Spark上构建的程序。有一个驱动程序和cluster上的executor构成。
Application jar 一个包含了用户Spark Application的jar。在一些情况下,用户可能想要创建一个”超级jar”来包含他的application和application的依赖。用户的jar永远不要包含Hadoop和Spark的库,这些库会在运行的时候自动进行添加。
Driver program 执行application的main()函数,并创建SparkContext的进程。
Cluster manager 在集群上用于获取资源的一个额外的服务(如:standalone、Mesos、YARN)。
Deploy mode 区分driver进程在哪里运行。在”cluster”模式中,框架在集群内不发送driver。在”client”模式中,提交者在集群外部发送driver。
Worker node 那些在cluster中运行application代码的节点。
Exceutor 将一个application发送到一个worker node的进程,它运行task并在数据保存到内存或磁盘上。每个application都有自己的executors。
Task 一个将要被发送到一个executor的工作单元。
Job 一个由多个任务组成的并行计算,并引发一个到Spark action(如save、collect)的响应。
Stage 每个job被拆分成小的任务集合,被称为Stage,并且它们彼此依赖(与MapReduce中map阶段和reduce阶段类似);你将在driver的日志中看到数据。

猜你喜欢

转载自www.cnblogs.com/wangziqiang123/p/11696510.html