Yarn 3.1.1 - Yarn 服务 - 快速开始

快速开始

本文描述了如何用 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 的服务 UI 和 Timeline Service v2

A new service tab is added in the YARN UI2 specially to show YARN Services in a first class manner. The services framework posts the data into TimelineService and the service UI reads data from TimelineService to render its content.

Enable Timeline Service v2

Please refer to TimeLineService v2 doc for how to enable Timeline Service v2.

Enable new YARN UI

Set below config in yarn-site.xml and start ResourceManager. If you are building from source code, make sure you use -Pyarn-ui in the mvn command - this will generate the war file for the new YARN UI.

  <property>
    <description>To enable RM web ui2 application.</description>
    <name>yarn.webapp.ui2.enable</name>
    <value>true</value>
  </property>

安全地运行

YARN service framework supports running in a secure (kerberized) environment. User needs to specify the kerberos principal name and keytab when they launch the service. E.g. A typical configuration looks like below:

{
  "name": "sample-service",
  ...
  ...
  "kerberos_principal" : {
    "principal_name" : "hdfs-demo/[email protected]",
    "keytab" : "file:///etc/security/keytabs/hdfs.headless.keytab"
  }
}

Note that _HOST is required in the principal_name field because Hadoop client validates that the server’s (in this case, the AM’s) principal has hostname present when communicating to the server. * principal_name : the principal name of the user who launches the service * keytab : URI of the keytab. Currently supports only files present on the bare host. * URI starts with file:// - A path on the local host where the keytab is stored. It is assumed that admin pre-installs the keytabs on the local host before AM launches.

用 Docker 运行

The above example is only for a non-docker container based service. YARN Service Framework also provides first-class support for managing docker based services. Most of the steps for managing docker based services are the same except that in docker the Artifact type for a component is DOCKER and the Artifact id is the name of the docker image. For details in how to setup docker on YARN, please check Docker on YARN.

With docker support, it also opens up a set of new possibilities to implement features such as discovering service containers on YARN with DNS. Check ServiceDiscovery for more details.

原文地址:https://www.cnblogs.com/shishaochen/p/9657008.html

时间: 2024-10-10 22:47:12

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

Yarn 3.1.1 - Yarn 服务 - 总览

YARN 服务 总览 Yarn 服务框架为在 Yarn 原生环境里长时间运行的服务,提供了一流的支持和接口.简言之,它扮演了容器编排系统的角色,统一管理 Yarn 上运行的容器化服务.它同时支持 Docker 容器和传统基于进程的 Yarn 容器. 本框架的职责包括配置实现和挂载,生命周期管理,如在 Yarn 上启动/停止/删除服务,服务组件的启停/伸缩,服务的滚动升级. Yarn 服务框架主要包括以下组件: 一个运行在 Yarn 上的核心框架(ApplicationMaster),担任容器编排

nodejs Yarn替代npm的包管理——快速、安全、可靠性高的依赖管理

Yarn能帮你解决的五件事 转自: http://www.qingpingshan.com/jb/javascript/185590.html 长话短说(TL;DR):在 JavaScript 领域有多个包管理器,举几个来说: npm , bower , component 和 volo . 截至写本文,最流行的 JavaScript 包管理器是 npm.npm 客户端可以访问 npm 源里成千上万的代码库.只是最近,Facebook 推出了新的 JavaScript 包管理器 Yarn , 号

cdh之调整YARN(调优yarn 生产必做优化项)004

2019/3/26 星期二调整YARN本主题仅适用于YARN群集,并介绍如何为群集调整和优化YARN.注意:下载Cloudera YARN调整电子表格以帮助计算YARN配置. 有关简短视频概述,请参阅调整YARN应用程序.概观此概述提供YARN群集的抽象描述和YARN调整的目标. YARN群集由主机组成. 主机提供内存和CPU资源. vcore或虚拟核心是主机CPU的使用份额. 调整YARN主要包括在工作主机上最佳地定义容器. 您可以将容器视为由内存和vcores组成的矩形图. 容器执行任务.

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

