华为云用户手册

  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 certificate_id String 私有证书ID。 最小长度:36 最大长度:36 status String 证书状态: ISSUED : 已签发; EXPIRED : 已过期; REVOKED : 已吊销。 issuer_id String 父CA证书ID。 最小长度:36 最大长度:36 issuer_name String 父CA证书名称。 最小长度:1 最大长度:64 key_algorithm String 密钥算法。 signature_algorithm String 签名算法。 freeze_flag Integer 冻结标识: 0 : 非冻结状态; 其它值 : 冻结状态,当前预留。 gen_mode String 证书生成方式: GENERATE : PCA系统生成; IMPORT : 外部导入; CSR : 外部提供CSR,内部CA进行签发,即私钥不在PCA进行托管。 serial_number String 序列号。 最小长度:1 最大长度:64 create_time Long 证书创建时间,格式为时间戳(毫秒级)。 delete_time Long 证书删除时间,格式为时间戳(毫秒级)。 not_before Long 证书创建时间,格式为时间戳(毫秒级)。 not_after Long 证书到期时间,格式为时间戳(毫秒级)。 distinguished_name DistinguishedName object 证书名称配置,详情请参见DistinguishedName字段数据结构说明。 enc_cert_info EncCertInfo object 加密证书信息,详情请参见EncCertInfo字段数据结构说明。 enterprise_project_id String 企业项目ID,默认为“0”。 对于开通企业项目的用户,表示资源处于默认企业项目下。 对于未开通企业项目的用户,表示资源未处于企业项目下。 表4 DistinguishedName 参数 参数类型 描述 common_name String 证书通用名称(CN),名称只能由"-"、"_"、" "、"."、","、"*"、字母、数字、汉字组成,长度不能超过64位字符。 最小长度:1 最大长度:64 country String 国家编码,只能由英文组成,长度为2位字符。 最小长度:2 最大长度:2 state String 省市名称,名称只能由"-"、"_"、" "、"."、","、字母、数字、汉字组成,长度不能超过128位字符。 最小长度:1 最大长度:128 locality String 地区名称,名称只能由"-"、"_"、" "、"."、","、字母、数字、汉字组成,长度不能超过128位字符。 最小长度:1 最大长度:128 organization String 组织名称,名称只能由"-"、"_"、" "、"."、","、字母、数字、汉字组成,长度不能超过64位字符。 最小长度:1 最大长度:64 organizational_unit String 组织单元名称,名称只能由"-"、"_"、" "、"."、","、字母、数字、汉字组成,长度不能超过64位字符。 最小长度:1 最大长度:64 表5 EncCertInfo 参数 参数类型 描述 enc_serial_number String 加密证书序列号。 最小长度:1 最大长度:64 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024 状态码: 403 表8 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024 状态码: 404 表9 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024 状态码: 500 表10 响应Body参数 参数 参数类型 描述 error_code String 错误请求返回的错误码。 最小长度:3 最大长度:36 error_msg String 错误请求返回的错误信息。 最小长度:0 最大长度:1024
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 表3 公共请求消息头 名称 描述 是否必选 示例 Content-Type 消息体的类型(格式),默认取值为“application/json”,有其他取值时会在具体接口中专门说明。 是 application/json X-Auth-Token 用户Token,也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 否 使用Token认证时该字段必选。 -
  • 请求方法 HTTP请求方法(也称为操作或动词)。它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。
  • 请求消息体(可选) 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxx为project的名称,如cn-north-1,您可以从地区和终端节点中获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token额作用域为某个账号下所有资源或账号的某个project下的资源。 POST https://avatar-apigw-external-lb.cn-north-4.myhuaweicloud.com/v1/open/login/oauth2/token Content-Type: application/x-www-form-urlencoded Accept: application/json Form-Data: client_id={ClientId}&client_secret={SECRET}&code=akaZnezUrkvT7KY4haEAo_KPiubG97fJZXuenXvTkMiL_UF7JdWAg5I4j4r1-PYsxhoypJjlFVx6WE7nisqzvhCsfsQQORO8DjQunZu8nLnqO3EDE7LvBbVpjU-dTS_o&grant_type=authorization_code 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。这里的code是统一认证页面登录后返回的code、clientId和clientSecret则是您的应用在圆桌中注册的应用id和secret
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点中获取。例如在“华北-北京四”区域圆桌的Endpoint为“roundtable.macroverse.huaweicloud.com”, 圆桌apig的Endpoint为“avatar-apigw-external-lb.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取access_token”API的resource-path为“v1/open/login/oauth2/token”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需使用的Endpoint(avatar-apigw-external-lb.cn-north-4.myhuaweicloud.com),并在URI部分找到resource-path(/v1/open/login/oauth2/token),拼接起来如下所示。 https://avatar-apigw-external-lb.cn-north-4.myhuaweicloud.com/v1/open/login/oauth2/token 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用它们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 在我的凭证下,您可以查看账号ID和用户ID。通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 详情请参见区域和可用区。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 同样在我的凭证下,您可以查看项目ID。 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 父主题: 使用前必读
  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给角色授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 依赖的授权项:部分Action存在对其他Action的依赖,需要将依赖的Action同时写入授权项,才能实现对应的权限功能。 IAM项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM与企业管理的区别。
  • 原因分析 使用命令lsof |grep deleted可以查询到此目录下有大量log文件处于deleted状态。 出现此问题的一种情况是长时间运行某些Spark任务,任务中的一些Container一直运行,并且持续产生日志;Spark的executor在打印日志的时候使用了log4j的日志滚动功能,将日志输出到stdout文件下;而Container同时也会监控这个文件,导致此文件被两个进程同时监控。当其中一个进程按照配置滚动的时候,删除了最早的日志文件,但是另一个进程依旧占用此文件句柄,从而产生了deleted状态的文件。
  • 原因分析 当使用load导入数据到Hive表的时候,属于需要跨文件系统的情况(例如原数据在HDFS上,而Hive表数据存放在OBS上),并且文件长度大于阈值(默认32 MB),则会触发使用distcp的MapReduce任务来执行数据迁移操作。这个MapReduce任务配置直接从Spark任务配置里面提取,但是Spark任务的net.topology.node.switch.mapping.impl配置项不是hadoop的默认值,需要使用Spark的jar包,因此MapReduce会报类找不到。
  • 问题现象 在MRS Hive的beeline中执行insert into插入语句时系统报以下错误: Mapping run in Tez on Hive transactional table fails when data volume is high with error: "org.apache.hadoop.hive.ql.lockmgr.LockException Reason: Transaction... already aborted, Hive SQL state [42000]."
  • 处理步骤 可以在beeline上设置配置参数进行解决。 设置以下属性以优化性能(建议在集群级别进行更改) 设置hive.auto.convert.sortmerge.join = true 设置hive.optimize.bucketmapjoin = true 设置hive.optimize.bucketmapjoin.sortedmerge = true 更改以下内容以调整Tez的资源。 设置hive.tez.container.size = {与YARN容器相同的大小} 将hive.tez.container.size设置为与YARN容器大小“yarn.scheduler.minimum-allocation-mb”相同或更小的值(例如设置为二分之一或四分之一的值),但不要超过“yarn.scheduler.maximum-allocation-mb”参数值。
  • 原因分析 在Driver端打印异常如下,打印连接两个ResourceManager主备节点的26004端口均被拒绝: 15/08/19 18:36:16 INFO RetryInvocationHandler: Exception while invoking getClusterMetrics of class ApplicationClientProtocolPBClientImpl over 33 after 1 fail over attempts. Trying to fail over after sleeping for 17448ms. java.net.ConnectException: Call From ip0 to ip1:26004 failed on connection exception: java.net.ConnectException: Connection refused. INFO RetryInvocationHandler: Exception while invoking getClusterMetrics of class ApplicationClientProtocolPBClientImpl over 32 after 2 fail over attempts. Trying to fail over after sleeping for 16233ms. java.net.ConnectException: Call From ip0 to ip2:26004 failed on connection exception: java.net.ConnectException: Connection refused; 在MRS Manager页面查看ResourceManager此时是否功能正常,如果Yarn服务状态故障或某个Yarn服务的实例出现未知之类的异常说明此时集群的ResourceManager可能异常。 排查使用的客户端是否是集群最新的客户端。 排查集群是否做过实例ResourceManager迁移相关操作(先卸载某个ResourceManager实例,然后在其他节点添加)。 在MRS Manager页面查看审计日志,是否有相关操作的记录。 使用ping命令,查看IP是否可联通。
  • 处理步骤 分别登录主、备Master节点。 执行cd /srv/BigData/命令进入到备份文件所在目录。 执行unlink LocalBackup命令删除LocalBackup软连接。 执行mkdir -p LocalBackup命令创建LocalBackup目录。 执行chown -R omm:wheel LocalBackup命令修改文件所属用户、群组。 执行chmod 700 LocalBackup命令修改文件读写权限。 登录MRS Manager页面重新执行周期备份。
  • 原因分析 常见的进程被异常终止有2种原因: Java进程OOM被终止 一般Java进程都会配置OOM Killer,当检测到OOM会自动终止进程,OOM日志通常被打印到out日志中,此时可以看运行日志(如DataNode的日志路径为 /var/log/Bigdata/hdfs/dn/hadoop-omm-datanode-主机名.log),看是否有OutOfMemory内存溢出的打印。 被其他进程终止,或者人为终止。 排查DataNode运行日志(/var/log/Bigdata/hdfs/dn/hadoop-omm-datanode-主机名.log),是先收到“RECEIVED SIGNAL 15”再健康检查失败。 即如下示例中DataNode先于 11:04:48被终止,然后过2分钟,于11:06:52启动。 2018-12-06 11:04:48,433 | ERROR | SIGTERM handler | RECEIVED SIGNAL 15: SIGTERM | LogAdapter.java:69 2018-12-06 11:04:48,436 | INFO | Thread-1 | SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down DataNode at 192-168-235-85/192.168.235.85 ************************************************************/ | LogAdapter.java:45 2018-12-06 11:06:52,744 | INFO | main | STARTUP_MSG: 以上日志说明,DataNode先被其他进程关闭,然后健康检查失败,2分钟后,被NodeAgent启动DataNode进程。
  • 处理步骤 打开操作系统审计日志,给审计日志增加记录kill命令的规则,即可定位是何进程发送的命令。 操作影响 打印审计日志,会消耗一定操作系统性能,经过分析仅影响不到1%。 打印审计日志,会占用一定磁盘空间。该日志打印量不大,MB级别,且默认配置有老化机制和检测磁盘剩余空间机制,不会占满磁盘。 定位方法 在DataNode进程可能发生重启的所有节点,分别执行以下操作。 以root用户登录节点,执行service auditd status命令,确认该服务状态。 Checking for service auditd running 如果该服务未启动,执行service auditd restart命令重启该服务(无影响,耗时不到1秒)。 Shutting down auditd done Starting auditd done 审计日志临时增加kill命令审计规则。 增加规则: auditctl -a exit,always -F arch=b64 -S kill -S tkill -S tgkill -F a1!=0 -k process_killed 查看规则: auditctl -l 当进程有异常被终止后,使用ausearch -k process_killed命令,可以查询终止历史。 a0是被终止进程的PID(16进制),a1是kill命令的信号量。 验证方法 从MRS页面重启该节点一个实例,如DataNode。 执行ausearch -k process_killed命令,确认是否有日志打印。 例如以下命令ausearch -k process_killed |grep “.sh” ,可以看到是hdfs-daemon-ada* 脚本,关闭的DataNode进程。 停止审计kill命令方法 执行service auditd restart命令,即会清理临时增加的kill命令审计日志。 执行auditctl -l命令,如果没有相关信息,即说明已清理该规则。
  • 处理步骤 以root用户分别登录Master节点。 打开文件“/opt/knox/bin/gateway.sh”,查找APP_MEM_OPTS,并设置该参数的值为:“-Xms3072m -Xmx4096m”。 登录Manager页面,在主机列表页面找到主Master节点的IP地址(即主机名称前带有实心五角星的节点),并登录该节点后台。 执行如下命令重启进程。 su - omm sh /opt/knox/bin/restart-knox.sh
  • 处理步骤 登录Spark客户端节点,执行如下命令,进入spark-sql: cd {客户端安装目录} source bigdata_env source Spark2x/component_env kinit 组件业务用户(普通模式无需执行kinit) spark-sql 执行如下命令设置spark.sql.hive.convertMetastoreOrc=false。 set spark.sql.hive.convertMetastoreOrc=false; 重新查询Hive视图,显示正常。
  • 处理步骤 重启集群sssd进程。 以root用户执行service sssd restart命令重启sssd服务,执行ps -ef | grep sssd命令,查看sssd进程是否正常。 正常状态为存在/usr/sbin/sssd进程和三个子进程/usr/libexec/sssd/sssd_be、/usr/libexec/sssd/sssd_nss、/usr/libexec/sssd/sssd_pam。
  • 原因分析 查看MetaStore日志。 查看HDFS日志。 权限对比(test001为异常用户创建表,test002为正常用户创建表)。 drop表时报类似下面的错。 dataplan_modela_csbch2; Error: Error while compiling statement: FAILED: SemanticException Unable to fetch table dataplan_modela_csbch2. java.security.AccessControlException: Permission denied: user=CSB_csb_3f8_x48ssrbt, access=READ, inode="/user/hive/warehouse/hive_csb_csb_3f8_x48ssrbt_5lbi2edu.db/dataplan_modela_csbch2":spark:hive:drwx------ 根因分析。 创建集群时创建的默认用户使用了相同的uid,造成用户错乱。在大量创建用户的场景下,触发了该问题,导致在创建表时偶现Hive用户没有权限。
  • 问题现象 创建表过程: CREATE TABLE wlg_test001 (start_time STRING,value INT); 报错: Error: org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Failed to grant permission on HDFSjava.lang.reflect.UndeclaredThrowableException); (state=,code=0)
  • 解决办法 在客户端提交任务时,在命令行中配置自定义的spark.driver.extraJavaOptions参数这样任务运行时就不会自动加载客户端路径下“spark-defaults.conf”中的spark.driver.extraJavaOptions;或者在启动Spark任务时,通过“--conf”来指定Driver的配置,如下(此处spark.driver.extraJavaOptions“=”号后面的引号部分不能缺少)。 ./spark-submit -class yourclassname --master yarn-cluster --conf spark.driver.extraJavaOptions=" -Dlog4j.configuration=file:/opt/client/Spark/spark/conf/log4j.properties -Djetty.version=x.y.z -Dzookeeper.server.principal=zookeeper/hadoop.794bbab6_9505_44cc_8515_b4eddc84e6c1.com -Djava.security.krb5.conf=/opt/client/KrbClient/kerberos/var/krb5kdc/krb5.conf -Djava.security.auth.login.config=/opt/client/Spark/spark/conf/jaas.conf -Dorg.xerial.snappy.tempdir=/opt/client/Spark/tmp -Dcarbon.properties.filepath=/opt/client/Spark/spark/conf/carbon.properties" ../yourdependencyjars
  • 原因分析 在Driver端打印异常找不到连接HDFS的Token信息,报错如下: 16/03/22 20:37:10 WARN Client: Exception encountered while connecting to the server : org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): token (HDFS_DELEGATION_TOKEN token 192 for admin) can't be found in cache 16/03/22 20:37:10 WARN Client: Failed to cleanup staging dir .sparkStaging/application_1458558192236_0003 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): token (HDFS_DELEGATION_TOKEN token 192 for admin) can't be found in cache 在Yarn原生页面显示ApplicationMaster启动两次均失败,任务退出,如图1信息: 图1 ApplicationMaster启动失败 查看ApplicationMaster日志看到如下异常信息: Exception in thread "main" java.lang.ExceptionInInitializerError Caused by: org.apache.spark.SparkException: Unable to load YARN support Caused by: java.lang.IllegalArgumentException: Can't get Kerberos realm Caused by: java.lang.reflect.InvocationTargetException Caused by: KrbException: Cannot locate default realm Caused by: KrbException: Generic error (description in e-text) (60) - Unable to locate Kerberos realm org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1410) ... 86 more Caused by: javax.jdo.JDOFatalInternalException: Unexpected exception caught. NestedThrowables:java.lang.reflect.InvocationTargetException ... 110 more 执行./spark-submit --class yourclassname --master yarn-cluster /yourdependencyjars任务以yarn-cluster模式提交任务,Driver端会在集群中启动,由于加载的是客户端的spark.driver.extraJavaOptions,在集群节点上对应路径下找不到对应的kdc.conf文件,无法获取kerberos认证所需信息,导致ApplicationMaster启动失败。
  • 原因分析 由于管理控制台的作业管理功能是由集群管理模块Executor来负责调度执行,因此作业未提交到Yarn上,根因需要查看Executor。而管理控制台的作业管理功能,正常情况添加作业后会自动在Yarn上启动两个任务,一个提交到launcher-job队列,该队列为辅助作业队列。另外一个是作业实际执行的队列,如默认的default队列。 查看Executor日志(主Master节点的“/var/log/executor/exe.log”),发现是由于提交Flink作业用户的密码改变或者过期导致下载用户keytab认证文件失败,最终导致作业未提交到launcher-job队列。
  • 处理步骤 判断用户是在集群外还是集群内使用客户端提交作业。 若在集群内使用客户端,切换到omm用户提交作业。 若在集群外使用客户端,则要使用root用户提交作业。 检查“flink-conf.yaml”文件各参数是否配置正确。 对于开启Kerberos认证的集群配置项包括Kerberos的keytab、principal等。 从KDC服务器上下载用户keytab,并将keytab放到Flink客户端所在主机的某个文件夹下(例如/home/flinkuser/keytab)。 在“${FLINK_HOME}/conf/flink-conf.yaml”上配置: keytab路径(注意配置参数前面有空格): security.kerberos.login.keytab: /home/flinkuser/keytab/uer.keytab principal名(即开发用户名): security.kerberos.login.principal:flinkuser 重新正确提交作业./flink run /opt/client/Flink/flink/examples/streaming/WordCount.jar,验证是否可以提交作业。 若可以提交作业则说明权限认证没有问题,就可以去检查其他错误,本例中是修改了log4j.properties的名称,还原后可以正常提交作业。 若提交作业失败,请提交工单进行处理。
  • 原因分析 MRS集群开启了Kerberos认证但是无法提交作业,所以首先检查权限配置问题,检查发现未正确配置“/opt/client/Flink/flink/conf/flink-conf.yaml”中的参数。 图1 flink-conf.yaml配置 修改并刷新配置后,重新提交作业出现作业可以提交但报“log4j:ERROR setFile(null,true) call failed”的错误。 图2 log4j报错 查看log4j发现用户将“log4j.properties”文件改成了“log4g-cli.properties”(“log4j.properties”的名字是固定的不可随意修改)导致报错。 图3 查看log4j 修改后可以正常提交作业。 图4 提交作业正常
  • 用户问题 更换HA证书时,执行sh ${OMS_RUN_PATH}/workspace/ha/module/hacom/script/gen-cert.sh --root-ca --country=CN --state=state --city=city --company=company --organize=organize --common-name=commonname --email=集群用户邮箱命令在主管理节点“${OMS_RUN_PATH}/workspace0/ha/local/cert”目录生成“root-ca.crt”和“root-ca.pem”时,发生以下报错: openssl: relocation error: openssl: symbol BIO_new_dgram_sctp version OPENSSL_1_1_0 not defined in file libcrypto.so.1.1 with link time referencecreate server private key failed.
  • 处理步骤 使用MRS集群自带的Hive for Spark包: hive-beeline-1.2.1.spark_2.2.1-mrs-x.x.x.jar hive-cli-1.2.1.spark_2.2.1-mrs-x.x.x.jar hive-common-1.2.1.spark_2.2.1-mrs-x.x.x.jar hive-exec-1.2.1.spark_2.2.1-mrs-x.x.x.jar hive-jdbc-1.2.1.spark_2.2.1-mrs-x.x.x.jar hive-metastore-1.2.1.spark_2.2.1-mrs-x.x.x.jar 华为云Maven库请参考指导通过开源镜像站获取样例工程。
  • 原因分析 问题1:Spark提交任务默认不会加载kafka的相关包,所以需要在启动命令中增加--jars来指定对应kafka版本的jar包 问题2:连接Kafka无法使用Spark的认证信息,需要将相关的认证使用JVM的参数设置进去。 问题3:Spark默认使用当前客户端的认证信息提交任务,也可以使用代码login的方式。但是这两种认证方式都无法更新任务使用的Token,当提交的时候生成的Token信息过期以后就无法在使用,因此报错。解决办法是使用--keytab和--principal将keytab文件和对应用户带入任务中。
  • 处理步骤 问题1:启动命令中增加--jars来指定对应kafka版本的jar包,一般是在Spark客户端目录/jars/streamingClient(0.8版本Kafka)和Spark客户端目录/jars/streamingClient010(0.10版本Kafka)。 问题2:参考指导文档编辑并运行程序。 问题3:使用--keytab和--principal将keytab文件和对应用户带入任务中。如果此处的keytab文件和之前Kafka的jaas.conf中配置的是同一个,则Spark会报一个文件多次上传的问题。解决办法是复制一份keytab文件,使得--files和--keytab上传不同的文件。
  • 处理步骤 以root用户登录集群的任意节点。 在集群节点中执行cat /etc/hosts命令,查看各个节点的hostname值,根据此值来配置newhostname变量值 。 在hostname被修改的节点上执行sudo hostnamectl set-hostname ${newhostname}命令,恢复正确的hostname。 ${newhostname}:表示新的hostname取值。 修改完成后,重新登录修改的节点,查看修改后的hostname是否生效。
共100000条