【发布时间】:2019-09-17 22:12:11
【问题描述】:
我试图访问需要 SSL 的服务(比如说 mongodb),但连接被执行程序拒绝,因为我没有设置正确的 SSL 配置。
我知道spark在提交job的时候支持如下配置:
spark.executor.extraJavaOptions
spark.driver.extraJavaOptions
然后我们可以设置jvm ssl路径(和密码):
javax.net.ssl.trustStore
javax.net.ssl.keyStore
但是,jvm 要求这些路径是物理路径,这在使用亚马逊的 Spark EMR 或任何其他不提供磁盘访问权限的 Spark 集群时会导致问题,其中可以预先部署所需的文件。
所以基本上我的问题是:
- spark 作业有没有办法将信任库/密钥库文件推送给所有执行者? --files 可以将文件推送到所有执行程序,但是我必须在每个执行程序中获取绝对路径才能设置正确的配置。
- 是否可以在所有执行程序上运行作业? (在该工作中,我们可以将信任库/密钥库从中立位置推送到执行程序上下文中的 tmp 文件)
- jvm 是否可以配置为处理 URI,即 javax.net.ssl.trustStore=s3a://path/to/keystore.key ?
【问题讨论】:
标签: java scala apache-spark ssl emr