"云中论道"技术课堂第一课开讲啦!微软各路技术咖们齐聚一堂,为大家带来干货不断!作为"云中论道"课堂的开课之作,我们首先邀请到了微软Azure专家级的架构师:槐长清,他为我们带来了关于"使用开源技术和Azure公有云服务快速搭建云端IoT解决方案"的精心讲解. 本文作者介绍: 微软Azure专家级架构师,江湖人称"槐长清",曾连续5年被评为微软最有价值专家,多年云计算从业经验,对微软公有云解决方案有深入研究. 涉及产品及技术:

&lt;YARN&gt;&lt;MRv2&gt;&lt;Spark on YARN&gt;

MRv1 VS MRv2 MRv1: - JobTracker: 资源管理 & 作业控制- 每个作业由一个JobInProgress控制,每个任务由一个TaskInProgress控制.由于每个任务可能有多个运行实例,因此,TaskInProgress实际管理了多个运行实例TaskAttempt,每个运行实例可能运行了一个MapTask或ReduceTask.每个Map/Reduce Task会通过RPC协议将状态汇报给TaskTracker,再由TaskTracker进一步汇报给JobTrac

Yarn Scheduler Load Simulator YARN调度负载模拟器

项目起源是因为有人希望有个模拟环境来模拟公平调度器和容量调度器,以便合理配置调度器,降低生产环境出问题的风险,详见https://issues.apache.org/jira/browse/YARN-1021.之后在hadoop2.3.0就增加了这个工具. 首先设定环境变量: export HADOOP_HOME=/usr/hadoop-2.3.0 export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop #此目录放置sls-runner.xml文件 sls-ru

阿里云短视频服务快速使用

web端阿里云短视频服务快速使用 服务器端:node.js 客户端:js 本文只是一个快速使用的说明文档,鉴于某些用户可能没有时间全部看完阿里云文档,希望快速入手,本文是一个不错的选择 源word文档:https://pan.baidu.com/s/1dFTVuQP 1:注册阿里云用户 2:找到对象存储,点击立即开通 https://www.aliyun.com/product/oss?spm=5176.8142029.388261.265.3836dbccSGnZgw 3:新建bucket(相

如何借助配置中心ACM加速企业IT服务快速迭代

摘要: 在5月29日召开的第二届研发效能嘉年华中,云效邀请了阿里云产品团队的伏羿和来自阿里巴巴中间件技术部的彦林带来了"如何借助配置中心ACM加速企业IT服务快速迭代"的主题分享. 分别对配置中心ACM和ACM技术进行了讲解,并且对ACM的主要应用场景进行了介绍,并进行了Demo环节. 在5月29日召开的第二届研发效能嘉年华中,云效邀请了阿里云产品团队的伏羿和来自阿里巴巴中间件技术部的彦林带来了"如何借助配置中心ACM加速企业IT服务快速迭代"的主题分享. 分别对配

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

[SFA官方翻译]使用 Kubernetes.Spring Boot 2.0 和 Docker 的微服务快速指南 原创: Darren Luo SpringForAll社区 今天 原文链接:https://dzone.com/articles/quick-guide-to-microservices-with-kubernetes-sprin 作者:Piotr Mińkowski 译者:Darren Luo 在本教程中你将学习如何使用 Kubernetes 和 Docker 快速启动并运行 Sp

将spark依赖包传入HDFS_spark.yarn.jar和spark.yarn.archive的使用

一.参数说明 启动Spark任务时,在没有配置spark.yarn.archive或者spark.yarn.jars时, 会看到不停地上传jar,非常耗时:使用spark.yarn.archive可以大大地减少任务的启动时间,整个处理过程如下. 二.spark.yarn.archive使用 1.在本地创建zip文件 [email protected]:~/env/spark$ cd jars/ [email protected]:~/env/spark$ zip spark2.0.0.zip .