开启Kerberos后Kettle连接Hive
前言
- HDP机群开启了Kerberos
- 如何使用社区版的Kettle连接Hive2
Kettle版本: pdi-ce-8.2.0.0-342
HDP版本: 2.6.3.0-235
操作系统: win7、64位
1.Kettle官网是有文档说明如何实现Kerberos集成Kettle
但是社区版找不到类
1 | org.pentaho.hadoop.shim.common.authorization.EEAuthActivator |
2.参考Kettle的官网文档配置,你会遇到这个报错
1 | java.lang.RuntimeException: Illegal Hadoop Version: Unknown (expected A.B.* format) |
准备工作
- 下载Heimdal-AMD64-full-7-4-0-40.msi
- 下载winutils.exe
- 下载HDP集群的keytab,我这里使用的是Hive的principal和keytab,也可以自己创建一个新的principal
- 下载hive-jdbc-uber-2.6.3.0-235.jar
配置
将 krb5.ini 文件放置在 C:\krb5 目录下
系统环境变量配置: 我的电脑 右键 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> 新建,新增系统变量 KRB5_CONFIG ,值为 C:\krb5\krb5.ini
系统环境变量配置: 我的电脑 右键 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> 新建,新增系统变量 KRB5CCNAME,值为 C:\krb5cache.kcache
创建 %USERPROFILE%\krb5temp 目录,作为认证后的缓存目录
用户环境变量配置: 我的电脑 右键 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 用户变量 -> 新建,新增系统变量 KRB5CCNAME,值为 %USERPROFILE%\krb5temp\krb5cache.kcache
将 winutils.exe 拷贝到 C:\winutils\bin
Kettle集成Hive
- 其实就是启动Kettle的时候执行一下kinit
修改Spoon.bat
1.第41行增加
1 |
|
2.第125行修改
1 | set OPT 最后面 加入以下配置 |
增加XML文件
使用集群的hive.xml替换
1 | data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/hdp26 |
目录下的hive.xml文件
修改jar文件
- 目录:
1 | data-integration/plugins/pentaho-big-data-plugin/hadoop-configurations/hdp26/lib/ |
- 删除
- 新增
hive-jdbc-uber-2.6.3.0-235.jar
连接Hive
1.
选择连接类型: Hadoop Hive 2
端口号: 10000
不需要用户名、密码
2.
数据库连接 > 选项
添加以下命名参数
principal: hive的principal
使用
- 以上步骤配置好后,就能通过Kettle写数据到Hive了
- 但是只支持单条写入,性能很差
- 读取性能还可以
- 关于只支持单条
- 可以自己实现insert into values
- 可以写成文件传到HDFS,生成对应格式的hive表
- 可以扩展Kettle的功能(有点麻烦,性价比不高)