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. Linux Shell基础 位置参数变量、预定义变量

    位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...

  2. ES6 随记(1)-- let 与 const

    1. const(声明一个只读的常量) 这个是很好理解的,且声明时就必须赋值而不能以后再赋,不然会报错. 而个人认为它最大的用处还是在于 {} 和 [] 上,const 保证了它的内存地址(指针)不变 ...

  3. Android BlueDroid(蓝牙协议栈)

    Android BlueDroid(一):BlueDroid概述 Android BlueDroid(二):BlueDroid蓝牙开启过程init Android BlueDroid(三):BlueD ...

  4. 【Head First Servlets and JSP】笔记5:HttpServletResponse resp

    [HttpServletResponse resp] [由servlet处理响应] 1.一般可以用通过resp获得一个输出流(writer),然后通过输出流将HTML写入响应.例如: resp.set ...

  5. arguments解析

    js中并没有函数重载的概念,但函数的arguments参数能帮助我们模拟重载. arguments并不是真正的数组,但拥有length(参数数目),且能通过数组下标的方式进行访问,例如argument ...

  6. hdu1010感想

    杭电这道题是用dfs走迷宫问题,一直wa是因为没有将走过的地方标记,所以如果遇到走迷宫的问题一定要将走过的地方标记,如下: &&nx<n&&ny>=& ...

  7. 【转】linux驱动开发

    转自:http://www.cnblogs.com/heat-man/articles/4174899.html 首先理一理驱动/内核/应用程序的一些概念,以前总没有具体的去关注过! 我们的pc直观来 ...

  8. centOS最小化安装后网络连接问题

    编辑配置文件 vi /etc/sysconfig/network-script/ifcfg-eth0   修改此行重启后即可 ONBOOT="yes"           #修改为 ...

  9. python 操作mongoDB数据库

    网上关于python 操作mongoDB的相关文章相对不是很多,并且质量也不是很高!下面给出一个完整的 增删改查示例程序! #!/usr/bin/python # -*- coding: utf-8 ...

  10. spring mvc 对象型参数的传递(遇到坑了)

    直接来个列子: 这里设置了,contenType="application/json" 这里post 接收的参数对象. 但是问题来了: <html> <head& ...