hive kerberos

 

 

前提准备:需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/hadoop.docker.com@EXAMPLE.COM",
                    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/hadoop.docker.com@EXAMPLE.COM //default principal
sink:
    type: datahub-rest
    config:
        server: 'http://ip:8080' //服务器ip+port
        token: //个人令牌
transformers:
    -
        type: industry_transformer
        config:
            industry_json: PI
posted @   時窥  阅读(240)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示