文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

理解Spark运行模式(一)(Yarn Client)

2021-12-17 10:45

关注

Spark运行模式有Local,STANDALONE,YARN,MESOS,KUBERNETES这5种,其中最为常见的是YARN运行模式,它又可分为Client模式和Cluster模式。这里以Spark自带的SparkPi来说明这些运行模式。

本文作为第一篇,先结合SparkPi程序来说明Yarn Client方式的流程。

以下是Spark中examples下的SparkPi程序。

 1 // scalastyle:off println
 2 package org.apache.spark.examples
 3 
 4 import scala.math.random
 5 
 6 import org.apache.spark.sql.SparkSession
 7 
 8 
 9 object SparkPi {
10   def main(args: Array[String]) {
11     val spark = SparkSession
12       .builder
13       .appName("Spark Pi")
14       .getOrCreate()
15     val slices = if (args.length > 0) args(0).toInt else 2
16     val n = math.min(100000L * slices, Int.MaxValue).toInt // avoid overflow
17     val count = spark.sparkContext.parallelize(1 until n, slices).map { i =>
18       val x = random * 2 - 1
19       val y = random * 2 - 1
20       if (x*x + y*y <= 1) 1 else 0
21     }.reduce(_ + _)
22     println(s"Pi is roughly ${4.0 * count / (n - 1)}")
23     spark.stop()
24   }
25 }
26 // scalastyle:on println

这个是Spark用于计算圆周率PI的scala程序,思想很简单,就是利用以坐标轴原点为中心画一个边长为2的正方形,原点距离正方形的上下左右边距离均为1,然后再以原点为中心画一个半径为1的圆,此时正方形的面积是4,圆的面积是PI,上面程序所做的就是在正方形里随机取若干个点(比如上面程序默认的20万),计算有多少个点落在圆形里面,那么可以认为这个等式是成立的,即:“圆面积” / “正方形面积” = “落在圆内的点数” / “正方形内的点数”,也就是,PI / 4 = count / (n-1),所以PI = 4 * count / (n-1)。

Spark程序可以分为Driver部分和Executor部分,Driver可以认为是程序的master部分,具体而言1~16行和22~25行都是Driver部分,其余的17~21行是Executor部分,即执行具体逻辑计算的部分,上面程序slices默认是2,也就是说,默认会有2个Task来执行计算。

下面来以yarn client方式来执行这个程序,注意执行程序前先要启动hdfs和yarn,最好同时启动spark的history server,这样即使在程序运行完以后也可以从Web UI中查看到程序运行情况。

输入以下命令:

[root@BruceCentOS4 spark]# $SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client $SPARK_HOME/examples/jars/spark-examples_2.11-2.3.0.jar

以下是程序运行输出信息部分截图,

开始部分:

中间部分:

结束部分:

由于程序是以yarn client方式运行的,因此Driver是运行在客户端的(BruceCentOS4上的SparkSubmit进程),同时在BruceCentOS和BruceCentOS3上各运行了1个Executor进程(进程名字:CoarseGrainedExecutorBackend),另外在BruceCentOS上还有1个名字为ExecutorLauncher的进程,这个进程主要是作为Yarn程序中的ApplicationMaster,因为Driver运行在客户端,它仅仅作为ApplicationMaster为运行Executor向ResourceManager申请资源。

SparkUI上的Executor信息:

BruceCentOS4上的客户端进程(包含Spark Driver):

BruceCentOS上的ApplicationMaster和Executor:

BruceCentOS3上的Executor:

 

下面具体描述下Spark程序在yarn client模式下运行的具体流程。

这里是一个流程图:

以上就是个人对Spark运行模式(yarn client)的一点理解,其中参考了“求知若渴 虚心若愚”博主的“Spark(一): 基本架构及原理”的部分内容(其中基于Spark2.3.0对某些细节进行了修正),在此表示感谢。

 

 

 

 

 

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