假设我想使用yarn集群来运行一个非jvm分布式应用程序(例如基于。net的。这是个好主意吗?)从我目前所读到的,我需要开发一个由
组成的YARN应用程序。- 一个YARN客户端,用于向YARN框架提交作业
- 一个YARN ApplicationMaster,它是集群中管弦应用程序的核心。
似乎这两个部分需要使用Yarn api来编写,而Yarn api是作为Jar库提供的。这意味着它们必须使用JVM语言之一来编写。似乎有可能用REST api编写YARN客户端,对吗?如果是,这意味着客户端可以用任何语言编写(例如。net上的c#)。然而,对于应用程序master来说,情况似乎并非如此,它必须使用JVM。正确吗?
我是新来的YARN。我只是想确认一下我的理解是否正确。
YARN Client和AppMaster需要用Java编写,因为它们是写YARN Java API的。RESTful API https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/WebServicesIntro.html实际上是提供您可以从CLI执行的命令。
幸运的是,您的"容器"进程可以用几乎任何东西创建。http://hortonworks.com/blog/apache-hadoop-yarn-concepts-and-applications/用下面的引语说得最好:
"这允许ApplicationMaster与NodeManager一起工作来启动容器,从简单的shell脚本到Unix/Windows上的C/Java/Python进程,再到成熟的虚拟机(例如KVMs)。"
也就是说,如果你正在尝试开发一个非Java应用程序(甚至是Java应用程序!),它已经是一个分布式应用程序,那么Slider框架http://slider.incubator.apache.org/可能是你最好的起点。