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
Apache spark 在纱线模式下,Apache Spark的执行器芯数是否应设置为1?_Apache Spark_Yarn_Apache Spark 2.0 - Fatal编程技术网

Apache spark 在纱线模式下,Apache Spark的执行器芯数是否应设置为1?

Apache spark 在纱线模式下,Apache Spark的执行器芯数是否应设置为1?,apache-spark,yarn,apache-spark-2.0,Apache Spark,Yarn,Apache Spark 2.0,我的问题:在Thread master中运行Apache Spark应用程序时,部署模式为客户机或集群,executor cores是否应该始终设置为1 我正在运行一个应用程序,该应用程序在一个集群上处理数百万数据,该集群有200个数据节点,每个节点都有14个核心。当我在纱线上使用2个执行器芯和150个执行器时,它运行得非常完美,但一位集群管理员要求我使用1个执行器芯。他坚持认为,“纱线中的火花”应该与1个执行器内核一起使用,因为否则它将窃取其他用户的资源。他把我引向ApacheDocs上的这一

我的问题:在Thread master中运行Apache Spark应用程序时,部署模式为客户机或集群,executor cores是否应该始终设置为1

我正在运行一个应用程序,该应用程序在一个集群上处理数百万数据,该集群有
200个数据节点
,每个节点都有
14个核心
。当我在纱线上使用
2个执行器芯
150个执行器
时,它运行得非常完美,但一位集群管理员要求我使用1个执行器芯。他坚持认为,“纱线中的火花”应该与1个执行器内核一起使用,因为否则它将窃取其他用户的资源。他把我引向ApacheDocs上的这一页,上面说executor core的默认值是1

那么,对于执行器核心,我们应该只使用1,这是真的吗

如果执行器使用1个内核,它们不是单线程的吗


您好,

当我们使用像Thread这样的群集管理器运行spark应用程序时,会有几个后台守护程序运行,比如NameNode、Secondary NameNode、DataNode、JobTracker和TaskTracker。因此,在指定num executors时,我们需要确保留出足够的内核(每个节点约1个内核),使这些守护进程能够顺利运行

ApplicationMaster负责与ResourceManager协商资源,并与节点管理员合作执行和监控容器及其资源消耗。如果我们正在运行spark on Thread,那么我们需要对AM所需的资源进行预算

Example 
**Cluster Config:**
200 Nodes
14 cores per Node
为Hadoop/Thread守护进程保留每个节点1个内核=>Num cores available per node=14-1=13 因此,集群中的可用核心总数=13 x 200=2600

让我们为每个执行器分配5个核心=>--执行器核心=/strong>=5(以获得良好的HDFS吞吐量)

可用执行器的数量=(总内核数/每个执行器的内核数)=2600/5=520

为ApplicationManager保留1个执行器=>--num executors=519

请注意:这只是一个示例建议配置,您可以 可能希望根据您的应用程序的性能进行修改

另一个更好的做法是在运行时监视节点资源 执行作业时,这会更好地了解资源 集群中的利用率


谢谢你,内哈。这正是我所知道的。在上面的假设示例中,您为每个执行器获取了5个内核,在我的示例中仅使用了2个(分布在200个执行器中),并且发现性能是可以接受的。从管理员的意见,我应该始终使用每个纱线执行器1核心是我需要澄清的。他说这就是ApacheSpark docs所说的。这没有任何意义,是吗?文档明确指出“控制内部设置的大多数属性都有合理的默认值。”这些是默认值,而不是强制值。在纱线主模式下,默认值为1,因此每个执行器默认情况下仅使用1个芯。然而,如果你有更多的内核,使用更多的内核绝对没有坏处,只要你为hadoop Daemon留下至少一个内核。在我的使用案例中,我通常认为1个executor内核的性能最好,尽管你看到许多博客帖子建议每个executor 4或5个内核作为最佳选择。你必须记住的是,假设你有一个执行器,它正在消化单个任务——这可能是由于各种原因造成的数据位置等。在这种情况下,你的执行器将有2个核,但可能只有1个核在使用。它建议每个执行器减少核数,增加总执行器数。这样并行性会更好。前任;100个节点;每个都有8个内核和16gb ram。建议配置为1核心、2gbram、700执行器。