按关键词阅读:
导读:当我们搭建好远程Yarn集群环境之后想要对YARN集群进行一些操作时 , Yarn官方给出了如:web board界面、YARN Commands、Java API、REST API等多种方式 。 在实际开发中如果想要在Windows本地idea中写代码后进行调试对远程YARN集群进行操作 , 则需要进行一些环境的配置 。 接下来本文将讨论如何在windows本地使用Java API的方式对远程Yarn进行监控 。
搭建本地hadoop环境1、下载所需hadoop版本(本例以hadoop-2.7.7 为例子)
文章插图
2、需下载winutils.exe 和 hadoop.dll
//注:只适用于 2.7.X版本的Hadoop , 其他Hadoop版本需自行下载对应版本链接: 提取码:m36r
3、把hadoop.dll和winutils.exe复制到解压后的hadoop文件夹的bin目录下
文章插图
4、配置环境变量
//新增系统变量HADOOP_HOME=D:\hadoop-2.7.3//编辑CLASSPATH , 主要以追加的形式CLASSPATH=%HADOOP_HOME%\bin\winutils.exe;//编辑PATH , 主要以追加的形式Path=%HADOOP_HOME%\bin
在项目的pom文件中引入依赖
将远程yarn集群的yarn-site.xml文件添加到项目resource目录下文章插图
编写监控程序这里举一个简单的例子 , 实现轮询判断任务名为“Flink per-job cluster”的Job是否在yarn中运行 , 且状态为RUNNING:
import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.yarn.api.records.ApplicationId;import org.apache.hadoop.yarn.api.records.ApplicationReport;import org.apache.hadoop.yarn.api.records.YarnApplicationState;import org.apache.hadoop.yarn.client.api.YarnClient;import org.apache.hadoop.yarn.conf.YarnConfiguration;import org.apache.hadoop.yarn.exceptions.YarnException;import java.io.IOException;import java.util.ArrayList;import java.util.EnumSet;import java.util.List;import java.util.concurrent.TimeUnit;public class YarnMonitor {/*** 判断任务名为appName的任务 , 是否在yarn中运行 , 状态为RUNNING* @return boolean* @param appName* @return*/public static boolean yarnIsContains(String appName) {Configuration conf = new YarnConfiguration();YarnClient yarnClient = YarnClient.createYarnClient();yarnClient.init(conf);yarnClient.start();boolean isContains = false;List applications = new ArrayList();try {applications = yarnClient.getApplications(EnumSet.of(YarnApplicationState.RUNNING));for(ApplicationReport application:applications) {String name = application.getName();if(name.equals(appName)) {System.out.println("ApplicationId ============> "+application.getApplicationId());System.out.println("name ============> "+application.getName());System.out.println("queue ============> "+application.getQueue());System.out.println("queue ============> "+application.getUser());System.out.println(applications);isContains = true;}}} catch (YarnException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {yarnClient.stop();}return isContains;}public static void main(String[] args) throws Exception {while(true) {TimeUnit.SECONDS.sleep(3);boolean yarnIsContains = yarnIsContains("Flink per-job cluster");System.out.println(yarnIsContains);}}}
1、先启动任务后查看yarn的web board , 任务名为“Flink per-job cluster”的Job状态为Running , 正在运行 。
文章插图
2、执行程序 , 并查看到控制台输出结果为true
文章插图
总结
- 搭建本地hadoop环境 , 包括对应版本的hadoop.dll和winutils.exe
- 项目中引入hadoop-client所需依赖
- 将远程yarn-site.xml文件添加到resource目录下
稿源:(未知)
【傻大方】网址:http://www.shadafang.com/c/111J3103H020.html
标题:windows本地通过Java API方式监控远程Yarn