zoukankan      html  css  js  c++  java
  • Hadoop 3.1.1

    快速开始

    本文描述了如何用 Yarn 服务框架在 Yarn 上部署服务。

    配置和启动 HDFS 和 Yarn 组件

    首先启动 HDFS 和 Yarn 的各个组件。为启用 Yarn 服务框架,添加以下参数到 yarn-site.xml 文件中并重启 ResourceManager,或在 ResourceManager 启动前就设置号。该参数是启用 Yarn 服务框架的 CLI 和 REST API 所必需的。

    <property>
      <description>
        在 ResourceManager 启用 Yarn 服务框架的 REST API。
      </description>
      <name>yarn.webapp.api-service.enable</name>
      <value>true</value>
    </property>

    示例服务

    以下是一个简单的服务定义,它通过一个简单的说明文件在 Yarn 上启动容器执行睡眠命令,整个过程无需写任何代码。

    {
      "name": "sleeper-service",
      "components" : 
        [
          {
            "name": "sleeper",
            "number_of_containers": 1,
            "launch_command": "sleep 900000",
            "resource": {
              "cpus": 1, 
              "memory": "256"
           }
          }
        ]
    }

    执行以下命令,用户可以简单地运行一个预先提供的样例服务:

    yarn app -launch <service-name> <example-name>

    举例来说,以下命令在 Yarn 上启动了一个 sleeper 服务并命名为 my-sleeper。

    yarn app -launch my-sleeper sleeper

    如果要使用 Yarn 服务框架启动基于 Docker 的服务,请参阅 API 文档

    通过 CLI 管理 Yarn 上的服务

    以下步骤实现用 CLI 部署一个 Yarn 服务。请参阅 Yarn 命令集以获得完整的命令列表。

    部署一个服务

    yarn app -launch ${SERVICE_NAME} ${PATH_TO_SERVICE_DEF_FILE}

    参数 SERVICE_NAME 在某个用户名下必须是唯一的。参数 PATH_TO_SERVICE_DEF 是 Json 格式的服务定义文件夹的路径。

    举例来说:

    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

    在伸缩命令中,${NUMBER_OF_CONTAINERS} 同样可以是相对值,如 +2 或 -2。

    停止一个服务

    停止一个服务将停止该服务的所有容器和关联的 ApplicationMaster,但不会删除服务的状态,如在 HDFS 上的服务的根目录。

    yarn app -stop ${SERVICE_NAME}

    重启一个停止的服务

    重启一个停止的服务非常容易,只需调用启动命令!

    yarn app -start ${SERVICE_NAME}

    销毁一个服务

    在停止服务之外,它还会删除该服务在 HDFS 上的根目录以及在 Yarn Service Registry 里的记录。

    yarn app -destroy ${SERVICE_NAME}

    通过 REST API 管理 Yarn 上的服务

    当 yarn.webapp.api-service.enable 为 true时,YARN API Server REST API 作为 ResourceManager 的一部分被激活。

    可以通过 ResourceManager 的网络入口在 Yarn 上部署服务。

    参阅 API 文档以获得更多 API 说明。

    部署一个服务

    POST 提交前面提供的样例服务的定义到 ResourceManager API 服务入口:

    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}",
      "number_of_containers": ${COUNT}
    }

    举例来说:

    {
      "name": "sleeper",
      "number_of_containers": 2
    }

    停止一个服务

    停止一个服务将停止该服务的所有容器和关联的 ApplicationMaster,但不会删除服务的状态,如在 HDFS 上的服务的根目录。

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

    PUT 请求体:

    {
      "name": "${SERVICE_NAME}",
      "state": "STOPPED"
    }

    重启一个停止的服务

    重启一个停止的服务非常容易:

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

    PUT 请求体:

    {
      "name": "${SERVICE_NAME}",
      "state": "STARTED"
    }

    销毁一个服务

    在停止服务之外,它还会删除该服务在 HDFS 上的根目录以及在 Yarn Service Registry 里的记录。

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

    嵌入 Yarn UI2 的 Service UI 和 Timeline Service v2

    一个新的 service 分页加入了 Yarn UI2 以最佳地展示所有的 Yarn 服务。服务框架会把数据写到 TimelineService,而 service UI 从 TimelineService 读取数据并渲染网页内容。

    启用 Timeline Service v2

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

    启用新的 Yarn UI

    在 yarn-site.xml 中设置如下参数并启动 ResourceManager。如果你从源码编译 Hadoop,请确保你在 mvn 命令里添加了 -Pyarn-ui 选项,这将为新的 Yarn UI 生成 war 文件。

    <property>
      <description>启用 ResourceManager UI2 网页程序。</description>
      <name>yarn.webapp.ui2.enable</name>
      <value>true</value>
    </property>

    安全地运行

    Yarn 服务框架支持在一个安全环境(Kerbose)运行服务。在启动服务时,用户需要提供 Kerbose 主体名和密钥表。一个典型的配置文件如下:

    {
      "name": "sample-service",
      ...
      ...
      "kerberos_principal" : {
        "principal_name" : "hdfs-demo/_HOST@EXAMPLE.COM",
        "keytab" : "file:///etc/security/keytabs/hdfs.headless.keytab"
      }
    }

    特别注意,_HOST 在 principal_name 字段里是必需的,因为 Hadoop 客户端会验证服务器(此处指 ApplicationMaster)的凭证,其中包含了主机名。principal_name 是启动服务的主体名。keytab 是密钥表的路径,当前只支持裸机上的文件,URI 以 file:// 为前缀。管理员应该在 ApplicationMaster 启动前就预先安装了密钥表到该主机。

    用 Docker 运行

    上述示例主要围绕非基于 Docker 容器的服务。Yarn 服务框架同样为基于 Docker 的服务提供了一流的支持。管理基于 Docker 的服务的大部分步骤和上述是一样的,唯一区别是对于一个组件,Artifact 类型是 DOCKER 且其 id 是 Docker 镜像的名称。要了解如何在 Yarn 上运行 Docker 的细节,请参阅在 Yarn 上运行 Docker

    在 Docker 的支持下,更多的功能可以被提供,比如用 DNS 发现 Yarn 上提供服务的容器。更多细节请参阅服务发现

  • 相关阅读:
    原来实现钉钉自动签到如此简单,每天准时上下班不是梦
    12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(下)
    12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(中)
    12306 抢票系列之只要搞定RAIL_DEVICEID的来源,从此抢票不再掉线(上)
    python 学习笔记之手把手讲解如何使用原生的 urllib 发送网络请求
    发生线上故障后问责是不是第一要务
    软件工程是否可以直接应用于小团队
    阶段性正确的一点记录
    Java7新特性
    从server.xml看Tomcat容器的层次结构
  • 原文地址:https://www.cnblogs.com/shishaochen/p/9657008.html
Copyright © 2011-2022 走看看