ApplicationMaster(YARN-Spark)为每个作业提交?

时间:2017-08-22 15:27:44

标签: apache-spark cluster-computing yarn

这可能更像是一个"理论"或"良好做法"问题而不是严格实用(代码或集群配置文件没有问题)。

所以,遵循这个简单的场景:

  • 通过RESt(Apache Livy)提交,比如10个火花作业到YARN-SPARK集群,
  • 由于资源管理配置,其中5个正在运行,5个已接受/待处理,

这会导致 10 AM实例在主节点中同时运行(消耗大量内存),对吧?

如果是这样的话,还有其他方法吗?考虑到这一点:

  • 工作要求很快,
  • 每次,群集都会收到近1000个请求,
  • 每个工作都有一个aprox。完成15秒(有时候减少取决于每次通话中收到的数据量),
  • 有限的资源数量(3名员工,6gb,4核每人+主人)

1 个答案:

答案 0 :(得分:1)

如果我正确理解了你的问题,请告诉我。使用单独的spark-submit,您需要调用单独的请求。 因此,所有请求都将转到yarn-scheduler,并且根据资源可用性,它们将处于运行或提交或待处理状态。

现在,我们有两种提交纱线工作的方法 - >客户端模式和集群模式。

如果以客户端模式提交作业,则驱动程序在客户端进程中运行,而应用程序主服务器仅用于从YARN请求资源。因此,不同的作业请求将在同一台机器上创建不同的驱动程序(和关联的AM)。 这应该与您有关

如果以群集模式提交作业,则驱动程序在应用程序主进程内运行,该进程由群集上的YARN管理。因此,不同的作业请求将在不同的机器上创建不同的应用程序主服务器(内部驱动程序)。

因此,看看你的用例,很明显使用负载均衡器来支持大号。传入的请求。并以群集模式提交作业。 在它之后,您可以使用最佳实践属性调整应用程序。