我最近发现 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 对象上),它是否会反射(reflect)在页面上?如何修改该属性?
我认为这是一个需要解决(或解决)的非常重要的安全问题。任何想法都将不胜感激。
最佳答案
所以,我最终要做的是调整用于执行 Spark 作业的代码,例如:
SparkConf conf = new SparkConf()
.setAppName(application.getApplicationName())
.set("sun.java.command", "Dummy Command String...");
然后,使用该 .JAR 创建我们所有的 Spark 作业工具。由 MAVEN 处理的依赖关系使这一切变得非常简单。就业机会按其应有的方式创建,只是特定的属性发生了变化。
关于java - 在作业页面上隐藏通过 Spark-Submit 传递的敏感参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41382353/