做房产经纪人要自己花钱开网站吗,美间在线设计平台,驻马店网站建设维护,公司网站是做的谷歌的2019独角兽企业重金招聘Python工程师标准 Spark架构与作业执行流程简介 博客分类#xff1a; spark Local模式 运行Spark最简单的方法是通过Local模式#xff08;即伪分布式模式#xff09;。 运行命令为#xff1a;./bin/run-example org.apache.spark.exam… 2019独角兽企业重金招聘Python工程师标准 Spark架构与作业执行流程简介 博客分类 spark Local模式 运行Spark最简单的方法是通过Local模式即伪分布式模式。 运行命令为./bin/run-example org.apache.spark.examples.SparkPi local 基于standalone的Spark架构与作业执行流程 Standalone模式下集群启动时包括Master与Worker其中Master负责接收客户端提交的作业管理Worker。提供了Web展示集群与作业信息。 名词解释 1. Standalone模式下存在的角色。 Client客户端进程负责提交作业到Master。 MasterStandalone模式中主控节点负责接收Client提交的作业管理Worker并命令Worker启动Driver和Executor。 WorkerStandalone模式中slave节点上的守护进程负责管理本节点的资源定期向Master汇报心跳接收Master的命令启动Driver和Executor。 Driver 一个Spark作业运行时包括一个Driver进程也是作业的主进程负责作业的解析、生成Stage并调度Task到Executor上。包括DAGSchedulerTaskScheduler。 Executor即真正执行作业的地方一个集群一般包含多个Executor每个Executor接收Driver的命令Launch Task一个Executor可以执行一到多个Task。 2.作业相关的名词解释 Stage一个Spark作业一般包含一到多个Stage。 Task一个Stage包含一到多个Task通过多个Task实现并行运行的功能。 DAGScheduler 实现将Spark作业分解成一到多个Stage每个Stage根据RDD的Partition个数决定Task的个数然后生成相应的Task set放到TaskScheduler中。 TaskScheduler实现Task分配到Executor上执行。 提交作业有两种方式分别是Driver作业的master负责作业的解析、生成stage并调度task到包含DAGScheduler运行在Worker上Driver运行在客户端。接下来分别介绍两种方式的作业运行原理。 Driver运行在Worker上 通过org.apache.spark.deploy.Client类执行作业作业运行命令如下 ./bin/spark-class org.apache.spark.deploy.Client launch spark://host:port file:///jar_url org.apache.spark.examples.SparkPi spark://host:port 作业执行流如图1所示。 图1 作业执行流程描述 客户端提交作业给Master Master让一个Worker启动Driver即SchedulerBackend。Worker创建一个DriverRunner线程DriverRunner启动SchedulerBackend进程。 另外Master还会让其余Worker启动Exeuctor即ExecutorBackend。Worker创建一个ExecutorRunner线程ExecutorRunner会启动ExecutorBackend进程。 ExecutorBackend启动后会向Driver的SchedulerBackend注册。SchedulerBackend进程中包含DAGScheduler它会根据用户程序生成执行计划并调度执行。对于每个stage的task都会被存放到TaskScheduler中ExecutorBackend向SchedulerBackend汇报的时候把TaskScheduler中的task调度到ExecutorBackend执行。 所有stage都完成后作业结束。 Driver运行在客户端 直接执行Spark作业作业运行命令如下示例 ./bin/run-example org.apache.spark.examples.SparkPi spark://host:port 作业执行流如图2所示。 图2 作业执行流程描述 客户端启动后直接运行用户程序启动Driver相关的工作DAGScheduler和BlockManagerMaster等。 客户端的Driver向Master注册。 Master还会让Worker启动Exeuctor。Worker创建一个ExecutorRunner线程ExecutorRunner会启动ExecutorBackend进程。 ExecutorBackend启动后会向Driver的SchedulerBackend注册。Driver的DAGScheduler解析作业并生成相应的Stage每个Stage包含的Task通过TaskScheduler分配给Executor执行。 所有stage都完成后作业结束。 基于Yarn的Spark架构与作业执行流程 这里Spark AppMaster相当于Standalone模式下的SchedulerBackendExecutor相当于standalone的ExecutorBackendspark AppMaster中包括DAGScheduler和YarnClusterScheduler。 Spark on Yarn的执行流程可以参考http://www.csdn.net/article/2013-12-04/2817706--YARN spark on Yarn部分。 这里主要介绍一下Spark ApplicationMaster的主要工作。代码参考Apache Spark 0.9.0版本ApplicationMaster.scala中的run()方法。 步骤如下 设置环境变量spark.local.dir和spark.ui.port。NodeManager启动ApplicationMaster的时候会传递LOCAL_DIRSYARN_LOCAL_DIRS变量这个变量会被设置为spark.local.dir的值。后续临时文件会存放在此目录下。获取NodeManager传递给ApplicationMaster的appAttemptId。创建AMRMClient即ApplicationMaster与ResourceManager的通信连接。启动用户程序startUserClass()使用一个线程通过发射调用用户程序的main方法。这时候用户程序中会初始化SparkContext它包含DAGScheduler和TaskScheduler。向ResourceManager注册。向ResourceManager申请containers它根据输入数据和请求的资源调度Executor到相应的NodeManager上这里的调度算法会考虑输入数据的locality。 http://m635674608.iteye.com/admin/blogs/new 转载于:https://my.oschina.net/xiaominmin/blog/1597267