Azkaban 外部接口的使用与开发

问题导读:
1、如何远程创建一个Azkaban任务项目?
2、如何删除一个任务项目?
3、如何从流中获取job?
4、如何操作取消流的执行?

 

Azkaban 外部接口的使用与开发
此文档可用于Azkaban 任务的https调用,提供了查看任务的状态信息、执行情况、任务的创建、上传、触发、取消、调度等功能接口。可以使开发者在编程过程中直接通过https api的调用,来对任务进行控制,开发者可参考azkaban官网提供的api文档

azkaban官网提供的api文档:https://azkaban.github.io/azkaban/docs/latest/#ajax-api

如下是对于Api简单Demo。

使用Hutool工具,直接进行https调用,pom


    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>5.5.1</version>
     </dependency>

一、认证

获取session.id,在调用接口时,都会进行session.id的认证,获取到的session.id过期时间为24小时。当会话进行退出、机器关机、切换机器、改变浏览器等操作时,session将会失效。若session.id已过期则重新进行获取即可,应为新会话将覆盖老会话。
请求体【请求方式:post】

代码示例:

    String body = HttpRequest.post("https://localhost:8443")
                    .body("action=login&username=azkaban&password=azkaban")
                    .execute()
                    .body();
            System.out.println(body);

{
  "status" : "success",
  "session.id" : "c001aba5-a90f-4daf-8f11-62330d034c0a"
}

二、远程创建一个任务项目

在上传任务zip包时,进行远程创建任务姓名。

代码示例:

    String body = HttpRequest.post("https://localhost:8443/manager?action=create")
                    .body("session.id=9089beb2-576d-47e3-b040-86dbdc7f523e&name=aaaa&description=11")
                    .execute()
                    .body();
            System.out.println(body);

    {
      "status":"success",
      "path":"manager?project=aaaa",
      "action":"redirect"
    }

三、删除一个任务项目

代码示例:

    HttpRequest.get("https://localhost:8443/manager")
                    .body("session.id=bca1d75d-6bae-4163-a5b0-378a7d7b5a91&delete=true&project=test-delete-project")
                    .execute();

四、获取项目中的流

azkaban一个项目中可以创建多个流并且每个流中又含有多个依赖job,在此只能获取流

示例代码:

    String body = HttpRequest.get("https://localhost:8443/manager")
                    .body("session.id=6c96e7d8-4df5-470d-88fe-259392c09eea&ajax=fetchprojectflows&project=azkaban-test-project")
                    .execute()
                    .body();
            System.out.println(body);

{
  "project" : "test-azkaban",
  "projectId" : 192,
  "flows" : [ {
    "flowId" : "test"
  }, {
    "flowId" : "test2"
  } ]
}

五、从流中获取job

azkaban一个项目中可以创建多个流并且每个流中又含有多个依赖job,在此可以获取流以及所有jobs

示例代码:

    String body = HttpRequest.get("https://localhost:8443/manager")
                    .body("session.id=bca1d75d-6bae-4163-a5b0-378a7d7b5a91&ajax=fetchflowgraph&project=texter-1-1&flow=test")
                    .execute()
                    .body();

{
  "project" : "azkaban-test-project",
  "nodes" : [ {
    "id" : "test-final",
    "type" : "command",
    "in" : [ "test-job-3" ]
  }, {
    "id" : "test-job-start",
    "type" : "java"
  }, {
    "id" : "test-job-3",
    "type" : "java",
    "in" : [ "test-job-2" ]
  }, {
    "id" : "test-job-2",
    "type" : "java",
    "in" : [ "test-job-start" ]
  } ],
  "flow" : "test",
  "projectId" : 192
}

六、执行流

此api可对流进行执行,也对流中的单独的job进行触发

代码示例:

    String body = HttpRequest.get("https://localhost:8443/executor")
                    .body("session.id=189b956b-f39f-421e-9a95-e3117e7543c9&ajax=executeFlow&project=azkaban-test-project&flow=test")
                    .execute()
                    .body();
            System.out.println(body);

    {
      message: "Execution submitted successfully with exec id 295",
      project: "foo-demo",
      flow: "test",
      execid: 295
    }

七、取消流的执行

若未运行,则返回错误信息,成功则无返回


    String body = HttpRequest.get("https://localhost:8443/executor")
                    .body("session.id=34ba08fd-5cfa-4b65-94c4-9117aee48dda&ajax=cancelFlow&execid=302")
                    .execute()
                    .body();
            System.out.println(body);

注意:
在开发者进行调用时api调用时,Azkaban管理员创建的project其他角色无法访问。

 

以上是提取了常用的api方法,若需更全的api使用可以查看官网https://azkaban.github.io/azkaban/docs/latest/#ajax-api

 

作者:数据小二
来源:https://blog.csdn.net/Mirror_w/article/details/117225097

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值