跳到主要内容

通过 SSL 访问 S3

为了通过启用 SSL 访问 S3,用户应在conf/core-site.xml中设置配置键fs.s3a.connection.ssl.enabled

vi conf/core-site.xml
<property>
<name>fs.s3a.connection.ssl.enabled</name>
<value>true</value>
</property>

对于访问自定义 S3 兼容存储,应修改存储服务器的地址以使用 HTTPS。

vi conf/core-site.xml
<property>
<name>fs.s3a.endpoint</name>
<value>https://my.s3.server.address:9000</value>
</property>

然后用户应复制用于连接存储服务器的证书文件,并在config-run.sh中将MR3_S3_CERTIFICATE设置为指向该副本。

vi config-run.sh
ENABLE_SSL=true
...
MR3_S3_CERTIFICATE=/home/hive/mr3/kubernetes/s3-public.cert

现在执行run-hive.sh会将证书添加到 KeyStore 文件key/hivemr3-ssl-certificate.jks,使用该 KeyStore 文件的每个组件都可以访问 S3。例如,HiveServer2 可以访问 S3,因为配置键hive.server2.keystore.path指向 KeyStore 文件。

vi conf/hive-site.xml
<property>
<name>hive.server2.keystore.path</name>
<value>/opt/mr3-run/key/hivemr3-ssl-certificate.jks</value>
</property>

对于 DAGAppMaster 和 ContainerWorkers,用户应检查 Java 属性javax.net.ssl.trustStorejavax.net.ssl.trustStoreType是否在其命令行选项中正确设置:

vi conf/mr3-site.xml
<property>
<name>mr3.am.launch.cmd-opts</name>
<value>... -Djavax.net.ssl.trustStore=/opt/mr3-run/key/hivemr3-ssl-certificate.jks -Djavax.net.ssl.trustStoreType=jks</value>
</property>
<property>
<name>mr3.container.launch.cmd-opts</name>
<value>... -Djavax.net.ssl.trustStore=/opt/mr3-run/key/hivemr3-ssl-certificate.jks -Djavax.net.ssl.trustStoreType=jks</value>
</property>