2017-01-13 17 views
1

我在分为两个部分的作业:火花 - 执行期间变化的并行

  • 第一部分使用火花
  • 的seoncd部分计算重CPU密集型ML算法
从HBase的检索数据

问题是,如果执行者/内核数量很多,HBase集群会受到过分强烈的质疑,这可能会导致生产不稳定。由于执行器/内核太少,ML计算需要很长时间才能执行。

由于在启动时设置了执行程序和内核的数量,我想知道是否有办法减少作业的第一部分的执行程序编号。

我显然希望避免运行像Hadoop这样的两个单独的作业,在这两个步骤之间执行mandary磁盘序列化。

感谢您的帮助

回答

0

我猜dynamic allocation是你在找什么。这也可以用于火花流媒体。

我认为您可能需要在RDD大小方面有所作为,以平衡数据摄取和数据处理,但取决于您的真实使用情况,它可能非常具有挑战性。

+0

感谢您的帮助。 “你的RDD尺寸稍微增加一点”意味着什么。它是否将数据检索分为10个RDD,然后将它们联合起来? – ogen

+0

我认为,如果我的理解正确(您希望减少分区数量并减少应用程序的运行速度),在每个阶段重新分配RDD的方式,尤其是针对您的情况的最早分析方法。在这个阶段,你需要更多的执行者,并且你希望有更多的执行者用更多的分区进行重新分区,动态分配可以完成剩下的部分。 使用您的explain()来确保它在每个步骤中始终表现得像你想要的那样。 –