在作业页面上隐藏通过 spark-submit 传递的敏感参数

Hide sensitive arguments passed with spark-submit on the Job Page

我最近发现 Spark 会在作业页面上显示传递给 spark-submit 命令的命令行参数。我需要编辑敏感参数,例如页面中的密码。

确切位置:环境 选项卡 > 系统属性 部分 > sun.java.command 属性。

显示的示例:

org.apache.spark.deploy.yarn.ApplicationMaster --class com.xxx.xxx.sparkexport.bus.SparkExport --jar file:/xx/hadoop/jar/xx/xx.jar --arg -c --arg jdbc:dbserv://xx.xx.xx.com:2633 --arg -d --arg ActionS --arg -D --arg ActionS --arg -C --arg xx_Hadoop --arg -q --arg SELECT xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx FROM xyy WHERE zz= '2016-12-28' AND aa= '11' --arg -t --arg bb--executor-memory 8192m --executor-cores 1 --properties-file /hadoop/yarn/nm/usercache/xx/appcache/application_1482736206018_6501/container_e134_1482736206018_6501_01_000001/__spark_conf__/__spark_conf__.properties

我在网上搜索过,但没有找到。我在想,如果我可以找到并修改该字符串(在 SparkContext 对象上),它是否会反映在页面上?那属性怎么修改呢?

我认为这是一个需要解决(或解决)的非常重要的安全问题。非常感谢任何想法。

所以,我最终做的是调整用于执行我们的 spark 作业的代码,例如:

SparkConf conf = new SparkConf()
            .setAppName(application.getApplicationName())
            .set("sun.java.command", "Dummy Command String...");

然后,使用该 .JAR 创建我们所有的 Spark 作业工具。 MAVEN 处理的依赖关系使这变得非常容易。作业按应有的方式创建,只是特定的 属性 发生了变化。