javax.security.auth.login.LoginException: Checksum failed
  之前碰到过类似的问题,都是因为服务器端的keytab问题;多半是因为重新生成了keytab后,客户端需要重新声场keytab;但是这次不是,即使我重新生成了客户端的keytab仍然无法好用。
  难道这个异常不是因为客户端的秘钥和服务器端秘钥不相符造成的吗?
  确实是,但是这次比之前的情况要负责的多。所有的这一切都是因为在客户端使用了一个指令:ktadd,无论是在kadmin的shell下还是在kutil的工具中使用,ktadd我之前的理解是把秘钥导出来而已;但是其实不是,他其实是重新生成了秘钥(和之前是否一致不确定),生成的keytab中至少version是不一致(想到这一点是因为sha1sum指令下两次生成的keytab的散列值是不一样的)。这个生成会影响到KDC的结果;因为client和server都是依赖于keytab文件,所以这个时候就出现了客户端和服务器端文件不一致;
  我之前碰到这种情况通常都是将通过cloudera manager来重新生成秘钥,推测应该也是使用ktadd来重新生成秘钥;这继续导致了问题:client的keytab过期了;于是客户端再次向服务器端发出请求,服务器端发现有问题,告知checksum error;这就进入了一种恶性循环。客户端再次重新生成keytab,服务器端自身验证又失败。
   直到我认识到了看到的checksum failed 并不是client的验证失败,而是服务器自己定时周期验证失败之后,问题的症结才找到:ktadd将会导致秘钥文件发生变化;而作为keytab模式的常见的解决方案就是在某一端生成了秘钥文件之后,拷贝到各个集群中;一定要保证keytab文件的一致性。
   如此,问题解决。
 
