DLI Spark-submit 简介
DLI Spark-submit是一个用于提交Spark作业到DLI服务端的命令行工具,该工具提供 与开源Spark兼容的命令行。
准备工作
在使用DLI Spark-submit前,需要进行如下操作:
1. 授权。
DLI使用统一身份认证服务(Identity and Access Management,简称IAM)进行 精细的企业级多租户管理。该服务提供用户身份认证、权限分配、访问控制等功 能,可以帮助您安全地控制华为云资源的访问。
通过IAM,您可以在华为云账号中给员工创建IAM用户,并使用策略来控制他们对 华为云资源的访问范围。
目前包括角色(粗粒度授权)和策略(细粒度授权)。具体的权限介绍和授权操 作请参考《数据湖探索用户指南》。
2. 创建队列。在“队列类型”中选择“通用队列”,即Spark作业的计算资源。
DLI管理控制台中,创建队列的操作入口有三个,分别在“总览”页面、“SQL编 辑器”页面和“队列管理”页面。
– 单击总览页面右上角 进行创建队列。
– 在“队列管理”页面创建队列。
i. 在DLI管理控制台的左侧导航栏中,选择“队列管理”。
ii. 在“队列管理”页面右上角 进行创建队列。
– 在“SQL编辑器”页面创建队列。
i. 在DLI管理控制台的顶部菜单栏中,选择“SQL编辑器”。
ii. 在左侧导航栏的 页签,单击“队列”右侧的 创建队列。
说明
如果创建队列的用户不是管理员用户,在创建队列后,需要管理员用户赋权后才可使用。
关于赋权的具体操作请参考《数据湖探索用户指南》。
DLI 客户端工具下载
您可以在DLI管理控制台下载DLI客户端工具。
步骤1 登录DLI管理控制台。
步骤2 单击总览页右侧“常用链接”中的“SDK下载”。
步骤3 在“DLI SDK DOWNLOAD”页面,单击“huaweicloud-dli-clientkit-<version>”即 可下载DLI客户端工具。
说明
DLI客户端空间命名为“huaweicloud-dli-clientkit-<version>-bin.tar.gz”,支持在Linux环境中 使用,且依赖JDK 1.8及以上版本。
----结束
配置 DLI Spark-submit
使用spark-submit的机器安装JDK 1.8或以上版本并配置环境变量,推荐在Linux环境下 使用spark-submit工具。
步骤1 下载并解压工具包“huaweicloud-dli-clientkit-<version>-bin.tar.gz”,其中version为 版本号,以实际版本号为准。
步骤2 进入解压目录,里面有三个子目录bin、conf、lib,分别存放了Spark-submit相关的执 行脚本、配置文件和依赖包。
步骤3 进入配置文件conf目录,修改“client.properties”中的配置项,(具体配置项参考表 2-17)。
表2-17 DLI 客户端工具配置参数
属性项 必须配
置
默认值 描述
dliEndPon
t 否 - DLI服务的域名。在地区和终端节点获取
DLI对应区域的域名。
如果不配置,程序根据region参数来确定 华为云对应区域的域名。
obsEndPo
int 是
obs.cn-north-1.myhua weicloud.com
OBS服务的域名。在地区和终端节点获取 OBS对应区域的域名。
属性项 必须配 置
默认值 描述
bucketNa
me 是 - OBS上的桶名称。该桶用于存放Spark程
序中使用的jar包、Python程序文件、配置 文件等。
obsPath 是 dli-spark- submit-resources
OBS上存放jar包、Python程序文件、配置 文件等的目录,改目录在bucketName指 定的桶下。如果该目录不存在,程序会自 动创建。
localFileP
ath 是 - 存放Spark程序中使用的jar包、Python程 序文件、配置文件等的本地目录。
程序会自动将Spark程序依赖到的相关文 件上传的OBS路径,并加载到DLI服务端 资源包。
ak 是 - 用户的Access Key。
sk 是 - 用户的Secret Key。
projectId 是 - 用户访问的DLI服务使用的项目编号。
region 是 - 对接的DLI服务的Region,例如:cn-north-1。
根据Spark应用程序的需要,修改“spark-defaults.conf”中的配置项,配置项兼容开 源Spark配置项,参考开源Spark的配置项说明。
----结束
使用 Spark-submit 提交 Spark 作业
步骤1 进入工具文件bin目录,执行spark-submit命令,并携带相关参数。
命令执行格式:
spark-submit [options] <app jar | python file> [app arguments]
表2-18 DLI Spark-submit 参数列表
参数名称 参数值 描述
--class <CLASS_NAME
> 提交的Java/Scala应用程序的主类名称。
--conf <PROP=VALUE
> Spark程序的参数,可以通过在conf目录下的 spark-defaults.conf中配置。如果命令中与配置文 件中同时配置,优先使用命令指定的参数值。
说明多个conf时,格式为:--conf key1=value1 --conf key2=value2
参数名称 参数值 描述
--jars <JARS> Spark应用依赖的jar包名称,存在多个时使用","分 割。jar包文件需要提前保存在client.properties文 件中localFilePath配置的本地路径中。
--name <NAME> Spark应用的名称。
--queue <QUEUE_NAM
E> DLI服务端Spark队列名称,作业会提交到该队列 中执行。
--py-files <PY_FILES> Spark应用依赖的Python程序文件名称,存在多个 时使用","分割。Python程序文件文件需要提前保 存在client.properties文件中localFilePath配置的 本地路面中。
-s,--skip- upload-resources
<all | app |
deps> 是否跳过,将jar包、Python程序文件、配置文件 上传到OBS和加载到DLI服务端资源列表。当相关 资源文件已经加载到DLI服务资源列表中,可以使 用该参数跳过该步骤。
不携带该参数时,默认会上传和加载命令中的所 有资源文件到DLI服务中。
● all:跳过所有资源文件的上传和加载
● app:跳过Spark应用程序文件的上传和加载
● deps:跳过所有依赖文件的上传和加载 -h,--help - 打印命令帮助
命令举例:
./submit --name <name> --queue <queue_name> --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.1.0.luxor.jar 10
./spark-submit --name <name> --queue <queue_name> word_count.py 说明
请使用"./spark-submit",不要使用"spark-submit",后者可能会使用本地环境中已有的Spark环 境,而不是DLI队列。
----结束