spark-submit启动应用程序

本文介绍CDH6.3.2平台的spark-submit提交任务的方法。

构建应用依赖

当提交的应用程序有依赖时,可以使用spark-submit支持的方法分发依赖到整个集群。下面介绍Scala/Java和Python两类应用程序的依赖添加方法。

构建Scala/Java应用依赖

如果一个Scala/Java应用程序有依赖,可以将应用程序及其依赖构建成一个assembly jar,提交任务时,指定assembly jar即可。

构建Python应用依赖

如果一个Python应用程序有依赖,可以使用spark-submit提供的 --py-files 参数,指定应用程序的依赖文件。

–py-files 参数支持的文件类型:.py,.zip,.egg。

推荐做法:当只有一个依赖文件时,指定 .py 文件;当有多个依赖文件时,将依赖文件打包成 .zip 文件,然后指定 .zip 文件。

启动应用程序

通用模板

./bin/spark-submit \
  --class <main-class> \
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

参数介绍:

参数说明
–class应用程序入口。(Scala和Java需要指定这个参数)。
–master应用程序运行模式。本地模式,Spark Standalone,YARN,或者其他。
–deploy-mode部署模式。cluster/client,默认是client。
–conf可以指定spark配置属性。
application-jar应用程序文件。jar或者py文件。要求绝对路径。
application-arguments应用程序参数。

本地模式

本地模式一般用于简单测试。

示例:

spark-submit \
  --master local[2] \
  --class org.apache.spark.examples.SparkPi \
  /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/spark-examples_2.11-2.4.0-cdh6.3.2.jar \
  1000

YARN模式

在CDH平台中,spark运行在yarn上,所以生产环境的spark应用都会使用yarn模式。

yarn模式(和部分其他模式)支持两种部署模式,client和cluster,默认是client。

通过 --deploy-mode 参数指定。

client部署模式

如果在spark集群中的一个gateway机器上启动应用程序,使用client部署模式是合适的。

驱动程序会直接在spark-submit进程中启动,作为客户端和集群交互,可将应用程序的输入输出打印到控制台,方便调试。

示例:

spark-submit \
  --master yarn \
  --class org.apache.spark.examples.SparkPi \
  /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/spark-examples_2.11-2.4.0-cdh6.3.2.jar \
  1000

这里没有指定 --deploy-mode ,默认使用client部署模式。

cluster部署模式

如果在spark集群之外的机器上启动应用程序,推荐使用cluster模式,这样驱动程序和执行器都在集群内部启动,降低网络延迟。

示例:

spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --class org.apache.spark.examples.SparkPi \
  /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/spark-examples_2.11-2.4.0-cdh6.3.2.jar \
  1000

执行用户

执行spark-submit的用户会成为启动应用的用户,当spark应用运行在yarn模式的时候,yarn集群的每个节点的本地操作系统中都必须存在这个用户。

例如,这里使用 bigdata 这个用户执行spark-submit启动应用程序,需要保证yarn集群的每个节点上都存在 bigdata 这个用户。如果CDH平台集成了LDAP,那应该就不需要如此操作了(个人推测)。

在CDH平台生产环境中,只需要一个或少数几个执行用户即可,用于执行生产任务。

指定HDFS的应用程序文件

上面提到 application-jar 时应用程序文件,需要指定绝对路径。url协议默认是file://,其实还可以指定其他的协议,比如 hdfs:// 。

在CDH平台中,应用程序文件放到hdfs上是一种更优雅的做法,这样就不必在每个节点上保存一份应用程序文件了。

示例:

spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --class org.apache.spark.examples.SparkPi \
  hdfs:///user/bigdata/spark-examples_2.11-2.4.0-cdh6.3.2.jar \
  1000

在Hue上启动spark应用程序

spark应用程序文件需要放到hdfs上。

1、进入Hue Spark
在这里插入图片描述

2、选择应用程序文件
在这里插入图片描述
在这里插入图片描述

3、添加类和参数
在这里插入图片描述

4、启动和停止
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值