美文网首页Spark玩转大数据@IT·互联网
从零开始学习Spark(八)在集群上运行Spark

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

作者: C就要毕业了 | 来源:发表于2017-05-10 19:31 被阅读102次

    在集群上运行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操作,让机器学习变得非常方便。

    相关文章

      网友评论

        本文标题:从零开始学习Spark(八)在集群上运行Spark

        本文链接:https://www.haomeiwen.com/subject/duygtxtx.html