本文档介绍了如何使用YARN服务框架在YARN上部署服务。
照常启动HDFS和YARN的所有hadoop组件。要启用YARN服务框架,请将此属性添加到yarn-site.xml并重新启动ResourceManager或在启动ResourceManager之前设置该属性。通过CLI或REST API使用YARN Service框架时需要此属性。
<属性> <说明> 在ResourceManager上启用服务Rest API。 </ description> <name> yarn.webapp.api-service.enable </ name> <value> true </ value> </ property>
下面是一个简单的服务定义,它通过编写一个简单的spec文件而无需编写任何代码来在YARN上启动睡眠容器。
{ “ name”:“卧铺服务”, “ version”:“ 1.0”, “组件” : [ { “ name”:“ sleeper”, “容器数”:1 “ launch_command”:“睡眠900000”, “资源”:{ “ cpus”:1 “内存”:“ 256” } } ] }
用户可以使用以下命令简单地在YARN上运行预构建的示例服务:
yarn app-启动<服务名称> <示例名称>
例如,下面的命令在YARN上启动名为my-sleeper的睡眠服务。
纱线应用程序-启动我的卧铺
有关使用YARN Service框架启动基于docker的服务的信息,请参阅API doc。
以下步骤将指导您使用CLI在YARN上部署服务。有关命令和选项的完整列表,请参见Yarn Commands。
纱线应用程序-启动$ {SERVICE_NAME} $ {PATH_TO_SERVICE_DEF_FILE}
参数:
例如:
纱线应用程序-启动sleeper-service /path/to/local/sleeper.json
当yarn.webapp.api-service.enable设置为true 时,YARN API服务器REST API作为ResourceManager的一部分被激活。
可以通过ResourceManager Web端点在YARN上部署服务。
PUT http:// localhost:8088 / app / v1 / services / $ {SERVICE_NAME} / components / $ {COMPONENT_NAME}
PUT请求正文:
{ “ name”:“ $ {COMPONENT_NAME}”, “数量容器”:$ {COUNT} }
例如:
{ “ name”:“ sleeper”, “容器数”:2 }
停止服务将停止该服务和ApplicationMaster的所有容器,但不会删除服务的状态,例如hdfs上的服务根文件夹。
PUT http:// localhost:8088 / app / v1 / services / $ {SERVICE_NAME}
PUT请求正文:
{ “ name”:“ $ {SERVICE_NAME}”, “ state”:“已停止” }
YARN UI2中专门添加了一个新的服务选项卡,以一流的方式显示YARN服务。服务框架将数据发布到TimelineService中,服务 UI从TimelineService读取数据以呈现其内容。
请参阅TimeLineService v2文档以了解如何启用Timeline Service v2。
在yarn-site.xml中的config下面进行设置,然后启动ResourceManager。如果您是从源代码构建的,请确保在mvn命令中使用-Pyarn-ui-这将为新的YARN UI生成war文件。
<属性> <description>启用RM Web ui2应用程序。</ description> <name> yarn.webapp.ui2.enable </ name> <value> true </ value> </ property>
YARN服务框架支持在安全(kerberized)环境中运行。用户在启动服务时需要指定kerberos主体名称和密钥表。例如,典型的配置如下所示:
{ “ name”:“ sample-service”, ... ... “ kerberos_principal”:{ “ principal_name”:“ hdfs-demo/_HOST@EXAMPLE.COM”, “ keytab”:“ file:///etc/security/keytabs/hdfs.headless.keytab” } }
请注意,principal_name字段中需要_HOST,因为Hadoop客户端会在与服务器进行通信时验证服务器(在这种情况下,AM的)主体具有主机名。* Principal_name:启动服务的用户的主体名称。* keytab:keytab的URI。当前仅支持裸主机上存在的文件。* URI以file://开头-本地主机上存储密钥表的路径。假定管理员在AM启动之前将密钥表预先安装在本地主机上。
上面的示例仅适用于基于非docker容器的服务。YARN服务框架还为管理基于Docker的服务提供了一流的支持。用于管理基于Docker的服务的大多数步骤是相同的,除了在Docker中,组件的工件类型为DOCKER且工件ID为Docker映像的名称。有关如何在YARN上设置docker的详细信息,请在YARN上检查Docker。
有了docker支持,它也为实现功能提供了一系列新的可能性,例如在具有DNS的YARN上发现服务容器。有关更多详细信息,请检查ServiceDiscovery。