引用maven
<dependency>
<groupId>org.apache.oozie</groupId>
<artifactId>oozie-client</artifactId>
<version>4.1.0</version>
</dependency>
配置文件需要三个,头两个就不做介绍了
新建oozie-login.conf
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
useKeyTab=true
debug=true
keyTab="D:/work_idea/SparkMLProject/src/main/resources/asmp.keytab"
principal="asmp";
};
由于是本地测试运行,所以keyTab路径是本地路径。
具体代码如下:
package com.egridcloud.test;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.oozie.client.*;
import java.util.List;
/**
* Created by Administrator on 2019/6/21 0021.
* 使用Oozie-client的API接口向Kerberos集群查看status
*/
public class OozieTest {
private static String oozieURL = "http://hadoop01:11000//oozie";
public static void main(String[] args) {
//Kerberos验证
authKrb5();
//创建OozieClient
AuthOozieClient wc = new AuthOozieClient(oozieURL, AuthOozieClient.AuthType.KERBEROS.name());
// wc.setDebugMode(1);
try {
//根据workflow名称筛选所有执行的jobid
List<WorkflowJob> workflowJobs = wc.getJobsInfo("user=asmp;name=asmp_test;status=SUCCEEDED");
//根据jobid获取所有action执行情况
// List<WorkflowAction> workflowActions = wc.getJobInfo("0000008-190506132441055-oozie-oozi-W").getActions();
for(WorkflowJob workflowJob : workflowJobs){
System.out.println("Id=="+workflowJob.getId());
System.out.println("StartTime=="+workflowJob.getStartTime());
System.out.println("EndTime=="+workflowJob.getEndTime());
}
} catch (OozieClientException e) {
e.printStackTrace();
}
}
public static void authKrb5() {
String classes = "D:/work_idea/SparkMLProject/src/main/resources/";
// 设置jvm启动时krb5的读取路径参数
System.setProperty("java.security.krb5.conf", classes + "krb5.conf");
System.setProperty("java.security.auth.login.config", classes + "oozie-login.conf");
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
System.setProperty("ssun.security.jgss.debug", "true"); //Kerberos Debug模式
// System.setProperty("user.name", "asmp");
}
}
运行结果(成功获得workflow的Id、开始时间、结束时间等)