yarn任务提交流程

您所在的位置:网站首页 电视机插u盘怎么播放视频 yarn任务提交流程

yarn任务提交流程

2024-01-27 21:17| 来源: 网络整理| 查看: 265

Yarn任务提交流程

在大规模的分布式计算环境中,为了提高系统的性能和资源利用率,通常需要将任务交给资源管理器进行调度和分配。Yarn是Apache Hadoop生态系统中的一个开源资源管理和任务调度框架,能够高效地管理和调度大规模分布式计算任务。本文将介绍Yarn任务提交流程,并给出相关的代码示例。

Yarn任务提交流程概述

Yarn的任务提交流程主要包括以下几个步骤:

创建一个Yarn客户端,用于与Yarn资源管理器进行通信。 构建一个Yarn任务描述对象,包括任务的类型、资源需求、启动命令等信息。 向Yarn资源管理器提交任务描述,请求资源分配。 Yarn资源管理器根据任务描述和集群资源情况进行资源分配和调度。 Yarn资源管理器将任务的启动命令和分配的资源信息返回给Yarn客户端。 Yarn客户端利用获取到的资源信息,启动任务的执行。

下面将详细介绍每个步骤,并给出相应的代码示例。

步骤一:创建Yarn客户端

在开始任务提交之前,需要先创建一个Yarn客户端实例,用于与Yarn资源管理器进行通信。可以通过YarnConfiguration类来配置和创建Yarn客户端,示例代码如下所示:

import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.yarn.conf.YarnConfiguration; import org.apache.hadoop.yarn.client.api.YarnClient; import org.apache.hadoop.yarn.client.api.YarnClientFactory; // 创建一个Yarn客户端实例 Configuration conf = new YarnConfiguration(); YarnClient yarnClient = YarnClientFactory.createYarnClient(conf); yarnClient.init(conf); yarnClient.start(); 步骤二:构建Yarn任务描述对象

在任务提交之前,需要构建一个Yarn任务描述对象,包括任务的类型、资源需求、启动命令等信息。可以使用ApplicationSubmissionContext类来描述任务并设置相应的属性,示例代码如下所示:

import org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext; import org.apache.hadoop.yarn.api.records.ApplicationId; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.YarnApplicationState; // 构建Yarn任务描述对象 ApplicationSubmissionContext appContext = yarnClient.createApplication().getApplicationSubmissionContext(); // 设置任务的类型 appContext.setApplicationType("MapReduce"); // 设置任务的资源需求 Resource resource = Resource.newInstance(1024, 1); appContext.setResource(resource); // 设置任务的启动命令 appContext.setCommands(Collections.singletonList("hadoop jar wordcount.jar input output")); // 设置任务的所属队列 appContext.setQueue("default"); // 设置任务的优先级 appContext.setPriority(0); // 设置任务的标签 appContext.setNodeLabelExpression("worker"); // 设置任务的名称 appContext.setApplicationName("WordCount"); 步骤三:提交任务描述

在任务描述构建完成之后,可以将任务描述提交给Yarn资源管理器,请求资源分配和调度。可以使用YarnClient的submitApplication方法来提交任务描述,示例代码如下所示:

// 提交任务描述 ApplicationId appId = yarnClient.submitApplication(appContext); // 等待任务完成 while (true) { YarnApplicationState state = yarnClient.getApplicationReport(appId).getYarnApplicationState(); if (state == YarnApplicationState.FINISHED || state == YarnApplicationState.FAILED || state == YarnApplicationState.KILLED) { break; } Thread.sleep(1000); } 步骤四:获取任务资源信息

Yarn资源管理器在进行资源分配和调度之后,会将任务的启动命令和分配的资源信息返回给Yarn客户端。可以通过YarnClient的getApplicationReport方法获取任务的资源信息,示例代码如下所示:

// 获取任务的资源信息 String[] containers = yarnClient.getApplicationReport(appId).getOriginalTrackingUrl().split(":"); // 获取任务的启动命令 String command = yarnClient.getApplicationReport(appId).getDiagnostics(); 步骤五:启动任务执行

Yarn客户端在获取到任务的资源信息之后,可以利用这些



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3