Spark玩转大数据@IT·互联网

从零开始学习Spark(八)在集群上运行Spark

2017-05-10  本文已影响102人  C就要毕业了

在集群上运行Spark

之前的所有实例中Spark都是运行在本地模式下,实际项目中应该要运行到集群中。本地模式下的代码完全可以运行在集群中,因此在测试开发阶段变得非常方便。

本部分会先简单介绍Spark的运行时架构,并讨论集群运行时的一般步骤,具体的使用实例会在今后的实战中详细说明。

1. Spark的运行时架构

在分布式环境下,Spark集群采用的是主 / 从结构。

在一个Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点。这个中央协调节点被称为驱动器(Driver)节点。与之对应的工作节点被称为执行器(executor)节点。

Spark应用通过一个叫作集群管理器(Cluster Manager)的外部服务在集群中的机器上启 动。Spark自带的集群管理器被称为独立集群管理器。Spark也能运行在Hadoop YARN和Apache Mesos这两大开源集群管理器上。

Spark运行时架构

驱动器节点

Spark 驱动器是执行你的程序中的main()方法的进程。在本地模式中,Spark-shell就自动启动了一个驱动器程序。

驱动器程序主要完成两个任务:把用户程序转为任务,为执行器节点调度任务。

驱动器程序会将一些 Spark 应用的运行时的信息通过网页界面呈现出来,默认在端口4040上。比如,在本地模式下,访问http://localhost:4040就可以看到这个网页了。

执行器节点

Spark应用启动时,执行器节点就被同时启动。如果有执行器节点发生了异常或崩溃,Spark应用也可以继续执行。

执行器进 程有两大作用:第一,它们负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程; 第二,它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在执行器进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

集群管理器

Spark依赖于集群管理器来启动执行器节点,而在某些特殊情况下,也依赖集群管理器来启动驱动器节点。

2. 集群上运行Spark的一般步骤

(1) 用户通过 spark-submit 脚本提交应用。

(2) spark-submit 脚本启动驱动器程序,调用用户定义的 main() 方法。

(3) 驱动器程序与集群管理器通信,申请资源以启动执行器节点。

(4) 集群管理器为驱动器程序启动执行器节点。

(5) 驱动器进程执行用户应用中的操作。根据程序中所定义的对 RDD 的转化操作和行动操 作,驱动器节点把工作以任务的形式发送到执行器进程。

(6) 任务在执行器程序中进行计算并保存结果。

(7) 如果驱动器程序的 main() 方法退出,或者调用了 SparkContext.stop(),驱动器程序会终止执行器进程,并且通过集群管理器释放资源。

3. 其余未详细介绍内容

(九)Spark调优与调试

这部分涉及到一些调优,监控Spark集群的方式。

(十)Spark SQL

这部分是用SQL语句来操作结构化或半结构化的数据,是从零开始学习Spark(六)数据读取与保存中的部分内容的扩展。

(十一)Spark Streaming

有时数据是以数据流形式实时到达的,这个时候就要使用Spark Streaming来处理这种形式的数据

(十二)基于MLlib的机器学习

这部分介绍了非常有用的MLlib库,它提供了一些非常适合机器学习的数据结构,以及RDD操作,让机器学习变得非常方便。

上一篇下一篇

猜你喜欢

热点阅读