主要内容

Apache火花基础知识

Apache火花™是一种用于大规模数据处理的快速通用引擎。

每个Spark™应用程序都包含一个司机管理应用程序在集群上的执行的程序。在启用Spark的集群中,工作者被称为执行人.驱动程序进程在这些执行程序上运行用户代码。

在典型的Spark应用程序中,您的代码将建立一个SparkContext,创建一个弹性分布式数据集抽样)从外部数据,然后执行方法称为转换而且行动以达到分析的结果。

RDD是Spark中主要的编程抽象,它表示跨集群节点划分的不可变元素集合,可以并行操作。Spark应用程序可以在一台本地机器上运行,也可以在集群上运行。

Spark主要是写在Scala并有其他编程语言的api,包括MATLAB®.Spark的MATLAB API向MATLAB公开了Spark编程模型,并使MATLAB实现了许多Spark函数。许多这些Spark函数的MATLAB实现接受函数句柄或匿名函数作为输入,以执行各种类型的分析。

运行对火花

在Spark上运行意味着使用支持的集群管理器在支持Spark的集群上执行应用程序。集群可以是本地的,也可以是网络上的。你可以通过两种方式来对抗Spark:

  • 执行命令交互式shell连接到Spark的

  • 创建并执行独立应用程序针对Spark集群。

在使用交互式shell时,Spark允许您与分布在磁盘或内存上的数据进行交互,并跨多台计算机执行特别分析。Spark负责工作在不同机器之间的底层分布。交互式shell只在Python中可用®而且Scala

Spark的MATLAB APIMATLAB编译器™提供了一个类似于Spark shell的交互式shell,允许您在部署应用程序之前对其进行调试。交互式shell只针对本地集群运行。

在针对Spark创建和执行独立应用程序时,首先将应用程序打包或编译为独立应用程序,然后在支持Spark的集群上执行。中编写独立的应用程序Scala, Java®、Python和MATLAB。

Spark的MATLAB APIMATLAB编译器让你创建可以在Spark上运行的独立应用程序。

支持的集群管理器火花

当地的

一个当地的集群管理器表示伪集群,并以非分布式模式在单台机器上工作。您可以配置它使用一个工作线程,或者在多核机器上使用多个工作线程。在应用中,它用单词表示当地的

请注意

Spark的MATLAB API允许您交互地调试应用程序,它只能与本地集群管理器一起工作。

独立的

一个独立的集群管理器随Spark一起发布。它由一个主人和多个工人组成。要使用独立集群管理器,请在每个集群节点上放置一个编译版本的Spark。独立集群管理器可以使用Spark提供的脚本启动。在应用中表示为:火花:/ /主持人:端口.默认端口号为7077

请注意

Spark附带的独立集群管理器不要与独立应用程序可以对抗斯帕克的人MATLAB编译器不支持独立集群管理器。

在Hadoop中引入了YARN集群管理器®2.0.它通常安装在与HDFS™相同的节点上。因此,在YARN上运行Spark可以方便地访问HDFS数据。在应用中,它是用术语表示的.在YARN上启动应用程序时,有两种可用模式:

  • yarn-client模式下,驱动程序运行在客户端进程中,应用程序主程序只用于从YARN请求资源。

  • yarn-cluster模式下,Spark驱动程序运行在集群上由YARN管理的应用程序主进程中,客户端可以在启动应用程序后退出。

请注意

MATLAB编译器只支持YARN集群管理器yarn-client模式。

便

Mesos集群管理器是由Apache™开发的开源集群管理器。在应用中,它通常表示为:便:/ /主持人:端口.默认端口号为5050

请注意

MATLAB编译器不支持Mesos集群管理器。

您可以使用下表查看每个集群管理器支持哪个MATLAB编译器部署选项。

根据Spark选项部署 本地集群(当地的 Hadoop集群(yarn-client

部署包含高数组的独立应用程序

不受支持的。

支持。

部署使用Spark的MATLAB API创建的独立应用程序

支持。

支持。

使用Spark的MATLAB API交互式调试应用程序

支持。

不受支持的。

之间的关系火花而且Hadoop

只有当您希望在安装了Hadoop的集群上运行Spark时,Spark和Hadoop之间的关系才会发挥作用。否则,您不需要Hadoop来运行Spark。

要在集群上运行Spark,您需要一个共享文件系统。Hadoop集群通过HDFS和YARN形式的集群管理器提供对分布式文件系统的访问。Spark可以使用YARN作为集群管理器分配工作,使用HDFS访问数据。另外,一些Spark应用程序可以使用Hadoop的MapReduce编程模型,但MapReduce并不构成Spark的核心编程模型。

Hadoop不需要在集群上运行Spark。您也可以使用其他选项,如Mesos。

请注意

MATLAB Compiler中的部署选项目前只支持针对Spark支持的Hadoop集群进行部署。

司机

每个Spark应用程序都包含一个司机在集群上启动各种操作的程序。驱动程序是一个过程main ()方法来运行程序。驱动程序进程运行创建SparkContext、创建rdd并执行转换和操作的用户代码。当Spark驱动程序执行时,它执行两个任务:

  • 将用户程序转换为任务。

    Spark驱动程序负责将用户程序转换为称为任务的物理执行单元。任务是Spark中最小的工作单元。

  • 在执行器上安排任务。

    Spark驱动程序会根据数据的位置,尝试将每个任务安排在适当的位置。它还跟踪缓存数据的位置,并使用它来安排访问该数据的未来任务。

一旦驱动程序终止,应用程序就完成了。

请注意

当使用MATLAB API for Spark时MATLAB编译器, MATLAB应用程序代码成为Spark驱动程序。

遗嘱执行人

Spark执行器是一个工作进程,负责运行给定Spark作业中的各个任务。执行程序在Spark应用程序的开始时启动,并在应用程序的整个生命周期中持续存在。执行者扮演两个角色:

  • 运行组成应用程序的任务,并将结果返回给驱动程序。

  • 为用户程序缓存的rdd提供内存存储。

抽样

一个弹性分布式数据集抽样是Spark中的一个编程抽象。它表示分布在许多可以并行操作的节点上的元素集合。rdd趋向于容错。您可以通过两种方式创建rdd:

  • 通过加载外部数据集。

  • 中的对象集合进行并行处理司机程序。

创建完成后,您可以使用rdd执行两种操作:转换而且行动

转换

转换是对现有RDD的操作,返回一个新的RDD。许多(但不是所有)转换是与元素相关的操作。

行动

行动根据RDD计算最终结果,并将结果返回给驱动程序,或者将其保存到外部存储系统(如HDFS)。

区分转换和操作

检查返回数据类型。转换返回rdd,而操作返回其他数据类型。

SparkConf

SparkConf存储部署到Spark的应用程序的配置参数。每个应用程序都必须在部署到Spark集群之前进行配置。有些配置参数定义了应用程序的属性,有些则被Spark用于在集群上分配资源。配置参数通过接口传递到Spark集群SparkContext

SparkContext

一个SparkContext表示到Spark集群的连接。它是Spark的入口点,设置必要的内部服务,以建立到Spark执行环境的连接。

Baidu
map