前提准备:需krb5.conf和keytab文件,hive和kerberos的ip及hostname,hive数据库
1、 docker load -i actions.tar 重新加载actions镜像
2、 进入/data/datainsight/software/datahub-v0.8.41 重新启动actions容器 docker-compose -p datahub up -d
3、 以root用户进入actions容器内部
docker exec -it -u=root datahub_datahub-actions_1 /bin/bash
4、 把kerberos服务中/etc/krb5.conf文件复制到/etc路径下
#此步骤需要在宿主机完成
docker cp krb5.conf datahub_datahub-actions_1:/etc
5、 vi /etc/hosts 追加hive和kerberos的ip和hostname 示例如下
ping kdc.kerberos.com
ping hadoop.docker.com
确保通过hostname能ping通
6、 复制hive服务的principal生成的keytab文件到/home/datahub/keytabs路径下
#创建keytabs目录
mkdir /home/datahub/keytabs
# 把keytab文件的拥有者改为datahub
chown -R datahub:datahub /home/datahub/keytabs
#此步骤需要在宿主机完成 将keytabs文件复制到容器内部的/home/datahub/keytabs目录下
#hive.keytab为实例名称,以自己用的文件名为准,下面数据注入时会用到
如:docker cp hive.keytab datahub_datahub-actions_1:/home/datahub/keytabs
7、退出容器,以datahub用户身份重新进入容器
docker exec -it datahub_datahub-actions_1 /bin/bash
# 验证该keytab是否生效
kinit -kt /home/datahub/keytabs/hive.keytab hive/hadoop.docker.com
klist
#使用python代码进行连接测试
cd /home/datahub
vi hive_kerberor_connect.py
from pyhive import hive
from krbcontext.context import krbContext
def select_by_hive(stmt):
host="hadoop.docker.com"
with krbContext(using_keytab=True,
principal="hive/[email protected]",
keytab_file="/home/datahub/keytabs/hive.keytab"):
//database 数据库名使用的是default 如没有需要改动 auth认证方式 port为hive服务的端口号
conn = hive.Connection(host=host, port="10000", database="default",
auth="KERBEROS",kerberos_service_name="hive")
cursor = conn.cursor()
cursor.execute(stmt)
data = cursor.fetchall()
conn.close()
return data
if __name__=="__main__":
sql="show tables"
result=select_by_hive(sql)
print(result)
# 运行代码
python hive_kerberor_connect.py
连接成功
7、 datahub 中source使用kerberos的连接hive的配置格式
source:
type: hive
config:
host_port: 'hadoop:10000'
database: default //数据库名称 不填选择所有的数据库
options:
connect_args:
auth: KERBEROS //认证方式 hive2.authentication
kerberos_service_name: hive
principal: hive/[email protected] //default principal
sink:
type: datahub-rest
config:
server: 'http://ip:8080' //服务器ip+port
token: //个人令牌
transformers:
-
type: industry_transformer
config:
industry_json: PI
标签:keytab,kerberos,hive,keytabs,datahub,docker
From: https://www.cnblogs.com/helloshikui/p/17225462.html