前言

  • 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

配置

  1. 将 krb5.ini 文件放置在 C:\krb5 目录下

  2. 系统环境变量配置: 我的电脑 右键 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> 新建,新增系统变量 KRB5_CONFIG ,值为 C:\krb5\krb5.ini

  3. 系统环境变量配置: 我的电脑 右键 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> 新建,新增系统变量 KRB5CCNAME,值为 C:\krb5cache.kcache

  4. 创建 %USERPROFILE%\krb5temp 目录,作为认证后的缓存目录

  5. 用户环境变量配置: 我的电脑 右键 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 用户变量 -> 新建,新增系统变量 KRB5CCNAME,值为 %USERPROFILE%\krb5temp\krb5cache.kcache

  6. 将 winutils.exe 拷贝到 C:\winutils\bin

Kettle集成Hive

  • 其实就是启动Kettle的时候执行一下kinit

修改Spoon.bat

1.第41行增加

1
2
3
4
5
6

:: **************************************************
:: ** Kerberos **
:: **************************************************
kinit -kt keytab目录 hive的principal
klist

2.第125行修改

1
2
3
set OPT 最后面 加入以下配置

"-Djava.security.krb5.conf=C:\krb5\krb5.ini"

增加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/
  • 删除
删除的jar.png
  • 新增

hive-jdbc-uber-2.6.3.0-235.jar

连接Hive

1.
选择连接类型: Hadoop Hive 2
端口号: 10000
不需要用户名、密码

2.
数据库连接 > 选项

添加以下命名参数
principal: hive的principal

使用

  1. 以上步骤配置好后,就能通过Kettle写数据到Hive了
  2. 但是只支持单条写入,性能很差
  3. 读取性能还可以
  • 关于只支持单条
  1. 可以自己实现insert into values
  2. 可以写成文件传到HDFS,生成对应格式的hive表
  3. 可以扩展Kettle的功能(有点麻烦,性价比不高)

参考

  1. https://help.pentaho.com/Documentation/8.1/Setup/Administration/Big_Data_Security/Set_Up_Kerberos_for_Pentaho
  2. https://help.pentaho.com/Documentation/8.1/Setup/Configuration/Hadoop_Clusters/Hortonworks
  3. https://github.com/timveil/hive-jdbc-uber-jar