使用 SSL 运行
运行 Ranger
run-ranger.sh从config-run.sh收集现有证书文件和密码,以便在目录ranger-key中创建三个新文件:
- hivemr3-ssl-certificate.jks
- hivemr3-ssl-certificate.jceks
- .hivemr3-ssl-certificate.jceks.crc
这些文件自动挂载在 Ranger Pod 内的目录/opt/mr3-run/ranger/key/中。通过这种方式,Ranger 可以与 HiveServer2 和 MySQL 数据库安全通信,也可以运行自己的 HTTPS 服务器。
启动 Ranger 后,连接到 Ranger 网页并更新 JDBC URL(例如jdbc:hive2://indigo20:9852/;principal=hive/indigo20@RED;ssl=true;sslTrustStore=/opt/mr3-run/ranger/key/hivemr3-ssl-certificate.jks;)。
运行 Metastore 和 HiveServer2
用户可以执行脚本run-metastore.sh和run-hive.sh来启动 Metastore 和 HiveServer2。与运行 Ranger 类似,这些脚本从kubernetes/config-run.sh收集现有证书文件和密码,并将新 KeyStore 文件挂载到 Pod 内的目录/opt/mr3-run/hive/key/中。
运行 Beeline
由于 HiveServer2 启用了 SSL 运行,Beeline 应该使用包含自签名证书的自己的 KeyStore 文件。管理员可以使用先前创建的mr3-ssl.pem文件为 Beeline 创建新的公共 KeyStore 文件beeline-ssl.jks。在以下示例中,我们使用beelinepasswd1作为公共 KeyStore 文件的密码。
keytool -genkeypair -alias beeline-ssl-key -keyalg RSA -dname "CN=beeline-ssl" -keypass beelinepasswd1 -validity 999 -keystore beeline-ssl.jks -storepass beelinepasswd1
keytool -importcert -alias trusted-cert-hivemr3 -file mr3-ssl.pem -noprompt -keystore beeline-ssl.jks -storepass beelinepasswd1
然后管理员将公共 KeyStore 文件beeline-ssl.jks分发给普通用户。客户端程序的 JDBC 连接字符串应包含例如ssl=true;sslTrustStore=/home/hive/mr3/kubernetes/beeline-ssl.jks;trustStorePassword=beelinepasswd1。在使用 Beeline 连接到 HiveServer2 的情况下,不需要指定密码beelinepasswd1。
在 HiveServer2 中刷新证书
为了使旧证书失效并使用新证书,管理员应重启 HiveServer2。新的公共 KeyStore 文件也应分发给普通用户。
证书的有效期不影响与 HiveServer2 的连接。因此管理员不必在证书过期后刷新证书。