我正试图写一个Yarn应用程序,并希望得到一些建议,对一些设计问题,我在脑海中。我看过一些简单的示例应用程序,比如分布式shell和它的一些变体,所以我对基本api很熟悉。我想做的是创建一个应用程序,它有一个web界面,用户可以与之交互并可能提供某种任务(任务的性质是不相关的)。在此基础上,ui请求容器进行处理。
我想到的理想安排是,我的应用程序主程序提供这个webui,在有人来到am网站请求一些工作之前,不会分配容器。此时,am应该能够注册新容器并为其分配工作。
如果am提供了web ui,并且我的理解是每次将应用程序提交给rm时,rm都会选择am。这意味着am可以具有不同的ip,因此在应用程序重新启动时具有不同的url。这种行为是否表明am不应该用于这种目的,并且可能有一个完全不同的应用程序(非Yarn)可以提供web ui并且更适合它?
在所有的示例中,我都看到了作为调用一部分的对容器的请求。有人能指出与am相关的api吗?这些api允许在以后请求容器,或者可能修改已经声明的容器的资源需求(内存),或者甚至根据需要增加容器的数量
和最后一点类似,大多数的例子都集中在Yarn的应用上,即做某事然后结束。您可以想象,我的应用程序将有意义继续永远运行(作为一个web应用程序)。对于这些长时间运行的应用程序,客户端会对rmapi进行更改。是否可以断开客户端提交作业进程的连接,或者使用&在后台运行它
如果您有任何建议,我将不胜感激
2条答案
按热度按时间yshpjwxd1#
看一看Apache斜纹布。apachetwill是对apachehadoop的抽象,它降低了开发分布式应用程序的复杂性。可以通过执行长时间运行的进程(服务器)启动容器。
apachecurator可以解决为webui服务的容器的ip变化。可以使用apachecurator的服务发现机制在zookeeper中注册服务。
2nc8po8w2#
关于问题(1),您可以在非托管模式下运行am。这将允许您在一台专用机器上运行yarn集群之外的am,您可以对该机器的ip地址进行更多的控制。