购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1
Spark本地模式安装

【任务描述】

本任务主要介绍Spark本地模式安装方式。通过本任务的学习和实践,读者可以了解Spark的基本原理,掌握安装Scala插件的方法,掌握Spark本地模式安装的方法。

【知识链接】

1.Spark简介

Spark 是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMP实验室,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。该项目主要使用Scala语言进行编写。

Spark集群的资源管理模式主要有Standalone、YARN和Mesos 3种。资源管理框架之上主要是Spark Core模块,它实现了Spark最基础的功能。Spark Core模块之上是更高层的API,主要由Spark SQL、Spark Streaming、Spark MLlib和Spark Graph X组成,如图1-1所示。

图1-1 Spark模块

Spark的主要模块介绍如下。

●Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed Dataset,RDD)的API定义。

●Spark SQL:Spark用来操作结构化数据的程序包。通过Spark SQL,可以使用SQL或者Apache Hive版本的SQL查询语言(Hibernate Query Language,HQL)来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。

●Spark Streaming:Spark提供的对实时数据进行流式计算的组件,提供了用来操作数据流的API。

●Spark MLlib:提供常见的机器学习功能的程序库,包括分类、回归、聚类、协同过滤等,还提供模型评估、数据导入等额外的功能。

●集群管理器:Spark支持在各种集群管理器上运行,包括YARN、Mesos,以及Spark自带的调度器——独立(Standalone)调度器。

2.Spark的主要优势

Spark 采用内存性计算方式。相对于Hadoop,在基于内存的并行计算方面,Spark具有非常明显的优势。Spark的主要优势如下。

●快。与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上,如图1-2所示。Spark实现了高效的执行引擎,可以基于内存高效处理数据流,计算的中间结果存储在内存中。

●易用。Spark支持Java、Python和Scala编程语言的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的Shell,可以非常方便地使用Spark集群执行分布式计算。

●通用。Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询、实时流处理、机器学习和图计算,可以在同一个应用中无缝使用。

●兼容性高。Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用YARN和Mesos作为资源管理器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。

图1-2 Spark和Hadoop性能对比

3.Spark系统架构

Spark 系统的架构是基于Master/Slave模式进行设计的。系统主要由一个Driver和多个Worker Node组成,如图1-3所示。

图1-3 Spark系统架构

●Driver是运行Spark应用的入口,它会创建SparkContext,SparkContext负责和Cluster Manager通信,进行资源申请、任务分配和监控等。

●Cluster Manager负责申请和管理在Worker Node上运行应用所需的资源,包括Spark原生的Cluster Manager、Mesos Cluster Manager和Hadoop YARN Cluster Manager。

●Executor是Application运行在Worker Node上的一个进程,负责运行Task(任务)以及将数据存储在内存或者磁盘上,每个Application都有各自独立的一批Executor。每个Executor则包含了一定数量的资源来运行分配给它的任务。在提交应用中,可以提供参数指定计算节点的个数,以及对应的资源。

4.Spark任务执行流程

在集群环境中提及并运行Spark任务,需要考虑资源的申请、分配及注销的过程。资源管理器承担了这个任务,它分配并监控资源的使用情况,根据集群不同的部署模式,会应用不同的资源管理器,可能是YARN、Mesos或者是Spark的Standalone。

SparkContext负责生成RDD对象,并基于RDD构建DAG图。DAG Scheduler将DAG图分解为Stage,生成Taskset。TaskScheduler提交和监控Task。

Spark任务执行流程如图1-4所示。

图1-4 Spark任务执行流程

(1)构建Spark应用的运行环境,启动SparkContext。SparkContext向Cluster Manager注册,并申请运行Executor资源。

(2)Cluster Manager为Executor分配资源并启动Executor进程,Executor运行情况将随着“心跳”发送到Cluster Manager上。

(3)SparkContext构建DAG图,将DAG图分解成多个Stage,并把每个Stage的Taskset(任务集)发送给Task Scheduler(任务调度器)。Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor,同时,SparkContext将应用程序代码发放给Executor。

(4)Task在Executor上运行,把运行结果反馈给Task Scheduler,然后再反馈给DAG Scheduler。运行完毕后写入数据。SparkContext向ClusterManager注销并释放所有资源。

【任务实施】

1.Scala的安装

因为Spark主要基于Scala语言开发,所以在安装Spark之前,首先要安装Scala。主要的安装过程如下。

(1)将Scala安装包上传到指定目录/opt/module/soft,上传完成后,切换到安装目录。

[hadoop@hadoop1 ~]$ cd /opt/module/soft

(2)将安装包解压缩到安装目录/opt/module。

[hadoop@hadoop1 soft]$ tar -zxvf scala-2.12.11.tgz -C /opt/module

(3)默认安装的目录名scala-2.12.11较长,可以将目录名改为scala。

[hadoop@hadoop1 soft]$ mv /opt/module/scala-2.12.11/ /opt/module/scala

(4)编辑/etc/profile文件,修改环境变量,在PATH变量中添加Scala安装路径下面的bin目录,这样就可以在任意的目录下执行该文件夹下面的命令。

[hadoop@hadoop1 soft]$ sudo vi /etc/profile#scalaexport SCALA_HOME=/opt/module/scalaexport PATH=$PATH:$SCALA_HOME/bin

(5)环境变量编辑完成后,为使得环境变量立即生效,需要使用source命令刷新文件。

[hadoop@hadoop1 soft]$ source /etc/profile

(6)安装完成后,验证Scala环境能否正常使用。输入scala命令,进入Scala的命令行模式,输入scala命令进行验证。如果能够正常运行,说明Scala已经正常安装。

[hadoop@hadoop1 soft]$ scala

2.Spark的安装

在Scala软件安装完成以后,就可以安装Spark了。

(1)从官方网站下载正确的安装版本。访问Apache网站并下载Spark。本书开发的案例基于Spark 3.0。由于Spark安装版本和Hadoop相关,因此在选择Spark的版本时要考虑集群环境中Hadoop的安装版本。

Spark的下载目录如图1-5所示。选择spark-3.0.0进行下载。单击相应的文件夹链接,查看并选择相应的版本进行下载,如图1-6所示。

图1-5 Spark下载目录

图1-6 Spark 3.0.0下载页面

(2)将压缩包上传到服务器指定文件夹/opt/soft。如果文件夹不存在,可以先创建这个文件夹。将Spark安装文件解压缩到指定文件夹后安装。

[hadoop@hadoop1 ~]$ tar -zxvf /opt/soft/spark-3.0.0-bin-hadoop2.7.tgz -C /opt/module

(3)解压缩后的文件夹名称为spark-3.0.0-bin-hadoop2.7,因为这个名称比较长,可以对文件夹进行改名,使用mv命令修改文件夹名称为spark。

[hadoop@hadoop1 ~]$ mv /opt/module/spark-3.0.0-bin-hadoop2.7/ /opt/module/spark

(4)编辑文件/etc/profile,修改环境变量。在PATH变量中添加Spark安装路径下面的bin目录和sbin目录,这样就可以在任意的目录下执行这两个文件夹下面的命令。

[hadoop@hadoop1 ~]$ vi /etc/profile# sparkexport SPARK_HOME=/opt/module/sparkexport PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH

(5)环境变量编辑完成后,为使得环境变量立即生效,需要使用source命令刷新文件。

[hadoop@hadoop1 ~]$ source /etc/profile /rplOX1kd4pvn8ZQz1cnjTDat/uW0Vbn8e92FeS+vGo0c2VJimcXqs1uP/sFeJbf

点击中间区域
呼出菜单
上一章
目录
下一章
×