Kerberos使用 本章节主要介绍操作类问题中有关Kerberos使用的问题。 已创建的MRS集群如何修改Kerberos认证的开启状态? MRS服务暂不支持集群创建完成后手动开启和关闭Kerberos服务。 如需更换Kerberos认证状态,建议重新创建MRS集群,然后进行数据迁移。 Kerberos认证服务的端口有哪些? Kerberos认证服务的常用端口有21730(TCP)、21731(TCP/UDP)、21732(TCP/UDP)。 如何避免Kerberos认证过期? 对于JAVA应用 在连接HBase、HDFS或者其他大数据组件前,先调用loginUserFromKeytab()创建UGI,然后启动一个定时线程进行检查是否过期并在过期前重新登录。 private static void startCheckKeytabTgtAndReloginJob() { //10分钟循环,达到距离到期时间一定范围就会更新凭证 ThreadPool.updateConfigThread.scheduleWithFixedDelay(() > { try { UserGroupInformation.getLoginUser().checkTGTAndReloginFromKeytab(); logger.warn("get tgt:{}", UserGroupInformation.getLoginUser().getTGT()); logger.warn("Check Kerberos Tgt And Relogin From Keytab Finish."); } catch (IOException e) { logger.error("Check Kerberos Tgt And Relogin From Keytab Error", e); } }, 0, 10, TimeUnit.MINUTES); logger.warn("Start Check Keytab TGT And Relogin Job Success."); } 对于Shell客户端方式执行的任务 1.先执行kinit命令认证用户。 2.通过操作系统定时任务或者其他定时任务方式定时执行kinit命令认证用户。 3.提交作业执行大数据任务。 对于Spark作业 通过sparkshell、sparksubmit、sparksql方式提交作业,可以直接在命令行中指定Keytab和Principal以获取认证,定期更新登录凭证和授权tokens,避免认证过期。 例如: sparkshell principal spark2x/hadoop. @ keytab ${BIGDATAHOME}/FusionInsightSpark2xXXX/install/FusionInsightSpark2x2.4.5/keytab/spark2x/SparkResource/spark2x.keytab master yarn