Oozie-client的api读取集群workflow信息(kerberos认证)

引用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、开始时间、结束时间等)
在这里插入图片描述

发布了118 篇原创文章 · 获赞 25 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/lhxsir/article/details/95050195