Hadoop 文档

General

Common

HDFS

MapReduce

MapReduce REST APIs

YARN

YARN REST APIs

YARN Service

Submarine

Hadoop Compatible File Systems

Auth

Tools

Reference

Configuration

本文档介绍了如何使用YARN服务框架在YARN上部署服务。

配置并启动HDFS和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上管理服务

以下步骤将指导您使用CLI在YARN上部署服务。有关命令和选项的完整列表,请参见Yarn Commands

部署服务

纱线应用程序-启动$ {S​​ERVICE_NAME} $ {PATH_TO_SERVICE_DEF_FILE}

参数:

  • SERVICE_NAME:服务的名称。请注意,对于当前用户,这在运行的服务中必须是唯一的。
  • PATH_TO_SERVICE_DEF:JSON格式的服务定义文件的路径。

例如:

纱线应用程序-启动sleeper-service /path/to/local/sleeper.json

扩展服务的组成部分

增加或减少组件的容器数。

纱线应用程序-flex $ {SERVICE_NAME} -component $ {COMPONENT_NAME} $ {NUMBER_OF_CONTAINERS}

例如,对于名为sleeper-service的服务

轨枕组件设置为2个容器(绝对数)。

纱线应用-flex卧铺服务-卧铺2

flex命令中的$ {NUMBER_OF_CONTAINERS}也支持相对更改,例如+2或-2。

停止服务

停止服务将停止该服务和ApplicationMaster的所有容器,但不会删除服务的状态,例如hdfs上的服务根文件夹。

纱线应用程式-stop $ {SERVICE_NAME}

重新启动已停止的服务

重新启动已停止的服务很容易-只需致电start!

纱线应用-开始$ {SERVICE_NAME}

销毁服务

除了停止服务外,它还会删除hdfs上的服务根文件夹和YARN Service Registry中的记录。

纱线应用程序-destroy $ {SERVICE_NAME}

通过REST API在YARN上管理服务

yarn.webapp.api-service.enable设置为true 时,YARN API服务器REST API作为ResourceManager的一部分被激活。

可以通过ResourceManager Web端点在YARN上部署服务。

有关API 的详细说明,请参阅API文档

部署服务

将上述示例服务定义发布到ResourceManager api-server端点:

POST http:// localhost:8088 / app / v1 / services

获取服务状态

GET http:// localhost:8088 / app / v1 / services / $ {SERVICE_NAME}

扩展服务的组成部分

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”:“已停止”
}

重新启动已停止的服务

重新启动已停止的服务很容易。

PUT http:// localhost:8088 / app / v1 / services / $ {SERVICE_NAME}

PUT请求正文:

{
  “ name”:“ $ {SERVICE_NAME}”,
  “状态”:“开始”
}

销毁服务

除了停止服务外,它还会删除hdfs上的服务根文件夹和YARN Service Registry中的记录。

删除http:// localhost:8088 / app / v1 / services / $ {SERVICE_NAME}

带有YARN UI2和Timeline Service v2的Services UI

YARN UI2中专门添加了一个新的服务选项卡,以一流的方式显示YARN服务。服务框架将数据发布到TimelineService中,服务 UI从TimelineService读取数据以呈现其内容。

启用时间轴服务v2

请参阅TimeLineService v2文档以了解如何启用Timeline Service v2。

启用新的YARN UI

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一起运行

上面的示例仅适用于基于非docker容器的服务。YARN服务框架还为管理基于Docker的服务提供了一流的支持。用于管理基于Docker的服务的大多数步骤是相同的​​,除了在Docker中,组件的工件类型为DOCKER且工件IDDocker映像的名称。有关如何在YARN上设置docker的详细信息,请在YARN上检查Docker

有了docker支持,它也为实现功能提供了一系列新的可能性,例如在具有DNS的YARN上发现服务容器。有关更多详细信息,请检查ServiceDiscovery