Apache DolphinScheduler DB2 数据源接入指南:参数配置、插件激活与底层实现解析
2026/9/14 16:23:14 网站建设 项目流程

Apache DolphinScheduler DB2 数据源接入指南:参数配置、插件激活与底层实现解析

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

导读

本文围绕 Apache DolphinScheduler 中DB2 数据源的接入与使用展开,完整覆盖数据源创建表单中每一项参数的语义与填写建议,并给出 DB2 数据源插件在 3.3.0 之后二进制发行包中的激活方式(install-plugins.sh+plugins_config)。同时结合仓库内dolphinscheduler-datasource-db2插件的真实源码与单元测试,剖析 JDBC URL 的拼接规则、连接参数模型与校验查询语句,帮助读者从"会填表单"深入到"理解底层连接如何被构建",为实际部署与排障提供依据。

DB2 数据源在 DolphinScheduler 中的定位

DolphinScheduler 采用"数据源插件化"设计:每种数据库对应一个独立的dolphinscheduler-datasource-*模块,通过 SPI(@AutoService)机制注册到数据源 API 层。DB2 数据源的实现位于 dolphinscheduler-datasource-db2,其模块名由 pom.xml 中的<plugin.name>datasource.db2</plugin.name>声明,构建时通过maven-shade-plugin打成独立插件 Jar。

该插件以DbType.DB2作为类型标识(见 Db2DataSourceParamDTO.java),统一交由数据源 API 层调度,因此 DB2 与 MySQL、PostgreSQL 等数据源在 DolphinScheduler 的 SQL 任务、数据源管理界面中的使用方式完全一致。

数据源参数详解

在 DolphinScheduler Web UI 的"数据源中心"中,数据源类型选择DB2后,需要填写以下参数(对应官方文档 db2.md):

参数说明
Datasource数据源类型,选择 DB2。
Datasource Name数据源名称,在项目中唯一标识该数据源。
Description数据源描述,便于团队维护与识别。
IP/Host NameDB2 服务所在的主机 IP 或主机名。
PortDB2 服务监听端口。
Username连接 DB2 的用户名。
Password连接 DB2 的用户密码。
Database Name要连接的 DB2 数据库名称。
jdbc connect parametersDB2 连接的附加参数,以 JSON 格式填写。

界面截图可参考 docs/img/new_ui/dev/datasource/DB2.png。

附加参数(jdbc connect parameters)如何生效

表单中的 JSON 参数对应源码里的other字段(见 Db2ConnectionParam.java)。在构建 JDBC 连接时,Db2DataSourceProcessor.java 的transformOther方法会把 JSON 键值对转换为key=value形式,并用分号;连接,追加到 JDBC URL 末尾。

例如填写:

{"currentSchema":"TESTSCHEMA","sslConnection":"true"}

最终生成的 JDBC URL 为:

jdbc:db2://<host>:<port>/<database>:currentSchema=TESTSCHEMA;sslConnection=true

这一行为由单元测试 Db2DataSourceProcessorTest.java#L80-L89 明确验证:当other中传入{"other":"other"}时,期望的 JDBC URL 为jdbc:db2://localhost:5142/default:other=other

JDBC URL 与连接参数模型(源码级)

DB2 数据源连接的完整参数由Db2ConnectionParam(继承自BaseConnectionParam)承载,包含addressdatabasejdbcUrluserpassworddriverClassNamevalidationQueryother等字段。从 Db2DataSourceProcessor.java#L68-L85 可以看到 URL 的拼接逻辑:

String address = String.format("%s%s:%s", DataSourceConstants.JDBC_DB2, db2Param.getHost(), db2Param.getPort()); String jdbcUrl = String.format("%s/%s", address, db2Param.getDatabase());

对应到常量定义(见 DataSourceConstants.java),即:

JDBC URL = jdbc:db2://<host>:<port>/<database>

驱动类与校验查询

DB2 数据源使用的驱动与校验语句同样定义在DataSourceConstants中:

常量用途
COM_DB2_JDBC_DRIVERcom.ibm.db2.jcc.DB2DriverDB2 JDBC 驱动类名
JDBC_DB2jdbc:db2://JDBC URL 前缀
DB2_VALIDATION_QUERYselect 1 from sysibm.sysdummy1连接池校验查询语句

