主要内容

Apache火花基础知识

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

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

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

RDD是Spark中的主要编程抽象,它代表了一个不可变的元素集合,这些元素被划分在集群的各个节点上,可以并行操作。Spark应用程序可以在单机或集群上本地运行。

Spark主要是用Scala并有其他编程语言的api,包括MATLAB®.Spark的MATLAB API将Spark编程模型公开给MATLAB,并使众多Spark函数的MATLAB实现成为可能。许多Spark函数的MATLAB实现都接受函数句柄或匿名函数作为输入,以执行各种类型的分析。

运行对火花

在Spark上运行意味着使用支持的集群管理器在启用Spark的集群上执行应用程序。金宝app集群可以是本地的,也可以是网络上的。你可以通过两种方式对抗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上运行的独立应用程序。

集群管理器金宝app火花

当地的

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

请注意

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

独立的

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

请注意

Spark附带的独立集群管理器不要与独立应用程序可以与Spark竞争。MATLAB编译器不支持独立集群管理器。金宝app

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

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

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

请注意

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

便

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

请注意

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

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

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

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

不受支持金宝app的。

金宝app支持。

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

金宝app支持。

金宝app支持。

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

金宝app支持。

不受支持金宝app的。

之间的关系火花而且Hadoop

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

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

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

请注意

MATLAB编译器中的部署选项目前只支持针对Spark启用的Hadoop集群进行部署。金宝app

司机

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

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

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

  • 在执行器上安排任务。

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

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

请注意

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

遗嘱执行人

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

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

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

抽样

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

  • 通过加载外部数据集。

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

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

转换

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

行动

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

区分转换和操作

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

SparkConf

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

SparkContext

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