详细说明如下:
  之前我一直以为是因为我提交了beeline -u "jdbc:hive2://10.1.108.65:10000/default;principal=hive/slave1@BD.COM;auth=kerberos"才导致的后台checksum;但是其实不是,本质原因是因为ktadd其实是一个重新生成keytab过程,而且是修改了KDC的密码的过程;
  import kerber可以指定修改的密码;但是注意修改之后,需要在“gengerate missing keytab”中生成一次;貌似修改会导致keytab的丢失。
  开启了kerberos之后,再来安装impala就需要手动在KDC中添加impala用户,然后再cloudera中“generate missing credentials”

  研究Kerberos的hive链接字符串问题;终于研究明白了;原来之前的ktadd并不是导出keytab,而是改变了认证了信息;每次ktadd都会导致这个用户的验证信息(加密信息)发生变化;所以我在客户端调用ktadd,导致hive服务端验证失败,除非它在重新生成才能够正常运行;但是它已重新生成,本质也是ktadd一下,这样client的keytab也就过期了;于是就形成了一个死循环。昨晚解决的方式就是手动的设置一下hive/slave1@BD.COM的密码,然后在cloudera中重新import一下主体信息(也是输入密码方式);然后重启hive服务,搞定了。
  后续还要研究一下到底怎么来玩;其实还是应该生成的keytab在这个集群中复制一份;比如我在65的cloudera中生成了keytab(启动kerberos的时候,其实都会为各个主体创建keytab文件,只要在cm的目录下面搜索*.keytab即可,然后把这份keytab拷贝到各个集群下属的服务器,之后采用kinit -kt进行登录即可。
Keytab里面装了不少东西,版本号,实体名称,实体key(long-term key,根据密码计算出来的);根据实测,每次ktadd出来的东西都不一样,后来想想也是,至少版本号是不一致的。

 
Peer indicated failure: Unsupported mechanism type GSSAPI
这是因为hive所在集群已经关闭了kerberos,但是连接字符串还是采用kerberos方式就会爆此错误;
与之对应的是“Unsupported mechanism type PLAIN”,代表服务器已经开启了kerberos,但是链接字符串还是采用普通连接方式,所以报错。
 

Kerberos的hive链接问题的更多相关文章

  1. presto集成kerberos以及访问集成了kerberos的hive集群

    1.创建主体 注: 192.168.0.230 为单节点集群 192.168.4.50为kdc服务器 192.168.0.9为客户端 1.1.Kdc服务器创建主体 # kadmin.local -q ...

  2. Spark SQL Thrift Server 配置 Kerberos身份认证和权限管理

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 之前的博客介绍了通过Kerberos + Sentry的方式实现了hive server2的身份认证和权限管理功能,本文主 ...

  3. Hive架构及搭建方式

    目录 前言 hive的基础知识 基本架构 metastore 内嵌服务和数据库 内嵌服务 服务和数据库单独部署 hcatalog 客户端 客户端的本地模式 beeline beeline的自动模式 j ...

  4. Spark+Hadoop+Hive集群上数据操作记录

    [rc@vq18ptkh01 ~]$ hadoop fs -ls / drwxr-xr-x+ - jc_rc supergroup 0 2016-11-03 11:46 /dt [rc@vq18ptk ...

  5. hive 常见面试题

    (笔者自己做记录) 1.Hive内外部表的区别删除表是否影响外部数据2.Hive如何做到权限管理hive下可以修改配置后创建用户管理,但是仅仅是为了防止误操而已,如果要真的为了安全操作建议使用 Ker ...

  6. Hive错误记录

    创建表报错 Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apach ...

  7. Superset配置hive数据源

    1.在uri中配置 hive://localhost:10000/default 2.查询 3.如果你的hive集群是带有kerberos认证的,hive数据源需要这样配置 hive://xxx:xx ...

  8. kafka+hbase+hive实现实时接入数据至hive

    整体架构: 项目目标,实现配置mysql,便可以自动化入湖至Hive,入湖至Hive方便后期数据分析. 首先在Mysql中配置好kafka的topic.Server以及入户表等信息,java程序初始化 ...

  9. [BD] Hive

    简介 基于HDFS的数据仓库工具 基于HDFS上的数据分析引擎 2.x 前:SQL -----> Hive  ----> MapReduce 2.x 后:推荐执行引擎为 Spark 支持S ...

随机推荐

  1. 【Head First Servlets and JSP】迷你MVC:JarDownload的完整实现

    1.首先,写一个download.html放至D:\apache-tomcat-7.0.77\webapps\JarDownload-v1. <!DOCTYPE HTML> <htm ...

  2. 【Flask】sqlalchemy 排序

    ### 排序:1. order_by:可以指定根据这个表中的某个字段进行排序,如果在前面加了一个-,代表的是降序排序.2. 在模型定义的时候指定默认排序:有些时候,不想每次在查询的时候都指定排序的方式 ...

  3. linux环境vim升级到vim74

    作为编辑器之神,vim7.4已经发布近两个月了.从vim7.3到vim7.4,时隔两年之久,做了多项改正和性能提升,作为Linux Geeksters的你,怎能错过. 由于各大主流linux操作系统都 ...

  4. PHP递归和非递归遍历文件夹下文件

    function readDirFiles($dir){ $files= []; $queue=[realpath($dir)]; $currentPath = current($queue); wh ...

  5. SQL性能调优策略

    1.建立索引 2.避免全表扫描 避免使用is null, is not null,这样写会放弃该字段的索引. 如果会出现这种情况,尽量在设计表的时候设置默认值 比较操作符中!= <>等避免 ...

  6. collectionView的案例

    #import "ViewController.h" #import "CollectionViewCell.h" @interface ViewControl ...

  7. C++中随机数的生成

    1.随机数由生成器和分布器结合产生 生成器generator:能够产生离散的等可能分布数值 分布器distributions: 能够把generator产生的均匀分布值映射到其他常见分布,如均匀分布u ...

  8. java异常和错误类总结(2016.5)

    看到以前2016.5.写的一点笔记,拿过来放在一起. java异常和错误类总结 最近由于考试和以前的面试经常会遇到java当中异常类的继承层次的问题,弄得非常头大,因为java的异常实在是有点多,很难 ...

  9. PrintWriter的使用

    java.io.PrintWriter 具有自动行刷新的缓冲字符输出流,特点是可以按行写出字符串,并且可以自动行刷新. java.io.BufferedWriter是缓冲字符输出流,内部有缓冲区可以进 ...

  10. DH03-单一职责原则

    模式简介 就一个类而言,应该仅有一个引起它变化的原因.不要存在多于一个导致类变更的原因.遵循单一职责原则.分别建立两个类T1和T2,使T1完成P1功能,T2完成P2功能.当修改T1时,不会使职责P2发 ...