我最近发现Spark显示了在作业页面上传递到Spark-Submit命令中的命令行参数。我需要编辑敏感的参数,例如页面上的密码。
精确位置:环境 TAB> 系统属性 e节> sun.java.command.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对象上),是否会反映在页面上?该属性如何修改?
我认为这是解决(或解决)的非常重要的安全问题。任何想法都非常感谢。
所以,我最终要做的就是调整用于驱散我们的火花作业的代码,例如:
SparkConf conf = new SparkConf()
.setAppName(application.getApplicationName())
.set("sun.java.command", "Dummy Command String...");
然后,使用它来创建我们所有的火花工作工具。由Maven处理的依赖项使这超级简单。作业会根据应该创建,只是该特定的属性被更改了。