为什么每个 JVM 只允许一个 SparkContext?

3

这是一个关于在面试中被问到的问题:每个JVM允许创建多少个SparkContext,为什么只允许一个? 我知道每个JVM只允许一个SparkContext,但不明白原因。 请有经验的大佬帮忙解释一下“每个JVM只允许一个SparkContext”的原因。

1个回答

6
答案很简单-它没有被设计为适用于多个上下文。引用Reynold Xin
“我认为我们目前不支持在同一个JVM进程中使用多个SparkContext对象。代码库中存在许多假设,使用共享缓存、线程本地变量或一些全局标识符,这些假设阻止我们使用多个SparkContext。”
从更广泛的意义上说,单个应用程序(带有main)和单个JVM是Java世界的标准方法(每个Java应用程序是否有一个JVM?为什么每个应用程序都有一个JVM?)。应用服务器选择不同的方法,但这是例外,而不是规则。
从实际角度来看,处理单个数据密集型应用程序已经够痛苦了(调整GC,处理泄漏资源,通信开销)。在单个JVM中运行多个Spark应用程序将在长期内无法进行调整和管理。
最后,拥有多个上下文没有太大的用处,因为每个分布式数据结构都与其上下文紧密相连。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接