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
posted @ 2016-07-17 21:32  bigbigtree  阅读(482)  评论(0编辑  收藏  举报