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. Shell 语句

    一 test 测试: 测试命令 test [ ] [[ ]] (( ))打开man test 逐一介绍每个参数 浮点计算:echo 'scale=2;1/3'|bc -l  测试操作命令执行后会返回到 ...

  2. HTML5_CSS3实现iOS Path菜单

    在线演示 本地下载

  3. java内置注解、元注解和自定义注解

    注解的作用: 1.生成文档 2.跟踪代码依赖性 3.编译时进行格式检查 ---------------------------------------------------------------- ...

  4. ceph安装各种报错

    [ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph-disk-activate –mark-init sysvini ...

  5. linux下java unrecognized class file version错误的解决

    root@Mr javaPC]# java HelloWorldException in thread “main” java.lang.ClassFormatError: HelloWorld (u ...

  6. JAVA使用Freemarker生成静态文件中文乱码

    1.指定Configuration编码 Configuration freemarkerCfg = new Configuration(); freemarkerCfg.setEncoding(Loc ...

  7. 【bzoj1899】[Zjoi2004]Lunch 午餐(贪心+dp)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1899 显然为了节省时间,吃饭慢的人要先打饭.于是我们可以先把所有人按吃饭时间排序,于是 ...

  8. BZOJ3243/UOJ121 [Noi2013]向量内积

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  9. Educational Codeforces Round 15 D. Road to Post Office 数学

    D. Road to Post Office time limit per test 1 second memory limit per test 256 megabytes input standa ...

  10. jedis提纲

    A01 - jedis库介绍 A01 - 在多线程下使用Jedis A01 - Jedis的八种调用方式   A02 - API使用文档 A02 - Jedis代码编程使用(简单的使用)   A03 ...