更新时间:2022-12-14 GMT+08:00

运行HiveSql作业

用户可将自己开发的程序提交到MRS中,执行程序并获取结果。本章节教您在MRS集群页面如何提交一个新的HiveSql作业。HiveSql作业用于提交SQL语句和SQL脚本文件查询和分析数据,包括SQL语句和Script脚本两种形式,如果SQL语句涉及敏感信息,请使用Script提交。

前提条件

用户已经将运行作业所需的程序包和数据文件上传至OBS系统或HDFS中。

通过界面提交作业

  1. 登录MRS管理控制台。
  2. 选择“集群列表 > 现有集群”,选中一个运行中的集群并单击集群名称,进入集群信息页面。
  3. 若集群开启Kerberos认证时执行该步骤,若集群未开启Kerberos认证,请无需执行该步骤。

    “概览”页签的基本信息区域,单击“IAM用户同步”右侧的“同步”进行IAM用户同步,具体介绍请参考IAM用户同步MRS说明

    • 当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. 配置作业信息。

    • 若集群为MRS 2.0.1及之后版本,“作业类型”选择“HiveSQL”,请参考表1配置HiveSQL作业信息。
    • 若集群为MRS 2.0.1之前版本,“作业类型”选择“Hive Script”,请参考表4配置Hive Script作业信息。
    表1 作业配置信息

    参数

    参数说明

    作业名称

    作业名称,只能由字母、数字、中划线和下划线组成,并且长度为1~64个字符。

    说明:

    建议不同的作业设置不同的名称。

    SQL类型

    SQL查询语句提交类型。

    • SQL
    • Script

    SQL语句

    “SQL类型”参数为“SQL”时参数有效,请输入待运行的SQL语句,然后单击“检查”来检查SQL语句的正确性,确保输入语句正确。如果同时需要提交多条语句并执行,使用“;”分隔不同语句。

    SQL文件

    “SQL类型”参数为“Script”时参数有效,待执行SQL文件的路径,需要满足以下要求。

    • 最多为1023字符,不能包含;|&>,<'$特殊字符,且不可为空或全空格。
    • 执行程序路径可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。
      • OBS:以“obs://”开头。示例:obs://wordcount/program/xxx.jar。
      • HDFS:以“/user”开头。数据导入HDFS请参考导入数据
    • SparkScript和HiveScript需要以“.sql”结尾,MapReduce需要以“.jar”结尾,Flink和SparkSubmit需要以“.jar”“.py”结尾。sql、jar、py不区分大小写。
    说明:

    MRS 1.9.2及之后版本的集群,存储在OBS上的文件路径支持以“obs://”开头格式。如需使用该格式提交作业,访问OBS需要配置对应权限。

    • 创建集群时开启“OBS权限控制”功能时,可直接使用“obs://”路径,无需单独配置。
    • 创建集群时未开启或不支持“OBS权限控制”功能时,请参考访问OBS页面进行配置。

    运行程序参数

    可选参数,为本次执行的作业配置相关优化参数(例如线程、内存、CPU核数等),用于优化资源使用效率,提升作业的执行性能。

    常用运行参数如表2

    服务配置参数

    可选参数,用于为本次执行的作业修改服务配置参数。该参数的修改仅适用于本次执行的作业,如需对集群永久生效,请参考配置服务参数页面进行修改。

    如需添加多个参数,请单击右侧增加,如需删除参数,请单击右侧“删除”

    常用服务配置参数如表3

    命令参考

    用于展示提交作业时提交到后台执行的命令。

    表2 运行程序参数

    参数

    参数说明

    取值样例

    --hiveconf

    设置Hive服务相关配置,例如设置执行引擎为MR。

    设置执行引擎为MR:--hiveconf "hive.execution.engine=mr"

    --hivevar

    设置用户自定义变量,例如设置变量id。

    设置变量id:--hivevar id="123" select * from test where id = ${hivevar:id};

    表3 服务配置参数

    参数

    参数说明

    取值样例

    fs.obs.access.key

    访问OBS的密钥ID。

    -

    fs.obs.secret.key

    访问OBS与密钥ID对应的密钥。

    -

    hive.execution.engine

    选择执行作业的引擎。

    • mr
    • tez
    表4 作业配置信息

    参数

    参数说明

    作业名称

    作业名称,只能由字母、数字、中划线和下划线组成,并且长度为1~64个字符。

    说明:

    建议不同的作业设置不同的名称。

    执行程序路径

    待执行程序包地址,需要满足如下要求:

    • 最多为1023字符,不能包含;|&>,<'$特殊字符,且不可为空或全空格。
    • 执行程序路径可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。
      • OBS:以“s3a://”开头。示例:s3a://wordcount/program/xxx.jar
      • HDFS:以“/user”开头。数据导入HDFS请参考导入数据
    • SparkScript需要以“.sql”结尾,MapReduce和Spark需要以“.jar”结尾。sql、jar不区分大小写。

    执行程序参数

    程序执行的关键参数,该参数由用户程序内的函数指定,MRS只负责参数的传入。多个参数间使用空格隔开。

    配置方法:包名.类名

    最多为150000字符,不能包含;|&><'$特殊字符,可为空。

    说明:

    用户输入带有敏感信息(如登录密码)的参数时,可通过在参数名前添加“@”的方式,为该参数值加密,以防止敏感信息被明文形式持久化。在MRS管理控制台查看作业信息时,敏感信息显示为“*”。

    例如:username=admin @password=admin_123

    数据输入路径

    数据输入地址。

    数据可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。
    • OBS:以“s3a://”开头。
    • HDFS:以“/user”开头。数据导入HDFS请参考导入数据

    最多为1023字符,不能包含;|&>,<'$特殊字符,可为空。

    输出路径

    数据输出地址。

    说明:
    • 配置此参数时,单击“OBS”“HDFS”,并选择文件目录,或者手动输入文件目录,然后单击“确定”
    • 若添加hadoop-mapreduce-examples-x.x.x.jar样例程序或和hadoop-mapreduce-examples-x.x.x.jar类似的程序,请手动输入一个不存在的目录。
    数据可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。
    • OBS:以“s3a://”开头。
    • HDFS:以“/user”开头。

    最多为1023字符,不能包含;|&>,<'$特殊字符,可为空。

    日志路径

    作业日志存储地址,该日志信息记录作业运行状态。

    数据可存储于HDFS或者OBS中,不同的文件系统对应的路径存在差异。
    • OBS:以“s3a://”开头。
    • HDFS:以“/user”开头。

    最多为1023字符,不能包含;|&>,<'$特殊字符,可为空。

  7. 确认作业配置信息,单击“确定”,完成作业的新增。

    作业新增完成后,可对作业进行管理。

通过后台提交作业

  1. 登录任意一个Master节点,具体请参考登录集群节点
  2. 执行如下命令初始化环境变量。

    source /opt/BigData/client/bigdata_env

    • MRS 3.x及之后版本客户端默认安装路径为“/opt/Bigdata/client”,MRS 3.x之前版本为“/opt/client”。具体以实际为准。
    • 若安装了Hive多实例,在使用客户端连接具体Hive实例时,请执行以下命令加载具体实例的环境变量,否则请跳过此步骤。例如,加载Hive2实例变量:

      source /opt/BigData/client/Hive2/component_env

  3. 如果当前集群已开启Kerberos认证,执行以下命令认证当前用户。如果当前集群未开启Kerberos认证(普通模式),则无需执行该步骤。

    kinit MRS集群用户 (用户需要有hive组)

  4. 执行beeline连接hiveserver,运行任务。

    beeline

    普通模式,则执行以下命令,如果不指定组件业务用户,则会以当前操作系统用户连接hiveserver。

    beeline -n组件业务用户

    beeline -f sql文件(执行文件里的sql)