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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 使用cgroup进行Spark时介观的行为_Apache Spark_Mesos_Cgroups - Fatal编程技术网

Apache spark 使用cgroup进行Spark时介观的行为

Apache spark 使用cgroup进行Spark时介观的行为,apache-spark,mesos,cgroups,Apache Spark,Mesos,Cgroups,我想知道当启用cgroup时,Mesos上细粒度模式下Spark的行为会是什么 一个问题是:当我在没有cgroups的情况下使用Mesos+spark时,它已经表明实际的spark executor进程使用的内存至少比它向Mesos承诺使用的内存多10%。启用cgroup时,它会杀死Spark执行器吗 第二,如何处理文件缓存?Spark严重依赖于文件缓存。文件缓存是否占Mesos中的内存量?可能不会,但我们能影响这一点吗?例如,理想情况下,我希望Spark总共使用8GB,其中5GB应用于java

我想知道当启用cgroup时,Mesos上细粒度模式下Spark的行为会是什么

一个问题是:当我在没有cgroups的情况下使用Mesos+spark时,它已经表明实际的spark executor进程使用的内存至少比它向Mesos承诺使用的内存多10%。启用cgroup时,它会杀死Spark执行器吗

第二,如何处理文件缓存?Spark严重依赖于文件缓存。文件缓存是否占Mesos中的内存量?可能不会,但我们能影响这一点吗?例如,理想情况下,我希望Spark总共使用8GB,其中5GB应用于java进程——假设Spark运行良好且不会超过5GB——3GB应用于文件缓存(最大)


我希望有人有这方面的经验,因为为了亲自测试这些东西,我必须经历来自集群系统管理员的大量支持请求,因为cgroups在某一点上依赖于根凭据-我不希望没有询问其他人就白做。

要回答您的第一个问题,似乎你对cgroup的工作方式有些混淆。执行器根本无法(正如我可以确认的那样,它确实能够)分配比cgroup允许的内存更多的内存。因此,Mesos实际上不会充当进程杀手或任何东西*。但是,某些类型的程序确实会因无法分配更多内存而中断,这取决于该程序是否退出,或者是否能够正常运行,但可能内存和/或性能较低

对于第二个问题,似乎没有任何配置设置影响实际的cgroup内存量。在executor内存设置和Spark从Mesos获得的内容之间似乎存在1对1的映射。然而,我确实认为存在一个隐藏因素,因为我可以看到Spark要求大约5.8GB,但实际上我将executor内存设置为5GB。(一旦我能在源代码中找到这个可能为15%的隐藏因素,我将更新票据。)

更新时,您需要的设置是
spark.mesos.executor.memoryOverhead
。您可以给出一个以兆字节为单位的数字,作为将用作Mesos资源的总内存添加到执行器内存中,从而作为cgroup内存限制

*=Update2,实际上,默认情况下,cgroup会终止超出控制组限制的进程。我可以确认
/cgroups/memory/x/
中的
memory.oom\u控件
设置为“0”(直觉上已启用)。然而,在Spark的情况下,上述10-15%的开销为不遇到OOM提供了足够的余地