注意这里的superset使用docker compose安装很多东西需要放在容器内。如果是非docker安装需要的东西应该是一样但是不需要额外放到容器内。1.准备集群的/etc/krb5.conf和/etc/security/keytabs/hive.service.keytab将两个文件放到superset宿主机同样的路径下。然后在宿主机执行kinit -kt /etc/security/keytabs/hive.service.keytab hivexxxx这里的xxxx是hive的服务principal通过执行 klist -kt /etc/security/keytabs/hive.service.keytab 查看Principal列。并且将文件复制到容器内容器名通过执行 docker compose ps 查看 NAME 列后缀是superset-1的容器名。docker cp /etc/krb5.conf 容器名:/etc/krb5.conf docker cp /tmp/krb5cc_0 容器名:/tmp/krb5cc_0 #进入容器内检查容器内的票据有效、设置环境变量 docker exec -it 容器名 bash klist export KRB5CCNAMEFILE:/tmp/krb5cc_02.SQLAlchemy URI格式xxxxhive服务所在机器的完整主机名通过执行 hostname -f 查到。注意不要写ipyyyy想要连接的hive下的某一个数据库。hive://hivexxxx:10000/yyyy?authKERBEROSkerberos_service_namehive并且保证容器内能解析到xxxx对应的ip、/etc/krb5.conf内[Realm]指向的ipa server对应的ip需要写入容器内/etc/hosts#zzzz是ipa server的完整主机名ip1和ip2是对应的ip ip1 xxxx ip2 zzzz #检查是否能解析 getent hosts xxxx getent hosts zzzz3.下载依赖注意容器内的依赖要跟宿主机的依赖区分开来。比如cyrus-sasl-gssapi是RHEL/CentOS的包名但在 Debian/Ubuntu 上叫libsasl2-modules-gssapi-mit。我们要确认的是superset镜像的系统版本#进入容器 docker exec -it 容器名 bash #查看系统版本 cat /etc/os-releaseSuperset 官方镜像就是 Debian。在项目下的docker/requirements-local.txt写入pyhive[hive_pure_sasl] thrift_sasl pure-sasldocker exec 容器名 /app/.venv/bin/pip install thrift-sasl pure-sasl gssapi pykerberosdocker exec 容器名 bash -c apt-get update apt-get install -y krb5-user libsasl2-modules-gssapi-mit
阅读完成 · 觉得有帮助?