【云小课】EI第32课 MRS基础原理之Spark组件介绍

网友投稿 710 2022-05-30

Spark是基于内存的分布式计算框架。在迭代计算的场景下,数据处理过程中的数据可以存储在内存中,提供了比MapReduce高10到100倍的计算能力。Spark可以使用HDFS作为底层存储,使用户能够快速地从MapReduce切换到Spark计算平台上去。Spark提供一站式数据分析能力,包括小批量流式处理、离线批处理、SQL查询、数据挖掘等,用户可以在同一个应用中无缝结合使用这些能力。

Spark结构

Spark的架构如下图所示:

模块

说明

Cluster Manager

集群管理器,管理集群中的资源。Spark支持多种集群管理器,Spark自带的Standalone集群管理器、Mesos或YARN。Spark集群默认采用YARN模式。

Application

Spark应用,由一个Driver Program和多个Executor组成。

Deploy Mode

部署模式,分为cluster和client模式。cluster模式下,Driver会在集群内的节点运行;而在client模式下,Driver在客户端运行(集群外)。

Driver Program

是Spark应用程序的主进程,运行Application的main()函数并创建SparkContext。负责应用程序的解析、生成Stage并调度Task到Executor上。通常SparkContext代表Driver Program。

Executor

在Work Node上启动的进程,用来执行Task,管理并处理应用中使用到的数据。一个Spark应用一般包含多个Executor,每个Executor接收Driver的命令,并执行一到多个Task。

Worker Node

集群中负责启动并管理Executor以及资源的节点。

Job

一个Action算子(比如collect算子)对应一个Job,由并行计算的多个Task组成。

Stage

每个Job由多个Stage组成,每个Stage是一个Task集合,由DAG分割而成。

Task

承载业务逻辑的运算单元,是Spark平台中可执行的最小工作单元。一个应用根据执行计划以及计算量分为多个Task。

Spark原理

Spark的应用运行架构如下图所示,运行流程如下所示:

应用程序(Application)是作为一个进程的集合运行在集群上的,由Driver进行协调。

在运行一个应用时,Driver会去连接集群管理器(Standalone、Mesos、YARN)申请运行Executor资源,并启动ExecutorBackend。然后由集群管理器在不同的应用之间调度资源。Driver同时会启动应用程序DAG调度、Stage划分、Task生成。

然后Spark会把应用的代码发送到Executor上。

所有的Task执行完成后,用户的应用程序运行结束。

Spark采用Master和worker的模式,用户在Spark客户端提交应用程序,调度器将Job分解为多个Task发送到各个Worker中执行,各个Worker将计算的结果上报给Driver(即Master),Driver聚合结果返回给客户端。

在此结构中,有几个说明点:

应用之间是独立的。每个应用有自己的executor进程,Executor启动多个线程,并行地执行任务。无论是在调度方面,或者是executor方面。各个Driver独立调度自己的任务;不同的应用任务运行在不同的JVM上,即不同的Executor。

不同Spark应用之间是不共享数据的,除非把数据存储在外部的存储系统上(比如HDFS)。

因为Driver程序在集群上调度任务,所以Driver程序最好和worker节点比较近,比如在一个相同的局部网络内。

Spark on YARN有两种部署模式:

YARN-Cluster模式下,Spark的Driver会运行在YARN集群内的ApplicationMaster进程中,ApplicationMaster已经启动之后,提交任务的客户端退出也不会影响任务的运行。

YRAN-Client模式下,Driver启动在客户端进程内,ApplicationMaster进程只用来向YARN集群申请资源。

运行SparkSubmit作业

在MRS集群中,您可以通过管理控制台、客户端命令等多种方式运行SparkSubmit作业的操作。

【云小课】EI第32课 MRS基础原理之Spark组件介绍

MRS集群的创建您可参考创建集群。

通过界面提交作业

在MRS管理控制台,点击集群名称进入到MRS集群详情页面,单击“作业管理”,进入“作业管理”页签。

在作业管理页面,即可新增SparkSubmit作业,作业新增完成后,可对作业进行管理。

通过后台提交作业

登录MRS集群的FusionInsight Manager页面(如果没有弹性IP,需提前购买弹性IP),新建一个用户sparktest,绑定用户组hadoop、supergroup,绑定主组Supergroup、绑定角色System_administrator、default。

在Manager页面选择“系统 > 用户”,在新增用户的操作列单击“更多 > 下载认证凭据”。

将与作业相关的jar包上传到集群中,本示例使用Spark自带的样例jar包,位置在“$SPARK_HOME/examples/jars/”下。

上传创建的用户认证凭据到集群的“/opt”目录下,并执行如下命令解压:

tar -xvf sparktest _xxxxxx_keytab.tar

登录集群客户端所在的节点,执行以下命令提交作业:

source /opt/client/bigdata_env cd $SPARK_HOME ./bin/spark-submit --master yarn --deploy-mode client --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-3.1.1-hw-ei-302002.jar

运行SparkSql作业

在MRS集群中,您可以通过管理控制台、客户端命令等多种方式运行SparkSql作业的操作。

MRS集群的创建您可参考创建集群。

通过界面提交作业

在MRS管理控制台,点击集群名称进入到MRS集群详情页面,单击“作业管理”,进入“作业管理”页签。

在作业管理页面,即可新增SparkSql作业,作业新增完成后,可对作业进行管理。

通过后台提交作业

登录MRS集群的FusionInsight Manager页面(如果没有弹性IP,需提前购买弹性IP),新建一个用户sparktest,绑定用户组hadoop、supergroup,绑定主组Supergroup、绑定角色System_administrator、default。

在Manager页面选择“系统 > 用户”,在新增用户的操作列单击“更多 > 下载认证凭据”。

将与作业相关的jar包上传到集群中,本示例使用Spark自带的样例jar包,位置在“$SPARK_HOME/examples/jars/”下。

上传创建的用户认证凭据到集群的“/opt”目录下,并执行如下命令解压:

tar -xvf sparktest _xxxxxx_keytab.tar

在对集群操作之前首先需要执行:

source /opt/client/bigdata_env cd $SPARK_HOME

打开spark-sql命令行,进入spark-sql命令行后可执行SQL语句,执行命令如下:

./bin/spark-sql --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab

若需要执行SQL文件,需要上传SQL文件(如上传到“/opt/”目录),上传文件后执行命令如下:

./bin/spark-sql --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab -f /opt/script.sql

关于Spark应用开发及更多相关样例代码介绍,请参考《Spark开发指南》。

好了,本期云小课就介绍到这里,快去体验MapReduce(MRS)更多功能吧!猛戳这里

MapReduce spark 云小课

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Zookeeper详细使用解析!分布式架构中的协调服务框架最佳选型实践
下一篇:Alexnet论文解读及代码实现
相关文章