JVM在分布式/并行处理中是否会产生大量开销?

时间:2019-01-12 00:42:51

标签: java scala apache-spark kubernetes jvm

如果分布式计算框架启动了运行Java / Scala操作的节点,则它必须在每个容器中包含JVM。例如。每个Map and Reduce步骤都会产生自己的JVM。

与实例化Python等语言的容器相比,此实例化的效率如何?是毫秒,几秒,30秒的问题吗?是否需要在Kubernetes这样的框架中增加成本,而您需要旋转许多容器?

我听说,就像Alpine Linux仅有几MB一样,已经精简了JVM,但仍然必须付出一定的代价。但是,Scala是Spark的一等公民,而MR是用Java编写的。

1 个答案:

答案 0 :(得分:1)

Linux容器技术使用分层的文件系统,因此较大的容器映像通常不会产生大量的运行时开销,尽管您确实必须在映像第一次在节点上使用时下载该映像,这可能会增加真正的大型集群。通常,除了大多数JVM的启动缓慢的众所周知的问题之外,这通常不必担心。但是,Spark不会像您描述的那样为每个操作启动一个新的容器。它创建了一组执行程序容器(pod),用于整个Spark执行运行。