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

标签 java scala apache-spark kubernetes jvm

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

与为 Python 等语言旋转容器相比,这种实例化的效率如何?是毫秒、几秒、30秒的问题吗?在像 Kubernetes 这样需要启动许多容器的框架中,这个成本会增加吗?

我听说,就像 Alpine Linux 只有几 MB 一样,有精简的 JVM,但仍然必须有成本。然而,Scala 是 Spark 中的一等公民,而 MR 是用 Java 编写的。

最佳答案

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

关于java - JVM 是否会在分布式/并行处理中产生大量开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155801/

相关文章:

scala - 在 Scala 2.10 中通过反射查找类型参数?

Java Weka - 无法创建新的输出文件。使用标准输出

scala - 将 HList 转换为另一个 HList

scala - 从 SBT 运行控制台时出现错误 "Couldn' t 检索源模块 : org. scala-sbt :compiler-interface:0. 13.13:component"

scala - 替换深层嵌套模式 Scala Spark Dataframe 中的值

apache-spark - 从 Spark 集群中收集数据时出现内存不足错误

java - 如何使用 Jsoup 从跨度类中解析 "text"

java - 确定最接近鼠标的元素的最有效方法是什么?

java - 读取 CA 证书私钥以签署证书

apache-spark - 在 Apache Hudi 表中写入 Spark DataFrame