Apache DolphinScheduler Doris 数据源接入指南:参数详解、驱动安装与 MySQL 兼容连接原理
Apache DolphinScheduler Doris 数据源接入指南参数详解、驱动安装与 MySQL 兼容连接原理【免费下载链接】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 中Doris 数据源的创建与使用展开完整覆盖 Web UI 中每一个配置参数的含义与注意事项、驱动与插件的安装激活方式并结合仓库内dolphinscheduler-datasource-doris插件源码解析其背后的 JDBC URL 生成、多 FE 负载均衡、密码加密与 SQL 预处理原理。读完本文你将能够在 DolphinScheduler 中正确创建 Doris 数据源理解为什么它依赖 MySQL 驱动并能在遇到连接问题时快速定位排查方向。Doris 数据源在 DolphinScheduler 中的定位Apache DolphinScheduler 通过「数据源中心」统一管理各类数据库连接供 SQL 任务、数据同步等场景复用。Doris 作为 Apache 基金会孵化的现代化 MPP 分析型数据库其 FE 节点对外提供兼容 MySQL 协议的接口因此 DolphinScheduler 将 Doris 作为一种独立的数据源类型内置其插件模块位于仓库的 dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-doris 目录下。需要特别注意的是该数据源并非原生内置驱动。官方文档在 doris.md 的 Native Supported 一节中明确指出Doris 数据源默认不被原生支持必须额外下载 JDBC 驱动依赖并激活后才可使用详见下文「驱动安装与激活」。驱动安装与激活Native Supported为什么 Doris 需要手动安装驱动Doris 数据源通过 MySQL Connector/J 与 FE 节点通信。从 DolphinScheduler 3.3.0 版本开始二进制发行包不再内置任何插件依赖需要用户根据实际使用的数据源自行下载对应驱动。若直接创建 Doris 数据源启动服务或执行任务时可能抛出ClassNotFoundException提示缺少com.mysql.cj.jdbc.Driver。驱动文件官方文档指定的驱动为 mysql-connector-j-8.0.33 声明了com.mysql:mysql-connector-j依赖。使用 install-plugins.sh 一键安装仓库提供了插件依赖安装脚本 script/install-plugins.sh并附带插件清单配置文件 config/plugins_config。官方伪集群部署文档 pseudo-cluster.md 中的 Download Plugins Dependencies 一节给出了标准做法bash ./bin/install-plugins.sh 3.3.0通常你不需要安装全部连接器插件可以在conf/plugins_config中按需指定。例如只保留 shell 任务插件--task-plugins-- dolphinscheduler-task-shell --end--提示插件依赖包通常不包含在二进制发行包内。如果启动服务时遇到ClassNotFoundException请参照对应插件类型的文档确认是否缺少依赖包例如dolphinscheduler-datasource-mysql默认不携带mysql-connector-java.jar。安装并重启相关服务后Doris 数据源即被激活可在数据源中心选择使用。数据源参数详解在 DolphinScheduler Web UI 的「数据源中心」点击创建数据源选择类型为DORIS将看到以下配置项。下表完整列出官方文档 doris.md 中的参数定义DatasourceDescriptionDatasource数据源类型选择 DORIS。Datasource name数据源名称输入便于识别的名称。Description数据源描述信息说明用途或所属业务。IP/Host NameDoris 服务 IP。若存在多个 IP如多个 FE 节点请使用英文逗号,分隔。PortDoris 服务端口默认通常为 FE 的查询端口如 9030。Username连接 Doris 的用户名。Password连接 Doris 的密码。Database name连接使用的 Doris 数据库名称。Jdbc connection parametersDoris 连接的 JDBC 参数设置以 JSON 格式填写。各参数实战说明IP/Host Name 支持多地址字段可填写多个 IP以英文逗号分隔。例如10.0.0.1,10.0.0.2,10.0.0.3对应 Doris 多 FE 场景。源码中DorisDataSourceProcessor.createConnectionParams会将逗号分隔的主机列表逐项拼接端口后组合为jdbc:mysql:loadbalance://host1:port,host2:port/...格式的 JDBC 地址见下文原理分析。Port需要与 Doris FE 对外提供的 MySQL 协议查询端口一致通常为9030。Jdbc connection parameters以 JSON 键值对形式传递额外连接参数例如{serverTimezone:utc}。该字段会被转换为 JDBC URL 的 query 部分keyvaluekeyvalue用于控制时区、字符集、SSL 等行为。源码级原理Doris 数据源是如何工作的在 UI 上完成上述配置后后台实际由dolphinscheduler-datasource-doris插件完成参数装配与连接管理。其核心链路如下对应实现文件 DorisDataSourceProcessor.java。1. 参数 DTO 与连接参数模型DorisDataSourceParamDTO.java 继承BaseDataSourceParamDTO是 UI 表单提交到后端的载体包含 name、note、host、port、database、userName、password、other即 Jdbc connection parameters等字段并声明DbType.DORIS类型。DorisConnectionParam.java 继承BaseConnectionParam是最终持久化与执行期使用的连接模型包含 user、password、address、database、jdbcUrl、driverLocation、driverClassName、validationQuery、other 等字段。2. JDBC URL 生成与多 IP 负载均衡createConnectionParams方法展示了核心的 URL 组装逻辑String[] hosts datasourceParam.getHost().split(Constants.COMMA); for (int i 0; i hosts.length; i) { hosts[i] String.format(Constants.FORMAT_S_S_COLON, hosts[i], mysqlDatasourceParam.getPort()); } String address String.format(%s%s, DataSourceConstants.JDBC_MYSQL_LOADBALANCE, String.join(,, hosts)); String jdbcUrl String.format(Constants.FORMAT_S_S, address, mysqlDatasourceParam.getDatabase());其中JDBC_MYSQL_LOADBALANCE的常量值在 DataSourceConstants.java 中定义为jdbc:mysql:loadbalance://。也就是说当你填写多个 IP 时生成的 JDBC URL 形如jdbc:mysql:loadbalance://host1:9030,host2:9030,host3:9030/default_dbloadbalance协议由 MySQL Connector/J 提供能够在多个地址之间进行连接负载均衡与故障切换——这正是多 FE 场景下保证高可用的关键机制。单 IP 场景同样适用对应测试用例可参考 DorisDataSourceProcessorTest.java其中分别断言了单机与双主机场景下生成的address与jdbcUrl。3. 驱动类名与连接校验驱动类getDatasourceDriver()返回DataSourceConstants.COM_MYSQL_CJ_JDBC_DRIVER即com.mysql.cj.jdbc.DriverMySQL Connector/J 8.x 的驱动类佐证了 Doris 通过 MySQL 协议接入的事实。校验查询getValidationQuery()返回MYSQL_VALIDATION_QUERY即select 1用于连接池的健康检查确保持续可用。密码安全PasswordUtils.encodePassword(...)在持久化前对密码进行加密存储取连接时再通过PasswordUtils.decodePassword(...)解密后使用避免明文落库。4. 额外 JDBC 参数拼接getJdbcUrl与transformOther方法会把表单中 JSON 格式的 Jdbc connection parameters 转换为kvkv形式追加到 URL 末尾if (MapUtils.isNotEmpty(mysqlConnectionParam.getOther())) { return String.format(%s?%s, jdbcUrl, transformOther(mysqlConnectionParam.getOther())); }因此若在 UI 中填写{serverTimezone:utc,useSSL:false}最终连接串将变为jdbc:mysql:loadbalance://.../db?serverTimezoneutcuseSSLfalse。5. 连接客户端与插件注册DorisDataSourceChannel.java 根据场景创建两类客户端DorisAdHocDataSourceClient一次性连接与DorisPooledDataSourceClient池化连接分别继承 BaseAdHocDataSourceClient 与BasePooledDataSourceClient。DorisDataSourceChannelFactory.java 通过AutoService(DataSourceChannelFactory.class)将插件注册进 SPI 机制DolphinScheduler 运行时按DbType.DORIS自动加载该工厂。6. SQL 预处理复用 MySQL 方言由于 Doris 与 MySQL 语法高度兼容splitAndRemoveComment方法直接复用 Druid 的 MySQL 方言实现注释剔除与语句拆分String cleanSQL SQLParserUtils.removeComment(sql, com.alibaba.druid.DbType.mysql); return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.mysql);对应测试 DorisDataSourceProcessorTest.java 验证了含--行注释、/* */块注释的多语句脚本如 Doris 特有的set enable_unique_key_partial_update true;前置语句能被正确拆分与清理这保证了 SQL 任务中多语句脚本的执行正确性。常见问题与排查建议创建数据源时提示找不到驱动 /ClassNotFoundException确认已下载mysql-connector-j-8.0.33.jar并放入正确目录且通过bin/install-plugins.sh或conf/plugins_config激活了 Doris 数据源插件随后重启 API Server 与 Worker 相关进程。多个 FE 地址无法连接检查 IP 之间是否使用英文逗号,分隔且各 FE 的查询端口一致。生成的实际 JDBC URL 可通过日志中数据源连接信息核对应为jdbc:mysql:loadbalance://...前缀。时区/字符集导致的连接异常在「Jdbc connection parameters」中以 JSON 补充参数如{serverTimezone:Asia/Shanghai,characterEncoding:utf8}这些参数会按前述规则追加到连接串。SQL 执行报错Doris 兼容 MySQL 语法但部分高级特性如某些优化器 Hint、存储过程不受支持。可在数据源中心的「测试连接」功能先行验证再于 SQL 任务中执行。总结在 DolphinScheduler 中使用 Doris 数据源的完整路径可概括为三步下载 MySQL Connector/J 驱动并激活 Doris 插件 → 在数据源中心按参数表正确填写连接信息多 FE 用逗号分隔→ 在 SQL 任务中引用该数据源。其底层实现完全复用 MySQL 协议生态——com.mysql.cj.jdbc.Driver建立物理连接、jdbc:mysql:loadbalance://实现多节点负载均衡、Druid MySQL 方言负责 SQL 预处理理解这些实现细节将帮助你在多 FE 集群与复杂 SQL 场景下更从容地运维与排障。【免费下载链接】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),仅供参考