问题1 spark.driver.allowMultipleContexts
-
SparkContext.scala#L79
- 这个配置项拆开来念spark driver allow multiple contexts, 难得有句英文句子单词我都认识,组合起来还认识,可事实居然完全和这句子相反。
- 这东西绝对比任何传销组织的洗脑口号强千倍万倍,刚入坑的小白必然会反复试验,前仆后继。
- JIRA
- [SPARK-4180]SparkContext constructor should throw exception if another SparkContext is already running
- 原来就是为了抛个异常出来,并不是实现了multiple contexts,23333。
- [SPARK-4180]SparkContext constructor should throw exception if another SparkContext is already running
- Pull Request
- [SPARK-4180] [Core] Prevent creation of multiple active SparkContexts
- PR的title是prevent,加个配置项叫allow,老外果然不用上语文课。
问题2 runAsSparkUser
-
SparkHadoopUtil.scala#L63
- 这个方法是在AM进程及Executor进程启动之初调用的,字面意思好像可以传个用户参数就可以以不同用户切换
- 启动AM Container及Executor Container如果是Yarn那边配置了LCE而非DCE的话,这个用户应该是由Yarn app的提交者确定的,这边runAsSparkUser封装部分初始化启动代码,只能说这边这个用户只能控制executor的初始化,并不能涵盖task的执行。
- 这个方法写的也用问题,最后的逻辑都是拿同一个用户去创建了两遍然后去transferCredentials,然后这个方法也貌似只能转移一个subject中public的Credential。