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

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

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

image008.jpg

Spark结构

Spark的架构如下图所示:


image010.png


模块

说明

Cluster Manager

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

Application

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

Deploy Mode

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

Driver Program

Spark应用程序的主进程,运行Applicationmain()函数并创建SparkContext。负责应用程序的解析、生成Stage并调度TaskExecutor上。通常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的应用运行架构如下图所示,运行流程如下所示:

  1. 应用程序(Application)是作为一个进程的集合运行在集群上的,由Driver进行协调。
  2. 在运行一个应用时,Driver会去连接集群管理器(StandaloneMesosYARN)申请运行Executor资源,并启动ExecutorBackend。然后由集群管理器在不同的应用之间调度资源。Driver同时会启动应用程序DAG调度、Stage划分、Task生成。
  3. 然后Spark会把应用的代码发送到Executor上。
  4. 所有的Task执行完成后,用户的应用程序运行结束。


image012.png


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


image014.png




 

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

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


  • 不同Spark应用之间是不共享数据的,除非把数据存储在外部的存储系统上(比如HDFS)。
  • 因为Driver程序在集群上调度任务,所以Driver程序最好和worker节点比较近,比如在一个相同的局部网络内。

Spark on YARN有两种部署模式:

  • YARN-Cluster模式下,SparkDriver会运行在YARN集群内的ApplicationMaster进程中,ApplicationMaster已经启动之后,提交任务的客户端退出也不会影响任务的运行。
  • YRAN-Client模式下,Driver启动在客户端进程内,ApplicationMaster进程只用来向YARN集群申请资源。

运行SparkSubmit作业

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

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

通过界面提交作业

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

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


image016.png



通过后台提交作业

  1. 登录MRS集群的FusionInsight Manager页面(如果没有弹性IP,需提前购买弹性IP),新建一个用户sparktest,绑定用户组hadoopsupergroup,绑定主组Supergroup、绑定角色System_administratordefault
  2. Manager页面选择“系统 > 用户”,在新增用户的操作列单击“更多 > 下载认证凭据”。
  3. 将与作业相关的jar包上传到集群中,本示例使用Spark自带的样例jar包,位置在“$SPARK_HOME/examples/jars/”下。
  4. 上传创建的用户认证凭据到集群的“/opt”目录下,并执行如下命令解压:
    tar -xvf sparktest _xxxxxx_keytab.tar
  5. 登录集群客户端所在的节点,执行以下命令提交作业:
    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作业,作业新增完成后,可对作业进行管理。


image020.png



通过后台提交作业

  1. 登录MRS集群的FusionInsight Manager页面(如果没有弹性IP,需提前购买弹性IP),新建一个用户sparktest,绑定用户组hadoopsupergroup,绑定主组Supergroup、绑定角色System_administratordefault
  2. Manager页面选择“系统 > 用户”,在新增用户的操作列单击“更多 > 下载认证凭据”。
  3. 将与作业相关的jar包上传到集群中,本示例使用Spark自带的样例jar包,位置在“$SPARK_HOME/examples/jars/”下。
  4. 上传创建的用户认证凭据到集群的“/opt”目录下,并执行如下命令解压:
    tar -xvf sparktest _xxxxxx_keytab.tar
  5. 在对集群操作之前首先需要执行:
    source /opt/client/bigdata_env
    cd $SPARK_HOME
  6. 打开spark-sql命令行,进入spark-sql命令行后可执行SQL语句,执行命令如下:
    ./bin/spark-sql --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab
  7. 若需要执行SQL文件,需要上传SQL文件(如上传到“/opt/”目录),上传文件后执行命令如下:
    ./bin/spark-sql --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab -f /opt/script.sql


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


image023.png

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


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。