H20 Sparkling 中的节点是可抢占的吗?

Are the nodes in H20 Sparkling preemptible?

我是 运行 Sparkling water超过 36 个 Spark 执行者。 由于 Yarn 的调度,一些执行者会抢占并稍后卷土重来。 总的来说,大部分时间有 36 个执行者,但并非总是如此。

到目前为止,我的经验是,一旦 1 个执行程序 失败,整个 H2o 实例就会停止,即使丢失的执行程序稍后恢复正常. 我想知道这是否是 Sparkling-water 的行为方式?或者需要开启一些抢占能力?

有人知道这件事吗?

[总结]

您看到的是 Sparkling Water 的行为。


[详情...]

YARN 上的气泡水可以 运行 两种不同的方式:

  • 默认方式,其中 H2O 节点嵌入在 Spark 执行器中并且有一个 (Spark) YARN 作业,

  • 外部 H2O 集群方式,其中 Spark 集群和 H2O 集群是独立的 YARN 作业(运行在这种模式下需要更多设置;如果你是 运行ning这样你就知道了)

H2O 节点不支持弹性云形成行为。也就是说,一旦形成H2O集群,新节点可能不会加入集群(被拒绝),现有节点可能不会离开集群(集群变得不可用)。

因此,必须为 H2O 节点所在的队列禁用 YARN 抢占 运行ning。在默认情况下,这意味着整个 Spark 作业必须 运行 禁用 YARN 抢占(并且禁用 Spark dynamicAllocation)。对于外部 H2O 集群方式,这意味着 H2O 集群必须 运行 在禁用抢占的 YARN 队列中。

其他可能有帮助的信息:

  • 如果您刚开始使用 Sparkling Water(或一般的 H2O)解决一个新问题,请选择少量大内存节点而不是大量小内存节点;这样可以减少出错的次数,

  • 更具体地说,如果您尝试 运行 36 个执行器,每个执行器都有 1 GB 的内存,那是一个非常糟糕的配置;从 4 个执行程序 x 10 GB 开始,

  • 一般情况下你根本不想用小于5GB的executor启动Sparkling Water,内存越大越好,

  • 若运行默认方式,执行核数不要设置太小;机器学习需要很多 CPU.