Apache Spark Auto Scaling属性 - 即时添加工作者

时间:2017-11-05 14:08:02

标签: scala apache-spark mapreduce bigdata

在执行Spark程序期间,让我们说,

将10GB数据读入内存,然后进行过滤,映射,然后保存到另一个存储中。

我是否可以根据负载自动扩展群集,例如,如果此程序最终需要挂起1TB而不是10GB,则可以向本程序添加更多工作节点?

如果可以,怎么办呢?

3 个答案:

答案 0 :(得分:0)

在某种程度上,可能使用dynamic allocation,但行为取决于作业延迟,而不是直接使用特定资源。

你必须记住,一般来说,Spark可以处理比内存更大的数据,而内存问题通常是由用户错误或恶性垃圾收集周期引起的。通过"添加更多资源"

,这些都不容易解决

答案 1 :(得分:0)

如果使用任何云平台来创建集群,则可以使用自动扩展功能。可以水平扩展集群(具有变化的节点数)

答案 2 :(得分:0)

同意@ user8889543-与内存相比,您可以读取更多的数据。

关于动态添加更多资源。它取决于您的群集类型。 我使用独立模式,并且我有一个代码,该代码会自动添加到自动连接到主服务器的实时计算机上,这样我的集群便拥有更多的内核和内存。

如果您仅在集群中有工作/程序,那么这很简单。只需设置

  

spark.cores.max

到很高的数量,这项工作将始终占据集群的所有核心。 see

如果集群中有多个作业,它将变得很复杂。如@ user8889543答案中所述。