首页 > 编程知识 正文

client中文什么意思,spark实战

时间:2023-05-04 03:49:21 阅读:107764 作者:3450

文章目录概要Client模式演示说明Cluster模式演示说明Cluster模式与Cluster模式的区别Spark on YARNYARN Client模式演示说明YARN Cluster模式演示说明程序主函数执行情况补充

个人资料

Spark Application提交运行时部署模式Deploy Mode,并指示驱动程序程序的运行位置。 是要提交APP应用的客户端:客户端,还是群集中的从节点(Standalone:Worker,YARN:NodeManager ):cluster。

默认值为client,在实际开发环境中,特别是在生产环境中,使用cluster部署模式提交APP应用程序的执行。

客户端模式演示说明以Spark Application在标准群集上运行为例。 上次提交圆周率PI或字数统计信息WordCount程序运行时,缺省深度模式为Client,表示APP驱动程序正在提交APP client主机上运行

运行圆周率PI程序,采用客户端模式,命令如下:

spark _ home=/export/server/spark $ { spark _ home } /振动的高跟鞋/spark-submit--master spark 3360//master 360

在群集模式演示中,在群集模式下运行APP时,APP驱动程序程序将在具有从群集节点Worker的计算机上运行,映像如下所示:

假设您运行圆周率PI程序并采用了cluster模式,则命令将如下所示:

spark _ home=/export/server/spark $ { spark _ home } /振动的高跟鞋/spark-submit--master spark 3360//master 360 --executor-memory 512 m--num-executors1-- total-executor-cores2$ { spark _ home }/examples/jars/spar

开车时注意差异!

Cilent模式和Cluster模式的区别Cluster模式和Client模式最本质的区别在于驱动程序在哪里运行。

群集模式:客户端无法显示在YARN群集中由在生产环境中使用此模式的驱动程序应用的执行结果。 在学习测试时使用。 如果在驱动程序中开发了无法在客户端上执行的SparkSubmit进程,则执行APP的结果将显示spark on YARN APP应用程序将在客户端上执行yarn。

1 .负责1.AppMaster、APP应用管理员、APP应用运行时资源申请(RM )及任务的执行与监控。 2 .启动进程进程并执行任务任务。 例如,运行MapReduce程序。 此时,这些进程都是映射任务和记录任务,都在容器容器中运行。 spark APP应用程序执行群集配置:

1 .负责驱动程序程序、APP应用程序管理员、整个APP应用程序的运行时资源申请和任务的执行和监控。 申请资源并运行执行程序。 2 .执行程序,进程执行任务任务并缓存数据。 在Hadoop YARN上提交APP应用程序时,它包括两个部分: APP应用程序管理员AppMaster和应用进程Process,如MapReduce程序映射任务和还原任务,如下图所示。

如果Spark Application提交在群集上运行,则APP应用程序体系结构由两部分组成。 驱动程序程序(运行资源请求和调度作业)和执行作业(运行作业任务和缓存数据)都是JVM进程。

因此,Spark Application在YARN上运行时,采用深度模式的体系结构不同,企业的实际生产环境还是以集群模式为主,客户端模式用于开发测试,是两者的区别

在YARN Client模式演示中,在YARN Client模式下进行驱动

er在任务提交的本地机器上运行,示意图如下:

具体流程步骤如下:

1.Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster;2.、随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申 请Executor内存;3.ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程;4.Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数;5.之后执行到Action算子时,触发一个Job,并根据宽依赖开始划分Stage,每个Stage生成对应的TaskSet,之后将Task分发到各个Executor上执行。

以运行词频统计WordCount程序为例,提交命令如下:

/export/server/spark/震动的高跟鞋/spark-submit --master yarn --deploy-mode client --driver-memory 512m --executor-memory 512m --executor-cores 1 --num-executors 2 --queue default --class cn.kaizi.spark.start.SparkSubmit hdfs://master:8020/spark/apps/spark-day02_2.11-1.0-SNAPSHOT.jar /datas/wordcount.data /datas/swc-client

YARN Cluster 模式演示说明

在YARN Cluster模式下,Driver运行在NodeManager Contanier中,此时Driver与AppMaster合为一体,示意图如下:

具体流程步骤如下:

1.任务提交后会和ResourceManager通讯申请启动ApplicationMaster;2.、随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver;3.Driver启动后向ResourceManager申请Executor内存,ResourceManager接到ApplicationMaster的资源申请后会分配Container,然后在合适的NodeManager上启动Executor进程;4.Executor进程启动后会向Driver反向注册;5.Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行;

以运行词频统计WordCount程序为例,提交命令如下:

