CDH 6.3.2 开启kerberos 遇到 的坑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CDH 6.3.2 开启kerberos 遇到 的坑相关的知识,希望对你有一定的参考价值。
CDH 6.3.2 开启kerberos 遇到 的坑
标签(空格分隔): 大数据平台构建
- 一: 关于安装系统的一些坑
- 二: 关于 开启Kerberos Java 的 一些坑
- 三: 关于hive
一: 关于 安装系统的一些坑
1) 安装之前一定 确认 jdk 的安装 目录 因为 通过 centos 7 这个系统 默认会 在装之前 会自带 一些 jdk 版本 要彻底卸载 这个 jdk , 最好是保证安装系统之前 自装 最简 的centos 7.5 x64 mini
2 ) 系统最好 分区为三个
/
swap
/boot
千万不要用 LVM 分区 与启用raid
产线存储数据(DN)盘 另外加
二:关于 开启Kerberos Java 的 一些坑
1) 安装cloudera-manger 有安装依赖包
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb postgresql* portmap mod_ssl openssl-devel python-psycopg2 mysql-python
执行 完这个步骤 之后 有 jdk 安装
要卸载这个 jdk 保证 系统的jdk 为自己安装的jdk 在安装 CDH 6.3.2
保证CDH 的 环境 有一个JDK 存在,并且是 自己安装的
2) 20/05/29 09:13:18 WARN security.UserGroupInformation: Not attempting to re-login since the last re-login was attempted less than 60 seconds before. Last Login=1590714794874
这个报错是开启的Kerberos 的jdk 缺少 应用
因为系统采用的是Centos7.6,对于使用Centos5.6及以上系统,默认采用 AES-256 来加密;这就需要CDH集群所有的节点都安装 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File
需要下载 jdk 8 的JCE 来覆盖
下载链接:https://www.oracle.com/technetwork/java/javase/downloads/index.html
JAVA_HOME=/usr/java/jdk1.8.0_161-cloudera
cp UnlimitedJCEPolicyJDK8/*.jar /usr/java/jdk1.8.0_161-cloudera/jre/lib/security/
然后 从新启动CDH6.3.2的集群
3) 确认CDH6.3.2 集群 是 当前 安装的jdk 这个 不然开启Kerberos 会报错
所有主机 --》 配置--高级--》 设置Java 的环境目录然后从新 启动 整个 CDH 集群
三: 关于 那个 新建用户的提交任务的坑
1. 新建用户提交job
----
1)保证所有节点 都有这个用户 没有就用useradd 去建立
useradd flyfish
2) 保证Kerberos 的 krb5admin 库有 principal 库有 这个 账号
kadmin.local
addprinc flyfish@LANXIN.COM
输入密码 然后使用kinit 登录 没有问题才可以
之后导出这个keytab
kadmin.local
xst -kt /root/flyfish.keytab -norandkey flyfish@LANXIN.COM
这里面会有涉及那个Kerberos 导出keytab 过期问题要 一定要加一个 -norandkey 参数
kinit -kt /root/flyfish.keyab flyfish
klist
3)在yarn上面提交任务必须 userid 小与 1000
----
是由于Yarn限制了用户id小于1000的用户提交作业;
解决方法:修改Yarn的min.user.id来解决
2.异常信息:
Diagnostics: Application application_1504017397148_0002 initialization failed (exitCode=255) with output: main : command provided 0
main : run as user is hdfs
main : requested yarn user is hdfs
Requested user hdfs is not whitelisted and has id 986,which is below the minimum allowed 1000
-------
以上报错是因为 CDH 不给以 hdfs 这个用户 提交 任务 所以要给予 hdfs 的这个用户 提交 任务 的权限
取消掉 hdfs 的 禁用 拿掉
错误:
FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOException There appears to be a gap in the edit log
这个一般是Hadoop HDFS HA 出现问题fsimage 损坏出现 问题 会报这个错误
如果在CDH中的 HDFS HA 散架崩溃 出现问题
1) 下架 问题 namenode节点
2) 第二步 会出现 以上 fsimage 问题
先把元数据fsimage 的问题节点 进行 备份 就是 安装 大数据CDH 平台时候 namenode的NN 目录生成文件
一般是 /dfs/nn 这个目录
3) namenode元数据被破坏,需要修复
hdfs namenode –recover
一路选择c,一般就OK了
hive 中的 坑:
AnalysisException: Failed to load metadata for table: ‘dw_pay_report_results.t_pay_report_credit_paopi_pay‘ CAUSED BY: TableLoadingException: Failed to load metadata for table: dw_pay_report_results.t_pay_report_credit_paopi_pay CAUSED BY: IllegalArgumentException: java.net.UnknownHostException: ns1 CAUSED BY: UnknownHostException: ns1
这个是 因为 HDFS HA 出现 散架 配置 这个时候 一般要 从新 CDH 上面 配置 HA 在启动 配置 并命名 为 ns1 的HA 然后跟新 hive 的 metastore
可以查看 metastore 中的 mysql 中 DBS 与 SDS 两表中设置了 Hive的元数据信息 需要修改此表。
第一种方法是将 这些 ns1 全部 改掉 这种 方法 一般 用在 apache 的版本 部署的Hadoop 因为 启用 HA 配置比较麻烦
第二种方法就是在CDH 中 再次启动 HA 然后 跟新 hive 的metastore
更新hive metastore 一般是在 启用 hdfs HA 之后
1) 启用 hdfs HA 之后
2) 启用 hive 的metastore 更新
先停掉 hive
然后更新
然后从新启动 hive
以上是关于CDH 6.3.2 开启kerberos 遇到 的坑的主要内容,如果未能解决你的问题,请参考以下文章
如何在CDH 6.3.2 启用Kerberos 中 使用sentry限制 用户读写