这可能更像是一个"理论"或"良好做法"问题而不是严格实用(代码或集群配置文件没有问题)。
所以,遵循这个简单的场景:
这会导致 10 AM实例在主节点中同时运行(消耗大量内存),对吧?
如果是这样的话,还有其他方法吗?考虑到这一点:
答案 0 :(得分:1)
如果我正确理解了你的问题,请告诉我。使用单独的spark-submit,您需要调用单独的请求。 因此,所有请求都将转到yarn-scheduler,并且根据资源可用性,它们将处于运行或提交或待处理状态。
现在,我们有两种提交纱线工作的方法 - >客户端模式和集群模式。
如果以客户端模式提交作业,则驱动程序在客户端进程中运行,而应用程序主服务器仅用于从YARN请求资源。因此,不同的作业请求将在同一台机器上创建不同的驱动程序(和关联的AM)。 这应该与您有关 。
如果以群集模式提交作业,则驱动程序在应用程序主进程内运行,该进程由群集上的YARN管理。因此,不同的作业请求将在不同的机器上创建不同的应用程序主服务器(内部驱动程序)。
因此,看看你的用例,很明显使用负载均衡器来支持大号。传入的请求。并以群集模式提交作业。 在它之后,您可以使用最佳实践属性调整应用程序。