用户可将自己开发的程序提交到MRS中,执行程序并获取结果。本章节教您在MRS集群页面如何提交一个新的Spark作业。
前提条件
用户已经将运行作业所需的程序包和数据文件上传至OBS系统或HDFS中。
通过界面提交作业
1.登录MRS管理控制台。
2.选择“集群列表 > 现有集群”,选中一个运行中的集群并单击集群名称,进入集群信息页面。
3.若集群开启Kerberos认证时执行该步骤,若集群未开启Kerberos认证,请无需执行该步骤。
在“概览”页签的基本信息区域,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。
说明
当IAM用户的用户组的所属策略从MRS ReadOnlyAccess向MRS CommonOperations、MRS FullAccess、MRS Administrator变化时,由于集群节点的SSSD(System Security Services Daemon)缓存刷新需要时间,因此同步完成后,请等待5分钟,等待新修改策略生效之后,再进行提交作业。否则,会出现提交作业失败的情况。
当IAM用户的用户组的所属策略从MRS CommonOperations、MRS FullAccess、MRS Administrator向MRS ReadOnlyAccess变化时,由于集群节点的SSSD缓存刷新需要时间,因此同步完成后,请等待5分钟,新修改策略才能生效。
4.单击“作业管理”,进入“作业管理”页签。
5.单击“添加”,进入“添加作业”页面。
6.配置作业信息。“作业类型”选择“SparkSubmit”并参考下表配置SparkSubmit作业其他参数信息。
作业配置信息
参数 | 参数说明 |
---|---|
作业名称 | 作业名称,只能由字母、数字、中划线和下划线组成,并且长度为1~64个字符。 说明 建议不同的作业设置不同的名称。 |
执行程序路径 | 待执行程序包地址,需要满足如下要求: 最多为1023字符,不能包含 ;l&>,<'$特殊符号和空格。 执行程序路径可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。 - OBS:以“obs://”开头。示例: obs://wordcount/program/xxx.jar。 − HDFS:以“/user”开头。数据导入HDFS请参考导入导出数据章节中的“导入数据”。 SparkScript和HiveScript需要以“.sql”结尾,MapReduce需要以“.jar”结尾,Flink和SparkSubmit需要以“.jar”或“.py”结尾。sql、jar、py不区分大小写。 |
运行程序参数 | 可选参数,为本次执行的作业配置相关优化参数(例如线程、内存、CPU核数等),用于优化资源使用效率,提升作业的执行性能。 常用运行程序参数如下表“运行程序参数”。 |
执行程序参数 | 可选参数,程序执行的关键参数,该参数由用户程序内的函数指定,MRS只负责参数的传入。多个参数间使用空格隔开。 最多为150000字符,不能包含 ;l&><'$特殊字符,可为空。 注意 若输入带有敏感信息(如登录密码)的参数可能在作业详情展示和日志打印中存在暴露的风险,请谨慎操作。 |
服务配置参数 | 可选参数,用于为本次执行的作业修改服务配置参数。该参数的修改仅适用于本次执行的作业,如需对集群永久生效,请参考配置服务参数页面进行修改。 如需添加多个参数,请单击右侧增加,如需删除参数,请单击右侧“删除”。 常用服务配置参数如下表“服务配置参数”。 说明 如需运行长时间作业如SparkStreaming等,且需要访问OBS,需要通过“服务配置参数”传入访问OBS的AK/SK。 |
命令参考 | 用于展示提交作业时提交到后台执行的命令。 |
运行程序参数
参数 | 参数说明 | 取值样例 |
---|---|---|
--conf | 添加任务配置项。 | spark.executor.memory=2G |
--driver-memory | 设置driver的运行内存。 | 2G |
--num-executors | 设置executor启动数量。 | 5 |
--executor-cores | 设置executor核数。 | 2 |
--class | 设置任务的主类。 | org.apache.spark.examples.SparkPi |
--files | 上传文件给任务,可以是自己定义的配置文件或者某些数据文件。来源可以是OBS或者HDFS。 | - |
--jars | 上传任务额外依赖包,用于给任务添加任务的外部依赖包。 | - |
--executor-memory | 设置executor内存。 | 2G |
--conf spark-yarn.maxAppAttempts | 控制AM的重试次数。 | 设置为0时,不允许重试;设置为1时,允许重试一次。 |
服务配置参数
参数 | 参数说明 | 取值样例 |
---|---|---|
fs.obs.access.key | 访问OBS的密钥ID。 | - |
fs.obs.secret.key | 访问OBS与密钥ID对应的密钥。 | - |
7.确认作业配置信息,单击“确定”,完成作业的新增。
作业新增完成后,可对作业进行管理。
通过后台提交作业
MRS 3.x及之后版本客户端默认安装路径为“/opt/Bigdata/client”,MRS 3.x之前版本为“/opt/client”。具体以实际为准。
1.参考创建用户页面,创建一个用于提交作业的用户。
本示例创建一个用户开发场景使用的机机用户,并分配了正确的用户组(hadoop、supergroup)、主组(supergroup)和角色权限(System_administrator、default)。
2.下载认证凭据。
- 对于MRS 3.x及之后版本集群,请登录FusionInsight Manager页面选择“系统 > 权限 > 用户”,在新增用户的操作列单击“更多 > 下载认证凭据”。
- 对于MRS 3.x之前版本集群,请登录MRS Manager页面选择“系统设置 > 用户管理”,在新增用户的操作列单击“更多 > 下载认证凭据”。
3.将与作业相关的jar包上传到集群中,本示例使用Spark自带的样例jar包,位置在“$SPARK_HOME/examples/jars”下。
4.上传步骤2创建的用户认证凭据到集群的“/opt”目录下,并执行如下命令解压。
tar –xvfMRSTest_xxxxxx_keytab.tar
您将会得到user.keytab和krb5.conf两个文件。
5.在对集群操作之前首先需要执行:
source /opt/Bigdata/client/bigdata_env
cd $SPARK_HOME
6.提交spark作业,使用的命令如下:
./bin/spark-submit--master yarn --deploy-mode client --conf spark.yarn.principal=MRSTest --conf
spark.yarn.keytab=/opt/user.keytab --class org.apache.spark.examples.SparkPi
examples/jars/spark-examples_2.11-2.3.2-mrs-2.0.jar 10
参数解释:
1.yarn的计算能力,指定使用client模式提交该作业。
2.Spark作业的配置项,这里是传入了认证文件和用户名。
3.spark.yarn.principal 第一步创建的用户。
4.spark.yarn.keytab 认证使用的keytab文件。
5.xx.jar 作业的使用的jar。