Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
Apache spark Spark单机版设置中的内存使用情况_Apache Spark_Hadoop_Mapreduce_Distributed Computing - Fatal编程技术网

Apache spark Spark单机版设置中的内存使用情况

Apache spark Spark单机版设置中的内存使用情况,apache-spark,hadoop,mapreduce,distributed-computing,Apache Spark,Hadoop,Mapreduce,Distributed Computing,我有一个火花设置,一个工人有6个核心。现在我向工人广播一个对象x。 我有三个问题- 对于map reduce作业,将生成6份my obj x,还是所有核心共享一份x x的生命周期是什么,即:;它什么时候会被摧毁。我这样问是因为这个对象x占用了大量内存 如果我从文件中读取一个对象,是否有其他方法在所有6个内核之间共享该对象 广播数据在每个执行器(java进程)中传输和存储一次,而不是在每个核心中传输和存储一次。换句话说,如果您只有一个节点,并且将spark.executor.instances设置

我有一个火花设置,一个工人有6个核心。现在我向工人广播一个对象x。 我有三个问题-

  • 对于map reduce作业,将生成6份my obj x,还是所有核心共享一份x

  • x的生命周期是什么,即:;它什么时候会被摧毁。我这样问是因为这个对象x占用了大量内存

  • 如果我从文件中读取一个对象,是否有其他方法在所有6个内核之间共享该对象


  • 广播数据在每个执行器(java进程)中传输和存储一次,而不是在每个核心中传输和存储一次。换句话说,如果您只有一个节点,并且将spark.executor.instances设置为2,将spark.executor.cores设置为3,则节点上会有两个java进程,其中每个进程都有您的数据副本。这是使用广播的好处之一,而不仅仅是使用闭包将数据传递到执行器代码中


    对于生命周期,当驱动程序上的广播句柄不再有任何引用时,广播数据将被删除。这也意味着在运行使用该广播数据的任何任务之后。如果您观看spark日志,您将看到发生这种情况时沿“Broadcast removed”(广播已删除)行的消息

    如果它是一个独立的设置,并且您只有一台机器..则不需要使用广播变量。广播变量通常用于向多个节点发送消息。是的,我理解这一点。但是,我怎样才能保存内存,因为所有进程都会有同一个对象的副本,这会破坏内存。既然它是一个只读对象,有没有办法节省内存?有没有办法节省内存?因为该对象将在所有进程之间复制?如果每个节点只有一个执行进程(具有多个核心),那么每个节点上的RAM中只有一个副本。如何将其减少到1以下?任何其他节省的内存都需要通过减少共享对象的大小来实现。谢谢。我将通过更改执行器的数量和每个执行器的内核数量来检查内存和时间消耗统计数据。