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

发布时间:2026/9/15 12:38:03
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/dolphinschedulerApache DolphinScheduler 通过可插拔的数据源插件体系接入 StarRocks将其作为工作流中 SQL 任务、数据同步任务的数据来源。本指南以官方数据源文档为主体结合仓库中dolphinscheduler-datasource-starrocks插件源码与部署脚本完整讲解 StarRocks 数据源的表单参数含义、底层 JDBC 连接原理、驱动依赖安装方式帮助你在 DolphinScheduler 中正确创建、验证并使用 StarRocks 数据源。StarRocks 数据源概览StarRocks 是一款兼容 MySQL 协议的 OLAP 分析型数据库因此 DolphinScheduler 中的 StarRocks 数据源插件在设计上复用了 MySQL 生态的连接方式底层驱动为com.mysql.cj.jdbc.DriverJDBC URL 前缀为jdbc:mysql://连接校验查询为select 1。这一点可以从插件源码中得到直接印证驱动类名DataSourceConstants.COM_MYSQL_CJ_JDBC_DRIVER值为com.mysql.cj.jdbc.DriverJDBC 前缀DataSourceConstants.JDBC_MYSQL值为jdbc:mysql://校验查询DataSourceConstants.MYSQL_VALIDATION_QUERY值为select 1以上常量均定义于 DataSourceConstants.java并在 StarRocksDataSourceProcessor.java 中被引用。这意味着凡是依赖 MySQL 连接器的任务类型如 SQL 查询类任务均可在配置了 StarRocks 数据源后正常工作。Datasource Parameters表单参数详解在 DolphinScheduler 的「数据源中心」页面选择StarRocks后需要填写如下参数参数项说明Datasource数据源类型选择 StarRocksDatasource name数据源名称为数据源命名便于在工作流中识别引用Description描述可选填写数据源的用途说明IP/Host Name主机名/IPStarRocks 服务的 IP 地址或主机名Port端口StarRocks 服务端口即 FE 的 query_port默认 9030Username用户名连接 StarRocks 使用的用户名Password密码连接 StarRocks 使用的密码Database name数据库名要连接的 StarRocks 数据库名Jdbc connection parametersJDBC 连接参数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 parametersJSON 格式的使用方法「Jdbc connection parameters」接收 JSON 格式的键值对用于追加到 JDBC URL 的查询参数中例如{ useUnicode: true, characterEncoding: UTF-8, connectTimeout: 10000, socketTimeout: 60000 }这些参数会被拼接到 JDBC URL 之后最终生成的连接串形如jdbc:mysql://{host}:{port}/{database}?useUnicodetruecharacterEncodingUTF-8...allowLoadLocalInfilefalseautoDeserializefalseallowLocalInfilefalseallowUrlInLocalInfilefalse需要特别说明的是插件在拼接连接参数时会自动强制追加四条安全参数用于抵御恶意 JDBC 连接串攻击相关常量与拼接逻辑见 StarRocksDataSourceProcessor.java 与getJdbcUrl方法allowLoadLocalInfilefalse禁止从本地文件读取数据autoDeserializefalse禁止自动反序列化对象allowLocalInfilefalse禁止本地文件导入allowUrlInLocalInfilefalse禁止通过 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.jarStarRocks 数据源同理依赖 MySQL 连接器。方式二手动放置 MySQL 驱动 JarStarRocks 数据源依赖 MySQL Connector/J 驱动官方文档给出的驱动下载地址为mysql-connector-j-8.0.33Maven 中央仓库中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.javaStarRocksDataSourceChannel创建即席AdHoc与池化Pooled两类数据源客户端见 StarRocksDataSourceChannel.javaStarRocksAdHocDataSourceClient继承BaseAdHocDataSourceClient用于一次性临时连接场景见 StarRocksAdHocDataSourceClient.javaStarRocksPooledDataSourceClient继承BasePooledDataSourceClient提供基于连接池的复用连接见 StarRocksPooledDataSourceClient.javaStarRocksConnectionParam连接参数模型继承BaseConnectionParam承载 user/address/database/jdbcUrl/driverLocation/driverClassName/validationQuery/other 等字段见 StarRocksConnectionParam.javaStarRocksDataSourceProcessor核心处理器负责参数 DTO/连接参数间的转换、JDBC URL 组装、驱动与校验查询提供、连接建立见 StarRocksDataSourceProcessor.java其中StarRocksDataSourceProcessor通过AutoService(DataSourceProcessor.class)注解自动注册到数据源处理链getDbType()返回DbType.STARROCKSDolphinScheduler 在运行 SQL 类任务时会根据数据源类型路由到对应的 Processor完成从表单配置到真实数据库连接的完整闭环。连接流程小结一次 StarRocks 数据源连接的完整链路如下用户在前端表单填写 StarRocks 参数前端提交StarRocksDataSourceParamDTOStarRocksDataSourceProcessor.createConnectionParams(DTO)生成jdbc:mysql://{host}:{port}/{database}形式的连接参数并加密存储密码任务执行时调用getJdbcUrl()拼接用户自定义 JSON 参数并强制追加四条安全参数getConnection()通过JdbcDriverConnectionProvider加载com.mysql.cj.jdbc.Driver建立真实连接池化场景交由StarRocksPooledDataSourceClient复用连接建立后以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),仅供参考