栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark Standalone环境基本原理

Spark Standalone环境基本原理

一、介绍

Standalone模式是Spark自带的一种集群模式,不同于前面本地模式启动多个进程来模拟集群的环境,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理。

二、本质

Standalone集群使用了分布式计算中的master-slave模型,master是集群中含有Master进程的节点,slave是集群中的Worker节点含有Executor进程。

三、成员角色

主节点Master:管理整个集群资源,接收提交应用,分配资源给每个应用,运行Task任务从节点Workers:管理每个机器的资源,分配对应的资源来运行Task;每个从节点分配资源信息给Worker管理,资源信息包含内存Memory和CPU Cores核数历史服务器HistoryServer(可选):Spark Application运行完成以后,保存事件日志数据至HDFS,启动HistoryServer可以查看应用运行相关信息。 四、运行部分

Spark Application运行到集群上时,由两部分组成:Driver Program和Executors。

Driver Program:

相当于AppMaster,整个应用管理者,负责应用中所有Job的调度执行;运行JVM Process,运行程序的MAIN函数,必须创建SparkContext上下文对象;一个SparkApplication仅有一个; Executors

相当于一个线程池,运行JVM Process,其中有很多线程,每个线程运行一个Task任务,一个Task任务运行需要1 Core CPU,所有可以认为Executor中线程数就等于CPU Core核数;一个Spark Application可以有多个,可以设置个数和资源信息; 五、程序执行阶段

    用户程序创建 SparkContext 时,新创建的 SparkContext 实例会连接到 ClusterManager。 Cluster Manager 会根据用户提交时设置的 CPU 和内存等信息为本次提交分配计算资源,启动 Executor。Driver会将用户程序划分为不同的执行阶段Stage,每个执行阶段Stage由一组完全相同Task组成,这些Task分别作用于待处理数据的不同分区。在阶段划分完成和Task创建后, Driver会向Executor发送 Task;Executor在接收到Task后,会下载Task的运行时依赖,在准备好Task的执行环境后,会开始执行Task,并且将Task的运行状态汇报给Driver;Driver会根据收到的Task的运行状态来处理不同的状态更新。 Task分为两种:一种是Shuffle Map Task,它实现数据的重新洗牌,洗牌的结果保存到Executor 所在节点的文件系统中;另外一种是Result Task,它负责生成结果数据;Driver 会不断地调用Task,将Task发送到Executor执行,在所有的Task 都正确执行或者超过执行次数的限制仍然没有执行成功时停止;
六、核心概念

Task:被分配到各个 Executor 的单位工作内容,它是 Spark 中的最小执行单位,一般来说有多少个 Paritition(物理层面的概念,即分支可以理解为将数据划分成不同部分并行处理),就会有多少个 Task,每个 Task 只会处理单一分支上的数据。Job:由多个 Task 的并行计算部分,一般 Spark 中的 action 操作(如 save、collect,后面进一步说明),会生成一个 Job。Stage:Job 的组成单位,一个 Job 会切分成多个 Stage,Stage 彼此之间相互依赖顺序执行,而每个 Stage 是多个 Task 的集合,类似 map 和 reduce stage。 七、Spark Standalone部署模式DeployMode 一、介绍

Spark Application提交运行时部署模式Deploy Mode,表示的是Driver Program运行的地方,要么是提交应用的Client:client,要么是集群中从节点(Standalone:Worker,YARN:NodeManager):cluster。

二、两种模式区别

Cluster和Client模式最最本质的区别是:Driver程序运行在哪里。

三、client模式

Driver 在本地运行Executor 在集群的Worker节点上运行以Spark Application运行到Standalone集群上为例,前面提交运行圆周率PI或者词频统计WordCount程序时,默认DeployMode为Client,表示应用Driver Program运行在提交应用Client主机上(启动JVM Process进程),示意图如下:

# 假设运行圆周率PI程序,采用client模式,命令如下:
SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit 
--master spark://node1.itcast.cn:7077,node2.itcast.cn:7077 
--deploy-mode client 
--driver-memory 512m 
--executor-memory 512m 
--num-executors 1 
--total-executor-cores 2 
--conf "spark.pyspark.driver.python=/root/anaconda3/bin/python3" 
--conf "spark.pyspark.python=/root/anaconda3/bin/python3" 
${SPARK_HOME}/examples/src/main/python/pi.py 

四、cluster模式

在cluster模式中,无论是Driver还是Executor都是运行在Worker节点上。

注意:

测试运行程序时,可以使用client和cluster部署模式生产环境中,建议使用cluster部署模式,必须使用此种模式

如果采用cluster模式运行应用,应用Driver Program运行在集群从节点Worker某台机器上,示意图如下

# 假设运行圆周率PI程序,采用cluster模式,命令如下:
SPARK_HOME=/export/server/spark
${SPARK_HOME}/bin/spark-submit 
--master spark://node1.itcast.cn:7077,node2.itcast.cn:7077 
--deploy-mode cluster  
--driver-memory 512m 
--executor-memory 512m 
--num-executors 1 
--total-executor-cores 2 
--conf "spark.pyspark.driver.python=/root/anaconda3/bin/python3" 
--conf "spark.pyspark.python=/root/anaconda3/bin/python3" 
${SPARK_HOME}/examples/src/main/python/pi.py 
10

![在这里插入图片描述](https://img-blog.csdnimg.cn/30d316b015c64094b8be1c0fa46a4df9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARXVyb3BlYW5TaGVpaw==,size_20,color_FFFFFF,t_70,g_se,x_16

五、两者比较

Cluster和Client模式最最本质的区别是:Driver程序运行在哪里。

cluster模式:生产环境中使用该模式

Driver程序在YARN集群中应用的运行结果不能在客户端client显示 client模式:学习测试时使用,开发不用,了解即可

Driver运行在Client上的SparkSubmit进程中应用程序运行结果会在客户端显示

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728939.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号