Azkaban适配gaussdb任务心得

举报
liuzhiquan 发表于 2024/12/03 11:07:25 2024/12/03
【摘要】 Azkaban 是一个开源的基于 Web 的工作流调度系统,由 LinkedIn 公司开发并维护。它可以帮助用户在大规模数据处理中来管理和调度作业,提供了简单易用、高效可靠的工作流设计和调度功能。

背景介绍

开源for Huawei(参考:https://developer.huaweicloud.com/programs/opensource/contributing/)  通过和公司、高校、社区的开发者合作,完成鲲鹏、昇腾、欧拉、鸿蒙、高斯、云服务等与开源软件的适配开发,帮助繁荣Huawei的基础生态,同时让开源软件能够更加简单、高效的运行于华为云上。

开始之前,开发者可以下载 开源for Huawei Wiki(参考:https://gitcode.com/HuaweiCloudDeveloper/OpenSourceForHuaweiWiki/overview 了解详细的开发步骤,技术准备,以及开发过程需要的各种资源。

适配思路

  1. azkaban作为一个强大的任务调度平台,本身支持MySQL、H2存储任务信息,本次功能开发 将gaussdb作为azkaban存储任务信息的数据库;

     2. 采用java设计模式中策略模式 根据配置文件中传入的database.type 去选择不同的数据源 从而将mysql、h2、gaussdb 三种数据库 方便用户更好的选择 。

     3. 本次适配使用华为云官网 下载JDBC或ODBC驱动_数据仓库服务 GaussDB(DWS)_华为云 gsjdbc4.jar 驱动 与PostgreSQL保持兼容,其中类名、类结构与PostgreSQL驱动完全一致

适配准备

准备一台弹性云服务器ECS,用于鲲鹏EulerOS环境适配GaussDB测试 以及用于测试使用的Gaussdb实例。

2.1 ECS配置

鲲鹏:

产品名称

CPU架构

实例类型

公共镜像

镜像版本

弹性云服务器

鲲鹏计算

鲲鹏通用计算增强型

Huawei Cloud EulerOS

Huawei Cloud EulerOS 2.0标准版 64 ARM(10GiB)

GaussDB:

产品名称

产品类型

数据库引擎版本

内核引擎版本

实例类型

部署形态

云数据库GaussDB

基础版

V2.0-8.*

505.1.*

集中式

12

3 Demo开发

  1. 环境中安装gradle5.0版本和node8.10版本 jdk的配置和正常使用

  2. demo中使用多任务编排进行任务运行 以及任务执行流程记录到gaussdb中
  3. 确保任务正常执行 任务信息记录gaussdb正常
  4. 本次适配 采用本地打包 将tar包从本地上传到服务器  运行方式去部署项目

4 适配过程中的问题

    • 本地打包的时候 遇到az卡板和本地版本不兼容问题

             解决方法:查看gradle/wrapper/gradle-wrapper.properties 中 distributionUrl 与本地保持一致 或者再idea上面选择本地的gradle

    • azkaban打包涉及前端node  打包时发现 并没有采用本地已安装的node8.10.0 而是程序自己下载 而且经常超时失败

             解决方法:在azkaban-web-server 中的build.gradle 文件中 node选项 download 改为false

    • azkaban启动 先启动Executor 再启动web程序 发现启动web程序之后报错 找不到执行器
      ERROR [ExecutorManager] [Azkaban] Rolling back executor assignment for execution

             通过翻看 Azkaban Executor Server 源码,发现 Executor 提供了 rest 接口,来手动激活 Executor. 不自动激活 Executor 官方解释如下

    We don't update prior to web-server start.
    
    Let me introduce how we do a regular Executor deployment. Both old webserver and old executor(3.a) are up initially, and old executor is running jobs (we can not interrupt it). Executor Deployment starts:
    
    install new Executor (3.b) on our box without activating.
    Run job tests, which targets 3.b and make sure 3.b is working.
    Activate 3.b, and deactivate 3.a. Even though 3.a is deactivated, jobs still keep runnig there.
    Deployment completes.
    We would better run tests against new executor before activating it. Is it a bit clear now?

          解决方法:数据表中 exectors表中的信息 并且再服务器执行 curl http://${executorHost}:${executorPort}/executor?action=activate 就可以正常使用了 localhost为服务器ip


    【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    评论(0

    0/1000
    抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。