/export/server/spark/震动的高跟鞋/spark-submit --master yarn --deploy-mode cluster --driver-memory 512m --executor-memory 512m --executor-cores 1 --num-executors 2 --queue default --class cn.kaizi.spark.start.SparkSubmit hdfs://master:8020/spark/apps/spark-day02_2.11-1.0-SNAPSHOT.jar /datas/wordcount.data /datas/swc-cluster

我在 slave2 中运行上述命令:(同时查看三台主机的jps进程情况,注意蓝色标注内容)

通过历史服务器对比的产看俩种模式下的executor情况

如下是 client 模式下的,发现 driver 不可以查看日志信息。

对比查看 cluster 模式下 driver 可以查看日志信息。

程序的main函数执行情况

Spark Application应用程序运行时,无论client还是cluster部署模式DeployMode,当Driver Program和Executors启动完成以后,就要开始执行应用程序中MAIN函数的代码,以词频统计WordCount程序为例剖析讲解。

如下图:是之前做的 WordCount 程序案例代码

Scala代码:WordCount、TopKey

1.构建 SparkContext 对象和关闭 SparkContext 资源,都是在 Driver Program 中执行,上述图中①和③都是。如下图解释:
2.上图中②的加载数据据【A】、处理数据【B】和输出数据【C】代码,都在 Executors 上执行,从 WEB UI 监控页面可以看到此 Job(RDD#action触发一个Job)对应DAG图,如下图所示:

将结果数据 resultRDD调用 saveAsTextFile 方法,保存数据到外部存储系统中,代码在 Executor 中执行的。但是如果 resultRDD 调用 take、collect 或 count 方法时,获取到最终结果数据返回给 Driver , 代码如下: val resultArray: Array[(String, Int)] = resultRDD.collect()resultArray.foreach(println)

运行应用程序时,将数组resultArray数据打印到标准输出,Driver Program端日志打印结果:

综上所述Spark Application中Job执行有两个主要点:

1.RDD输出函数分类两类 第一类:返回值给Driver Progam,比如count、first、take、collect等第二类:没有返回值,比如直接打印结果、保存至外部存储系统(HDFS文件)等 2.在Job中从读取数据封装为RDD和一切RDD调用方法都是在Executor中执行,其他代码都是在Driver Program中执行 SparkContext创建与关闭、其他变量创建等在Driver Program中执行RDD调用函数都是在Executors中执行 补充

当Spark Application运行在集群上时,主要有四个部分组成,如下示意图:

1.Driver:是一个JVM Process 进程,编写的Spark应用程序就运行在Driver上,由Driver进程执行。2.Master(ResourceManager):是一个JVM Process 进程,主要负责资源的调度和分配,并进行集群的监控等职责。3.Worker(NodeManager):是一个JVM Process 进程,一个Worker运行在集群中的一台服务器上,主要负责两个职责,一个是用自己的内存存储RDD的某个或某些partition;另一个是启动其他进程和线程(Executor),对RDD上的partition进行并行的处理和计算。4.Executor:是一个JVM Process 进程,一个Worker(NodeManager)上可以运行多个Executor,Executor通过启动多个线程(task)来执行对RDD的partition进行并行计算,也就是执行我们对RDD定义的例如map、flatMap、reduce等算子操作。

Spark 支持多种集群管理器(Cluster Manager),取决于传递给 SparkContext 的MASTER环境变量的值:local、spark、yarn,区别如下:

Master URLMeaninglocal在本地运行,只有一个工作进程,无并行计算能力。local[K]在本地运行,有K个工作进程,通常设置K为机器的CPU核心数量。local[*]在本地运行,工作进程数量等于机器的CPU核心数量。spark://HOST:PORT以Standalone模式运行,这是Spark自身提供的集群运行模式,默认端口号: 7077。Client部署模式:7077 。Cluster部署模式:6066mesos://HOST:PORT在Mesos集群上运行,Driver进程和Worker进程运行在Mesos集群上,部署模式必须使用固定值:–deploy-mode cluster。yarn-client --master yarn --deploy-mode client在Yarn集群上运行,Driver进程在本地,Executor进程在Yarn集群上,部署模式必须使用固定值:–deploy-mode client。Yarn集群地址必须在HADOOP_CONF_DIR or YARN_CONF_DIR变量里定义。yarn-cluster --master yarn --deploy-mode cluster在Yarn集群上运行,Driver进程在Yarn集群上,Executor进程也在Yarn集群上,部署模式必须使用固定值:–deploy-mode cluster。Yarn集群地址必须在HADOOP_CONF_DIR or YARN_CONF_DIR变量里定义。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。