MRS集群V2接口提交作业FAQ

举报
星星点灯 发表于 2020/06/12 18:03:44 2020/06/12
【摘要】 MRS集群V2接口提交作FAQ概述 本文主要介绍MRS集群v2提交作业接口的相关内容。MRS集群1.8.x系列版本在1.8.7版本及之后,2.x系列版本在2.0.3版本及之后,1.9.x版本都支持通过V2接口向kerberos开启/普通集群提交作业。目前主要支持以下几种作业类型,分别为Mapreduce, Distcp,Spa...

概述

       本文主要介绍MRS集群v2提交作业接口的相关内容。MRS集群1.8.x系列版本在1.8.7版本及之后,2.x系列版本在2.0.3版本及之后,1.9.x版本都支持通过V2接口向kerberos开启/普通集群提交作业。目前主要支持以下几种作业类型,分别为Mapreduce, Distcp,SparkSubmit (Spark jar和Spark Python), SparkSql,SparkScript,HiveSql,HiveScript,Flink

1 v2接口作业提交

1.1 作业提交准备

      1)iam用户同步  

       对于安全集群,在MRS Console页面作业管理或者调用api接口提交作业之前,需要用户将目前登录的iam用户同步到MRS Manager系统中,以便在系统中进行必要的权限校验和权限控制。

当执行iam用户同步后,有两种方式可以查看同步的用户:

    a) 通过MRS Manager页面系统设置中的用户管理,查看到已同步的iam用户,及该用户所属的用户组。

    b) 通过登录集群的ecs节点,执行 "id userName"查看同步的用户权限。

    2)决定是否配置OBS访问权限委托

       委托功能实现使用ECS自动获取的临时AK/SK访问OBS,避免了AK/SK直接暴露在配置文件中的风险。当执行的作业需要读写OBS上存放的数据时,可选择配置OBS委托。针对SparkSql,SparkScript,HiveSql,HiveScript,Flink等作业类型,当要访问OBS服务时,必须配置委托。用户也可在提交作业时,在“服务配置参数” 选项框中自主配置访问obs的临时或者永久性的accesskey、secretkey

1.2 作业提交方式

   接口提交:调用api接口提交 https://support.huaweicloud.com/api-mrs/mrs_02_0085.html

   页面提交:MRS Console页面作业管理页签,如下图所示。

    image-20200612100005868

1.3 作业提交

1.3.1 作业提交流程

      当用户配置好作业相关参数,提交作业后,便可获得该作业的编号job_id。集群的作业进程处理该提交作业的请求,会向yarn提交一个launcherJob application,这个launcherJob的主要作用是拉起用户提交的真正的作业realJob。因此,当用户在界面或者rest接口提交一个作业时,对应地会在yarn上起两个application, 这两个application通过job_id关联,launcherJob默认被提交在launcher-job队列,realJob默认被提交在default队列。这两个队列被分配的集群资源可通过MRS Manager页面租户管理页签查看。当在Yarn的开源WebUI中可以查看到提交作业对应的2个application (HiveSql中某些语句较为特殊,比如show tables, 只会起1个application, launcherJob),说明该作业提交成功。具体作业是否能执行成功,取决于用户的程序。image-20200612110501365

image-20200612104535312

在作业管理中,查看提交的作业详情,可看到该作业对应的2个applicationId。

image-20200612105632702

1.3.2 作业提交配置

       V2接口作业提交所用的配置为各个支持作业提交的组件的客户端的配置(Hive除外)。当用户修改了客户端的配置并提交V2作业,被修改的配置文件将会被上传到hdfs目录:/mrs/mrsjob/application_launcherId下。运行作业时Yarn会将该目录下的配置文件分发到运行任务的core节点或者task节点,具体路径为 /srv/BigData/hadoop/data1/nm/localdir/usercache/{userName}/appcache/{application_Id}

     Mapreduce/Distcp: /opt/client/HDFS/hadoop/etc/hadoop

     Spark: /opt/client/Spark/spark/conf/

     Hive: 使用Hive服务端配置

     Flink: /opt/client/Flink/flink/conf/

2 v2接口作业提交常见的问题及定位

      在提交作业过程中,可能会因为用户输入、配置文件、相关服务故障等因素导致提交作业失败或者作业执行失败。因此,这里提供一些定位日志和常见的问题来提高定位效率。

2.1 相关日志

    1)MRS Console页面作业管理,每一条作业支持查看日志。这里的日志是launcherJob作业的日志,一般会在stderr和stdout中打印错误日志。如下图所示:

image-20200612111314041

 2)上面的日志详情主要是launcherJob的日志,如果要查看realJob的日志,可以通过MRS Manager中 Yarn服务提供的ResourceManager Web UI查看。

image-20200612111907503

  3)登录集群master节点,可获取上述作业的日志文件 。具体hdfs路径为:/tmp/logs/{submit_user}/logs/{application_id}

  4)  提交作业后,在Yarn的WEB UI未找到对应作业的application_id,说明该作业没有提交成功,可登录集群主master节点,查看提交作业进程日志 /var/log/executor/logs/exe.log。

2.2 常见的问题

1)当前用户在MRS Manager不存在。请先在IAM给予该用户足够的权限,再在概览页签进行IAM用户同步。

     安全集群使用v2接口提交作业时,未进行iam同步,会出现如下图所示错误。需要在提交之前,先进行iam同步,然后再提交作业。

image-20200612151512978

2)LauncherJob作业执行结果为Failed. 报错信息为:jobPropertiesMap is null.  

       launcher作业失败的原因为:提交作业用户无hdfs  /mrs/job-properties目录的写权限。该问题在2.1.0.6的补丁中修复,也可通过在MRS Manager页面给同步的提交作业用户赋予该目录 /mrs/job-properties的写入权限。

image-20200612145453086

3)MRS Console页面Flink作业状态与Yarn上的作业状态不一致

       为了节约存储空间,用户修改了Yarn的配置项yarn.resourcemanager.max-completed-applications,减小yarn上历史作业的记录保存个数。由于Flink是长时作业,在yarn上realJob还在运行,但launcherJob已经被删除,导致因从Yarn上查不到launcherJob,从而更新作业状态失败。该问题在2.1.0.6补丁中解决。规避方法:终止找不到launcherJob的作业,后续提交的作业状态就会更新。

4)提交长时作业SparkStreaming,运行几十个小时后失败,报OBS访问403

       当用户提交作业需要读写OBS时,提交作业程序会默认为用户添加访问OBS的临时accesskey和secretkey,但是临时accesskey和secretkey有过期时间。如果需要运行像Flink和SparkStreaming这样的长时作业时,用户可通过“服务配置参数”选项框传入永久的accesskey和secretkey,以保证作业不会在运行过程中因秘钥过期而执行失败。








【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。