快速开始

本文描述了如何用 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 上提供服务的容器。更多细节请参阅服务发现

Hadoop 3.1.1 - Yarn 服务 - 快速开始的更多相关文章

  1. Hadoop 3.1.1 - Yarn 服务 - 总览

    YARN 服务 总览 Yarn 服务框架为在 Yarn 原生环境里长时间运行的服务,提供了一流的支持和接口.简言之,它扮演了容器编排系统的角色,统一管理 Yarn 上运行的容器化服务.它同时支持 Do ...

  2. Hadoop 新 MapReduce 框架 Yarn 详解

    Hadoop 新 MapReduce 框架 Yarn 详解: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/ Ap ...

  3. Hadoop生态圈-大数据生态体系快速入门篇

    Hadoop生态圈-大数据生态体系快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.大数据概念 1>.什么是大数据 大数据(big data):是指无法在一定时间 ...

  4. Hadoop 新 MapReduce 框架 Yarn 详解【转】

    [转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/] 简介: 本文介绍了 Hadoop 自 0.23.0 版本 ...

  5. 【SFA官方翻译】使用 Kubernetes、Spring Boot 2.0 和 Docker 的微服务快速指南

    [SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https ...

  6. zabbix服务快速搭建指南

    zabbix监控服务快速安装指南 1.更换centos7-base源为阿里源  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.ali ...

  7. “云中论道”之——使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(上)

    “云中论道”技术课堂第一课开讲啦!微软各路技术咖们齐聚一堂,为大家带来干货不断!作为“云中论道“课堂的开课之作,我们首先邀请到了微软Azure专家级的架构师:槐长清,他为我们带来了关于“使用开源技术和 ...

  8. spring cloud微服务快速教程之(七) Spring Cloud Alibaba--nacos(一)、服务注册发现

    0.前言 什么是Spring Cloud Alibaba? Spring Cloud Alibaba 是阿里开源的,致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便 ...

  9. 一个轻量级的.Net Core微服务快速开发的轮子

    前言     Adnc是一个轻量级的.Net Core微服务快速开发框架,同时也可以应用于单体架构系统的开发.框架基于JWT认证授权.集成了一系列微服务配套组件,代码简洁.易上手.学习成本低.开箱即用 ...

随机推荐

  1. oscp-缓冲区溢出(持续更新)

    环境准备 Windows7虚拟机(我选了IE8,其实也没什么关系) 微软官方下载地址 These virtual machines expire after 90 days. We recommend ...

  2. Redis短结构

    本章将介绍3种非常有价值的降低Redis内存占用的方法.降低Redis的内存占用有助于减少创建快照和加载快照所需的时间.提升载入AOF文件和重写AOF文件时的效率.缩短从服务器进行同步所需的时间,并且 ...

  3. CentOS-Docker安装Redis(单点)

    下载镜像 $ docker pull redis 创建目录 $ mkdir -p /usr/redis/data 运行镜像 $ docker run --restart=unless-stopped ...

  4. hugegraph 源码解读 —— 索引与查询优化分析

    为什么要有索引 gremlin 其实是一个逐级过滤的运行机制,比如下面的一个简单的gremlin查询语句: g.V().hasLabel("label").has("pr ...

  5. Sublime3 markdown preview 修改输出的html页面默认宽度

    在sublime3 中安装了 Markdown Preview,Ctrl+B生成的HTML页面显示很窄,默认值为width: 45em,很多代码不能完整显示,需要拖动进度条,于是想要调整默认的宽度. ...

  6. Robot Framework中SSHLibrary 学习与总结

    一.安装SSHLibrary 二.关键字 1.与连接相关的 Open Connection Get Connection Get Connections Switch  Connection Clos ...

  7. XCTF easyGo

    拖入ida,发现符号表需要还原一下,载入一个还原符号表的脚本. go这个语言就有点恶心,字符串后面没有反斜杆零,ida识别出来,字符串就会挤在一堆,就很难看,看了某位师傅的wp,觉得这方法不错,就记录 ...

  8. 20道Java实习生笔试面试选择题(内附答案解析)

    ​1.以下对继承的描述错误的是(A) A.Java中的继承允许一个子类继承多个父类 B.父类更具有通用性,子类更具体 C.Java中的继承存在的传递性 D.当实例化子类时会递归调用父类中的构造方法 解 ...

  9. QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置

    引言 24岁的某天,承载着周围人的关心,一路南下.天晴心静,听着斑马,不免对未来有些彷徨.但是呢,人生总要走陌生的路,看陌生的风景,所幸可以听着不变的歌,关心自己的人就那么多.就像是对庸常生活的一次越 ...

  10. 盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优

    原文链接:猛戳这里 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU.内存.硬盘.网络等系统资源长 ...