Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM是否会在分布式/并行处理中产生大量开销?_Java_Scala_Apache Spark_Kubernetes_Jvm - Fatal编程技术网

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

Java JVM是否会在分布式/并行处理中产生大量开销?,java,scala,apache-spark,kubernetes,jvm,Java,Scala,Apache Spark,Kubernetes,Jvm,如果分布式计算框架为运行Java/Scala操作启动节点,那么它必须在每个容器中包含JVM。例如,每个Map和Reduce步骤都会生成自己的JVM 与Python等语言的快速启动容器相比,该实例化的效率如何?这是一个毫秒、几秒、30秒的问题吗?在像Kubernetes这样需要启动许多容器的框架中,这一成本会增加吗 我听说,就像alpinelinux只有几MB,有精简的JVM,但仍然有成本。然而,Scala是Spark中的头等公民,MR是用Java编写的。Linux容器技术使用分层文件系统,因此更

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

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


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

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

我相信,如果没有“重大开销”的确切定义,这个问题将作为主要的意见来解决。另外,不要忘记,程序的性能并不是选择工具的唯一重要指标。否则,每个人都可能仍然用汇编语言编写代码,最多用C语言编写。拉取openjdk和python:3图像和时间
docker运行python:3 python3--version
docker运行openjdk java--version
。tldr:这并不像你想象的那么重要。我个人的经验是,在Python中定义为UDF或映射到分区的任何函数都比在Java/Scala中要昂贵得多。事实上,正是因为这个原因,我带领一个团队将我们的整个代码库从pyspark翻译成Scala;内存使用率正在用pyspark破坏我们的集群。不要担心JVM本身的成本,而是担心pyspark在集群中序列化的内容的成本。我断言Scala或Java将比Python更节省内存。