我是靠谱客的博主 眯眯眼水杯,最近开发中收集的这篇文章主要介绍使用spark-submit部署应用Spark运行时架构使用spark-submit部署应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Spark运行时架构

在分布式环境下,Spark集群采用的是主/从结构。在一个Spark集群中,有一个驱动器(driver)节点和一个执行器(executor)节点Spark应用通过一个叫做集群管理器(Cluster Manager)的外部服务在集群中的机器上启动。Spark自带的集群管理器被称为独立集群管理器。Spark也能运行在Hadoop YarnApache Mesos这两大开源集群管理器上。

集群管理器

Spark依赖于集群管理器来启动执行器节点,而在某些特殊情况下,也依赖集群管理器来启动驱动器节点,
Spark文档中始终使用驱动器节点和执行器节点的概念来描述执行Spark应用的进程。而主节点(master)工作节点(worker)的概念则被用来分别表述集群管理器中的中心化的部分和分布式的部分。这些概念很容易混淆,所以要格外小心。例如,Hadoop Yarn会启动一个叫做资源管理器(Resource Manager)的主节点守护进程,以及一系列叫做节点管理器(Node Manager)的功能做节点守护进程,而在Yarn的工作节点上,Spark不仅可以运行执行器进程,还可以运行驱动器进程。

启动一个程序

不论使用哪种集群管理器,都可以使用Spark提供的统一脚本Spark-submit将你的应用提交到集群管理器上。通过不同的配置选项,Spark-submit可以连接到响应的集群管理器上,并控制应用所使用的资源数量。在使用某些特定集群管理器时,Spark-submit也可以将driver节点运行在集群内部(比如一个Yarn的功能做节点)。

(1)用户通过Spark-submit脚本提交应用。
(2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法。
(3)driver程序与集群管理器通信,申请资源以启动executor节点。
(4)集群管理器为driver程序启动executor节点。
(5)driver进程执行用户应用中的操作。根据程序中所定义的对RDD的转化操作和行动操作,驱动器节点把工农做以人物的形式发送到executor进程。
(6)任务在executor程序中进行计算并保存结果。
(7)如果driver程序的main()方法退出,或者调用了SparkContext.stop(),驱动器程序会终止执行器进程,并且通过集群管理器释放资源。

使用spark-submit部署应用

1.提交Python应用

bin/spark-submit my_script.py

如果在调用spark-submit时除了脚本或者JAR包的名字之外没有别的参数,那么这个Spark程序只会在本地执行。当我们希望将应用提交到Spark集群上的时候,可以将独立集群的地址和希望启动的每个executor进程的大小作为附加标记提供,如下例。

2.提交应用时添加附加参数

bin/spark-submit --master spark://host:7007 --executor-memory 10g my_script.py

--master标记指定要连接的集群URL

描述
spark://host:port连接到指定端口的Spark独立集群上。默认情况下Spark独立主节点使用7007端口
mesos://host:port连接到指定端口的Mesos集群上。默认情况下Mesos主节点监听5050端口
yarn连接到一个Yarn集群,当在Yarn上运行时,需要设置环境变量HADOOP_CONF_DIR指向Hadoop配置目录,以获取集群信息
local运行本地模式,使用单核
local[N]运行本地模式,使用N个核心
local[*]运行本地模式,使用尽可能多的核心

spark-submit的一些常见标记

标记描述
–master表示要连接的集群管理器。见上图
–deploy-mode将driver部署到worker节点(cluster模式)或者作为外部客户端部署到本地(client模式),默认情况下是client模式
–py-files需要添加到PythonPath中的文件的列表,可以包含.py、.egg以及.zip文件
–name应用的显示名,会显示在Spark的网页用户界面中
–executor-memoryexecutor进程使用的内存量,以字节为单位。
–class应用程序的入口点(例如,org.apache.spark.examples.SparkPi)
–conf用key=value格式强制指定Spark配置属性,用引号括起来
–application-jar包含应用程序和所有依赖的jar包的路径,路径必须是在集群中是全局可见的,例如,hdfs://路径或者file://路径
–application-arguments传递给主类中main函数的参数

调用

export HADOOP_CONF_DIR=/etc/hadoop/conf
HADOOP_USER_NAME=hdfs spark2-submit --master 'yarn' --deploy-mode 'client' --executor-memory 4g --num-executors 20 --total-executor-cores 90 /home/marq/IFSResponseLog2LibsvmTask.py -i /ctrp/marq/response/all/{}/* -o /ctrp/marq/sample/svm/response/all/{}/
export HADOOP_CONF_DIR=/etc/hadoop/conf
HADOOP_USER_NAME=hdfs spark2-submit --master 'yarn' --deploy-mode 'client' --py-files='LogPathUtils.zip','IFSImpressionLog.zip','IFSClickLog.zip' /home/marq/IFSClickThroughDataProcessTaskNew.py -a 12 -l 7 -o /ctrp/marq/12/
HADOOP_USER_NAME=hdfs 
/data/app/spark/bin/spark-submit 
--master spark://10.80.75.142:7077 
--executor-memory 10g 
--total-executor-cores 160 
--jars /data/app/spark-tensorflow-connector_2.11-1.13.1.jar 
--conf spark.pyspark.python=/data/anaconda3/bin/python 
--conf spark.pspark.driver.python=/data/anaconda3/bin/python 
/data/prod/marq/dmp/deep-learning-ctr-prediction/python/lib/dp/spark/tfrd.py  
> /data/prod/marq/dmp/log/wdl/spark_tfrd/out-tfrd_ffm_20200611.log
spark-submit --master 'local[*]' /data/prod/marq/dmp/deep-learning-ctr-prediction/python/lib/dp/spark/tfrd.py

最后

以上就是眯眯眼水杯为你收集整理的使用spark-submit部署应用Spark运行时架构使用spark-submit部署应用的全部内容,希望文章能够帮你解决使用spark-submit部署应用Spark运行时架构使用spark-submit部署应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部