其中select 1 from sysibm.sysdummy1是 DB2 官方推荐的连接有效性探测语句,在 Db2DataSourceProcessor.java#L129-L132 中通过getValidationQuery()返回,由 Db2DataSourceProcessorTest.java#L96-L99 断言验证。

SQL 解析支持

Db2DataSourceProcessor重写了splitAndRemoveComment方法(见 Db2DataSourceProcessor.java#L134-L138),借助 Alibaba Druid 的 SQL 解析器按 DB2 方言对 SQL 进行注释剔除与语句切分,保证多语句 SQL 任务在 DB2 上可以正确执行。

连接通道与密码处理

连接的真实建立由DB2DataSourceChannel完成(见 DB2DataSourceChannel.java),它按场景提供两种客户端:

  • createAdHocDataSourceClient:临时(即席)连接客户端,适用于一次性 SQL 执行;
  • createPooledDataSourceClient:池化连接客户端,适用于频繁复用的数据源场景。

该通道由DB2DataSourceChannelFactory(DB2DataSourceChannelFactory.java)通过@AutoService(DataSourceChannelFactory.class)注册,并以DbType.DB2的名称对外暴露。

在 Db2DataSourceProcessor.java#L107-L117 的getConnection方法中可以看到:密码存储时经PasswordUtils.encodePassword加密(L79),使用时再通过PasswordUtils.decodePassword解密,随后交给JdbcDriverConnectionProvider完成真正的连接建立。

激活 DB2 数据源插件(Native Supported 说明)

官方文档明确标注 DB2 数据源Native Supported: No,即二进制发行包默认不内置 DB2 连接所需的驱动与插件依赖,需要手动激活。激活方式在 pseudo-cluster.md 的Download Plugins Dependencies一节中有详细说明。

背景:3.3.0 起插件依赖独立下载

从 DolphinScheduler 3.3.0 开始,二进制包不再附带插件依赖,需要用户自行下载。官方提供一键安装脚本:

bash ./bin/install-plugins.sh 3.3.0

该脚本会根据 config/plugins_config 中的插件清单,从 Maven 中央仓库拉取对应版本的插件依赖包。

按需裁剪插件清单

通常不需要安装全部连接器插件,可以通过修改conf/plugins_config只保留所需插件。以仅保留 DB2 数据源插件为例,plugins_config--datasource-plugins--段只需保留:

--datasource-plugins-- dolphinscheduler-datasource-db2 --end--

仓库根目录的 config/plugins_config 展示了完整的--datasource-plugins--段,其中默认已包含dolphinscheduler-datasource-db2条目(第 44 行),其他数据源插件可按需取舍。

排障提示

Note:插件依赖包通常不包含在二进制包中。如果启动服务时遇到ClassNotFoundException异常,请检查对应插件类型的依赖包是否缺失。对于 DB2 数据源,典型缺失项即 IBM DB2 JDBC 驱动com.ibm.db2.jcc.DB2Driver(对应db2jcc系列驱动 Jar),需确保其已被install-plugins.sh正确安装。

在任务中使用 DB2 数据源

激活插件并在"数据源中心"创建 DB2 数据源后,即可在 SQL 任务(dolphinscheduler-task-sql)中选择该数据源编写 SQL。由于数据源 API 层对插件做了统一抽象,DB2 与项目内其他数据源(MySQL、PostgreSQL、Oracle 等,参见 dolphinscheduler-datasource-all)的使用方式完全一致,SQL 解析、连接复用、密码加解密等能力开箱即用。

总结

  • 创建数据源:在数据源中心选择 DB2,填写主机、端口、用户名、密码、数据库名,附加参数以 JSON 形式追加到 JDBC URL(以;分隔键值对);
  • 激活插件:DB2 数据源非 Native 支持,3.3.0 起需在 config/plugins_config 中保留dolphinscheduler-datasource-db2,并执行bash ./bin/install-plugins.sh <版本号>安装依赖;
  • 底层机制:JDBC URL 由jdbc:db2://host:port/database拼装,驱动为com.ibm.db2.jcc.DB2Driver,校验语句为select 1 from sysibm.sysdummy1,密码加密存储、解密使用,具体实现可参见 Db2DataSourceProcessor.java 及配套单元测试。

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询