Yarn Service 框架提供了一个类来支持和 API 来在 Yarn 中本地托管长期运行的服务。简而言之,它是一个容器编排平台,用于管理 YARN 上的容器化服务。它既支持 docker 容器,也支持传统的基于进程的容器。
该框架的职责包括执行配置解析和挂载、生命周期管理(如停止/启动/删除服务)、伸缩服务组件、在 YARN 上滚动升级服务、监控服务的健康和就绪情况等等。
yarn-service 框架主要包括以下组件:
YARN Service 框架使得将现有服务导入 YARN 变得很容易。它隐藏了应用程序管理的所有复杂的底层细节,使用户不必被迫编写新代码。新服务的开发人员不必担心 YARN 的内部问题,只需要专注于服务的容器化。
此外,该特性的另一个巨大优势是,可以在单一平台上同时启用传统的批处理作业和长时间运行的服务!组合这些工作负载的好处有两个:
该特性处于 alpha (未验收测试)状态,因此 api、命令行可能会发生变化。
添加以下配置到 yarn-site.xml 中,通过CLI或REST API使用YARN Service框架需要这个配置。
Enable services rest api on ResourceManager.
yarn.webapp.api-service.enable
true
下面是一个简单的服务定义,它通过编写一个简单的规范文件在YARN上启动容器,而不需要编写任何代码。
{
"name": "sleeper-service",
"version": "1.0",
"components" :
[
{
"name": "sleeper",
"number_of_containers": 1,
"launch_command": "sleep 900000",
"resource": {
"cpus": 1,
"memory": "256"
}
}
]
}
用户可以使用下面的命令简单地在YARN上运行一个预构建的示例服务:
yarn app -launch
下面的命令在YARN上启动一个名为my-sleeper的休眠服务。
yarn app -launch my-sleeper sleeper
下面的步骤将指导您使用CLI在YARN上部署服务。
yarn app -launch ${SERVICE_NAME} ${PATH_TO_SERVICE_DEF_FILE}
参数
样例
yarn app -launch sleeper-service /path/to/local/sleeper.json
增加或减少组件的容器数量。
yarn app -flex ${SERVICE_NAME} -component ${COMPONENT_NAME} ${NUMBER_OF_CONTAINERS}
例如将名为 sleeper-service 的组件 sleeper 的容器数量改为2,绝对值。
yarn app -flex sleeper-service -component sleeper 2
flex命令中${NUMBER_OF_CONTAINERS}也支持相对更改,例如+2或-2。
yarn app -stop ${SERVICE_NAME}
yarn app -start ${SERVICE_NAME}
yarn app -destroy ${SERVICE_NAME}