news 2026/9/15 12:38:01

Apache DolphinScheduler StarRocks 数据源接入指南:参数配置、连接原理与插件部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache DolphinScheduler StarRocks 数据源接入指南:参数配置、连接原理与插件部署

Apache DolphinScheduler StarRocks 数据源接入指南:参数配置、连接原理与插件部署

【免费下载链接】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 通过可插拔的数据源插件体系接入 StarRocks,将其作为工作流中 SQL 任务、数据同步任务的数据来源。本指南以官方数据源文档为主体,结合仓库中dolphinscheduler-datasource-starrocks插件源码与部署脚本,完整讲解 StarRocks 数据源的表单参数含义、底层 JDBC 连接原理、驱动依赖安装方式,帮助你在 DolphinScheduler 中正确创建、验证并使用 StarRocks 数据源。

StarRocks 数据源概览

StarRocks 是一款兼容 MySQL 协议的 OLAP 分析型数据库,因此 DolphinScheduler 中的 StarRocks 数据源插件在设计上复用了 MySQL 生态的连接方式:底层驱动为com.mysql.cj.jdbc.Driver,JDBC URL 前缀为jdbc:mysql://,连接校验查询为select 1。这一点可以从插件源码中得到直接印证:

  • 驱动类名:DataSourceConstants.COM_MYSQL_CJ_JDBC_DRIVER(值为com.mysql.cj.jdbc.Driver
  • JDBC 前缀:DataSourceConstants.JDBC_MYSQL(值为jdbc:mysql://
  • 校验查询:DataSourceConstants.MYSQL_VALIDATION_QUERY(值为select 1

以上常量均定义于 DataSourceConstants.java,并在 StarRocksDataSourceProcessor.java 中被引用。这意味着凡是依赖 MySQL 连接器的任务类型(如 SQL 查询类任务)均可在配置了 StarRocks 数据源后正常工作。

Datasource Parameters:表单参数详解

在 DolphinScheduler 的「数据源中心」页面选择StarRocks后,需要填写如下参数:

参数项说明
Datasource(数据源类型)选择 StarRocks
Datasource name(数据源名称)为数据源命名,便于在工作流中识别引用
Description(描述)可选,填写数据源的用途说明
IP/Host Name(主机名/IP)StarRocks 服务的 IP 地址或主机名
Port(端口)StarRocks 服务端口,即 FE 的 query_port(默认 9030)
Username(用户名)连接 StarRocks 使用的用户名
Password(密码)连接 StarRocks 使用的密码
Database name(数据库名)要连接的 StarRocks 数据库名
Jdbc connection parameters(JDBC 连接参数)StarRocks 连接的参数设置,以 JSON 格式填写

参数背后的连接串生成逻辑

从前端表单提交的参数会进入 StarRocksDataSourceParamDTO.java 描述的数据结构,随后由StarRocksDataSourceProcessor.createConnectionParams(BaseDataSourceParamDTO)将其组装为连接参数:

address = jdbc:mysql://{host}:{port} jdbcUrl = jdbc:mysql://{host}:{port}/{database}

其中database会作为 JDBC URL 的默认库名,后续通过该数据源执行的 SQL 若未显式指定库名,即以该库为默认上下文。若在表单中同时填写了多个主机(以逗号分隔),createDatasourceParamDTO(String)方法会取第一个地址中的 host 与 port 回填到 DTO 中,用于界面回显。

密码不会以明文落入配置:createConnectionParams中通过PasswordUtils.encodePassword(...)对密码进行加密存储(见 StarRocksDataSourceProcessor.java),实际建立连接时再通过PasswordUtils.decodePassword(...)解密,避免敏感信息直接暴露在数据库中。

Jdbc connection parameters(JSON 格式)的使用方法

「Jdbc connection parameters」接收 JSON 格式的键值对,用于追加到 JDBC URL 的查询参数中,例如:

{ "useUnicode": "true", "characterEncoding": "UTF-8", "connectTimeout": "10000", "socketTimeout": "60000" }

这些参数会被拼接到 JDBC URL 之后,最终生成的连接串形如:

jdbc:mysql://{host}:{port}/{database}?useUnicode=true&characterEncoding=UTF-8&...&allowLoadLocalInfile=false&autoDeserialize=false&allowLocalInfile=false&allowUrlInLocalInfile=false

需要特别说明的是,插件在拼接连接参数时会自动强制追加四条安全参数,用于抵御恶意 JDBC 连接串攻击(相关常量与拼接逻辑见 StarRocksDataSourceProcessor.java 与getJdbcUrl方法):

  • allowLoadLocalInfile=false:禁止从本地文件读取数据
  • autoDeserialize=false:禁止自动反序列化对象
  • allowLocalInfile=false:禁止本地文件导入
  • allowUrlInLocalInfile=false:禁止通过 URL 触发本地文件读取

同时,transformOther方法会过滤掉表单中与上述四条安全参数同名或包含这些关键词的键,从源头防止用户覆盖默认的安全设置(见 StarRocksDataSourceProcessor.java)。此外,getConnection在建立连接前还会对用户名和密码字段中的autoDeserialize敏感参数进行过滤并记录告警日志,进一步加固连接安全(见 StarRocksDataSourceProcessor.java)。

Native Supported:原生支持状态与驱动依赖安装

当前版本中 StarRocks 数据源默认不随二进制发行包提供,属于“非原生内置”的数据源。若未完成驱动安装,创建连接或运行相关任务时会因缺少驱动类而失败(典型报错为ClassNotFoundException)。需要按照以下步骤激活该数据源。

方式一:安装插件依赖包(推荐)

自 3.3.0 版本起,DolphinScheduler 二进制包不再内置插件依赖,需手动下载安装。伪集群部署的官方步骤见 pseudo-cluster.md 中Download Plugins Dependencies一节,核心操作如下:

bash ./bin/install-plugins.sh 3.3.0

该脚本按conf/plugins_config中声明的插件清单下载对应依赖包。plugins_config是插件解析的映射清单,用于将用户配置的插件模块名解析为不带版本号的 Jar 包 artifactId,其结构示例(仓库中的完整内容见 plugins_config):

--alert-plugins-- dolphinscheduler-alert-email --end-- --datasource-plugins-- dolphinscheduler-datasource-starrocks --end-- --storage-plugins-- dolphinscheduler-storage-hdfs --end-- --task-plugins-- dolphinscheduler-task-shell --end--

若只想启用 StarRocks 数据源,可将--datasource-plugins--段精简为:

--datasource-plugins-- dolphinscheduler-datasource-starrocks --end--

注意:插件依赖包通常不包含在二进制发行包中。如果服务启动时出现ClassNotFoundException,请参照相应插件类型的文档检查插件依赖是否缺失;例如dolphinscheduler-datasource-mysql本身不内置mysql-connector-java.jar,StarRocks 数据源同理依赖 MySQL 连接器。

方式二:手动放置 MySQL 驱动 Jar

StarRocks 数据源依赖 MySQL Connector/J 驱动,官方文档给出的驱动下载地址为mysql-connector-j-8.0.33(Maven 中央仓库中com/mysql/mysql-connector-j/8.0.33/mysql-connector-j-8.0.33.jar)。下载后将 Jar 放置到 DolphinScheduler 各服务(api、master、worker 等)的libs或插件目录下,并重启服务使其生效。

这一依赖关系同样体现在插件构建配置中:pom.xml 声明了对com.mysql:mysql-connector-j的依赖,插件模块的plugin.name属性为datasource.starrocks,并在打包阶段使用maven-shade-plugin将依赖一并打入插件 Jar。

验证驱动加载

安装完成后,可通过数据源中心新建 StarRocks 数据源并点击「测试连接」验证。底层连接由JdbcDriverConnectionProvider完成驱动类加载与DriverManager连接建立(见 StarRocksDataSourceProcessor.java);若驱动缺失,测试连接将直接失败并提示驱动类无法加载。

插件实现架构:从工厂到连接池

StarRocks 数据源插件遵循 DolphinScheduler 数据源 SPI 规范,共由六个类组成,职责划分清晰:

类名职责
StarRocksDataSourceChannelFactory通过@AutoService(DataSourceChannelFactory.class)注册插件,getName()返回DbType.STARROCKS的类型名(见 StarRocksDataSourceChannelFactory.java)
StarRocksDataSourceChannel创建即席(AdHoc)与池化(Pooled)两类数据源客户端(见 StarRocksDataSourceChannel.java)
StarRocksAdHocDataSourceClient继承BaseAdHocDataSourceClient,用于一次性临时连接场景(见 StarRocksAdHocDataSourceClient.java)
StarRocksPooledDataSourceClient继承BasePooledDataSourceClient,提供基于连接池的复用连接(见 StarRocksPooledDataSourceClient.java)
StarRocksConnectionParam连接参数模型,继承BaseConnectionParam,承载 user/address/database/jdbcUrl/driverLocation/driverClassName/validationQuery/other 等字段(见 StarRocksConnectionParam.java)
StarRocksDataSourceProcessor核心处理器,负责参数 DTO/连接参数间的转换、JDBC URL 组装、驱动与校验查询提供、连接建立(见 StarRocksDataSourceProcessor.java)

其中StarRocksDataSourceProcessor通过@AutoService(DataSourceProcessor.class)注解自动注册到数据源处理链,getDbType()返回DbType.STARROCKS,DolphinScheduler 在运行 SQL 类任务时会根据数据源类型路由到对应的 Processor,完成从表单配置到真实数据库连接的完整闭环。

连接流程小结

一次 StarRocks 数据源连接的完整链路如下:

  1. 用户在前端表单填写 StarRocks 参数,前端提交StarRocksDataSourceParamDTO
  2. StarRocksDataSourceProcessor.createConnectionParams(DTO)生成jdbc:mysql://{host}:{port}/{database}形式的连接参数并加密存储密码;
  3. 任务执行时调用getJdbcUrl()拼接用户自定义 JSON 参数并强制追加四条安全参数;
  4. getConnection()通过JdbcDriverConnectionProvider加载com.mysql.cj.jdbc.Driver建立真实连接(池化场景交由StarRocksPooledDataSourceClient复用);
  5. 连接建立后以select 1作为有效性校验,保证连接池中连接的健康状态。

理解上述参数与实现细节后,即可在 DolphinScheduler 数据源中心创建可靠的 StarRocks 数据源,并将其用于工作流中的 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 12:30:30

Introduction

Introduction 【免费下载链接】curriculum The open curriculum for learning web development 项目地址: https://gitcode.com/GitHub_Trending/cu/curriculum This file should flag 3 errors due to the "Lesson overview", "Knowledge check", …

作者头像 李华