跳到主要内容

使用 SSL 运行

运行 Ranger

run-ranger.shconfig-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.shrun-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 的连接。因此管理员不必在证书过期后刷新证书。