Druid.io系列(一):简介

Druid是一款开源、分布式、面向列式存储的实时分析数据存储系统,它支持亚秒级OLAP查询分析及实时流数据分析,具备丰富的数据分析功能与高可用性和可拓展性。

Druid.io(以下简称Druid)是面向海量数据的、用于实时查询与分析的OLAP存储系统。Druid的四大关键特性总结如下:

  1. 亚秒级的OLAP查询分析。Druid采用了列式存储、倒排索引、位图索引等关键技术,能够在亚秒级别内完成海量数据的过滤、聚合以及多维分析等操作。

  2. 实时流数据分析。区别于传统分析型数据库采用的批量导入数据进行分析的方式,Druid提供了实时流数据分析,采用LSM(Long structure merge)-Tree结构使Druid拥有极高的实时写入性能;同时实现了实时数据在亚秒级内的可视化。

  3. 丰富的数据分析功能。针对不同用户群体,Druid提供了友好的可视化界面、类SQL查询语言以及REST 查询接口。

  4. 高可用性与高可拓展性。Druid采用分布式、SN(share-nothing)架构,管理类节点可配置HA,工作节点功能单一,不相互依赖,这些特性都使得Druid集群在管理、容错、灾备、扩容等方面变得十分简单。

1 为什么会有Druid

大数据技术从最早的Hadoop项目开始已经有十多年的历史了,而Druid是在2013年年底才开源的,虽然目前还不是Apache顶级项目,但是作为后起之秀,依然吸引了大量用户的目光,社区也非常活跃。那么,为什么会有Druid,而Druid又解决了传统大数据处理框架下的哪些“痛点”问题,下面我们来一一解答。

大数据时代,如何从海量数据中提取有价值的信息,是一个亟待解决的难题。针对这个问题,IT巨头们已经开发了大量的数据存储与分析类产品,比如IBM Netezza、HP Vertica、EMC GreenPlum等,但是他们大多是昂贵的商业付费类产品,业内使用者寥寥。

而受益于近年来高涨的开源精神,业内出现了众多优秀的开源项目,其中最有名的当属Apache Hadoop生态圈。时至今日,Hadoop已经成为了大数据的“标准”解决方案,但是,人们在享受Hadoop便捷数据分析的同时,也必须要忍受Hadoop在设计上的许多“痛点”,下面就罗列三方面的问题:

  1. 何时能进行数据查询?对于Hadoop使用的Map/Reduce批处理框架,数据何时能够查询没有性能保证。

  2. 随机IO问题。Map/Reduce批处理框架所处理的数据需要存储在HDFS上,而HDFS是一个以集群硬盘作为存储资源池的分布式文件系统,那么在海量数据的处理过程中,必然会引起大量的读写操作,此时随机IO就成为了高并发场景下的性能瓶颈。

  3. 数据可视化问题。HDFS是一个优秀的分布式文件系统,但是对于数据分析以及数据的即席查询,HDFS并不是最优的选择。

传统的大数据处理架构Hadoop更倾向于一种“后台批处理的数据仓库系统”,其作为海量历史数据保存、冷数据分析,确实是一个优秀的通用解决方案,但是如何保证高并发环境下海量数据的查询分析性能,以及如何实现海量实时数据的查询分析与可视化,Hadoop确实显得有些无能为力。

2 Druid直面痛点

Druid的母公司MetaMarket在2011年以前也是Hadoop的拥趸者,但是在高并发环境下,Hadoop并不能对数据可用性以及查询性能给出产品级别的保证,使得MetaMarket必须去寻找新的解决方案,当尝试使用了各种关系型数据库以及NoSQL产品后,他们觉得这些已有的工具都不能解决他们的“痛点”,所以决定在2011年开始研发自己的“轮子”Druid,他们将Druid定义为“开源、分布式、面向列式存储的实时分析数据存储系统”,所要解决的“痛点”也是上文中反复提及的“在高并发环境下,保证海量数据查询分析性能,同时又提供海量实时数据的查询、分析与可视化功能”。

<component name="ArtifactManager"> <artifact type="exploded-war" name="ssms1924:war exploded"> <output-path>$PROJECT_DIR$/target/ssms1924</output-path> <properties id="maven-jee-properties"> <options> <exploded>true</exploded> <module>ssms1924</module> <packaging>war</packaging> </options> </properties> <root id="root"> <element id="directory" name="WEB-INF"> <element id="directory" name="classes"> <element id="module-output" name="ssms1924" /> </element> <element id="directory" name="lib"> <element id="library" level="project" name="Maven: org.springframework:spring-core:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-jcl:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-context:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-expression:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-context-support:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-tx:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-aop:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-beans:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-jdbc:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-web:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.springframework:spring-webmvc:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.aspectj:aspectjweaver:1.8.8" /> <element id="library" level="project" name="Maven: commons-fileupload:commons-fileupload:1.3.1" /> <element id="library" level="project" name="Maven: javax.servlet:jstl:1.2" /> <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus:2.3" /> <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-support:2.3" /> <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-core:2.3" /> <element id="library" level="project" name="Maven: com.github.jsqlparser:jsqlparser:1.1" /> <element id="library" level="project" name="Maven: org.mybatis:mybatis-spring:1.3.2" /> <element id="library" level="project" name="Maven: org.mybatis:mybatis:3.4.6" /> <element id="library" level="project" name="Maven: com.baomidou:mybatis-plus-generate:2.3" /> <element id="library" level="project" name="Maven: mysql:mysql-connector-java:8.0.25" /> <element id="library" level="project" name="Maven: com.google.protobuf:protobuf-java:3.11.4" /> <element id="library" level="project" name="Maven: com.microsoft.sqlserver:mssql-jdbc:6.2.0.jre8" /> <element id="library" level="project" name="Maven: com.alibaba:druid:1.1.0" /> <element id="library" level="project" name="Maven: com.alibaba:fastjson:1.2.8" /> <element id="library" level="project" name="Maven: log4j:log4j:1.2.17" /> <element id="library" level="project" name="Maven: org.slf4j:slf4j-api:1.7.19" /> <element id="library" level="project" name="Maven: org.slf4j:slf4j-log4j12:1.7.19" /> <element id="library" level="project" name="Maven: org.springframework:spring-test:5.0.0.RELEASE" /> <element id="library" level="project" name="Maven: org.apache.commons:commons-lang3:3.0" /> <element id="library" level="project" name="Maven: javax.validation:validation-api:2.0.1.Final" /> <element id="library" level="project" name="Maven: commons-io:commons-io:2.5" /> <element id="library" level="project" name="Maven: cn.hutool:hutool-all:4.0.12" /> <element id="library" level="project" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:9.0.29" /> <element id="library" level="project" name="Maven: org.apache.tomcat:tomcat-annotations-api:9.0.29" /> <element id="library" level="project" name="Maven: commons-beanutils:commons-beanutils:1.8.0" /> <element id="library" level="project" name="Maven: commons-logging:commons-logging:1.1.1" /> <element id="library" level="project" name="Maven: com.baidu.aip:java-sdk:4.4.1" /> <element id="library" level="project" name="Maven: org.json:json:20160810" /> <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.1" /> <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.1" /> <element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.10.1" /> <element id="library" level="project" name="Maven: org.codehaus.jackson:jackson-mapper-asl:1.9.13" /> <element id="library" level="project" name="Maven: org.codehaus.jackson:jackson-core-asl:1.9.13" /> </element> </element> <element id="directory" name="META-INF"> <element id="file-copy" path="$PROJECT_DIR$/target/ssms1924/META-INF/MANIFEST.MF" /> </element> <element id="javaee-facet-resources" facet="ssms1924/web/Web" /> </root> </artifact> </component>
05-20
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.crmp.ecc</groupId> <artifactId>crmp-data-syncjob</artifactId> <packaging>pom</packaging> <version>1.0.0-SNAPSHOT</version> <modules> <module>crmp-data-syncjob-common</module> <module>crmp-data-syncjob-dao</module> <module>crmp-data-syncjob-domain</module> <module>crmp-data-syncjob-service</module> <module>crmp-data-syncjob-web</module> </modules> <name>多数据源同步服务</name> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.18</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>11</java.version> <!-- 框架版本 --> <flink.version>1.19.3</flink.version> <flink-cdc.version>3.2.0</flink-cdc.version> <debezium.version>1.9.8.Final</debezium.version> <scala.binary.version>2.12</scala.binary.version> <!-- 数据库与中间件依赖 --> <mysql.version>8.0.21</mysql.version> <druid.version>1.2.21</druid.version> <mybatis.version>2.3.1</mybatis.version> <kafka-clients.version>2.8.1</kafka-clients.version> <!-- 工具类与文档 --> <lombok.version>1.18.30</lombok.version> <hutool.version>5.8.6</hutool.version> <commons-lang3.version>3.14.0</commons-lang3.version> <!--SLF4J版本(与Flink 1.19.3兼容) --> <slf4j.version>1.7.36</slf4j.version> <!-- Infinispan统版本(避免传递依赖冲突) --> <infinispan.version>13.0.20.Final</infinispan.version> </properties> <!-- 依赖管理:统锁定版本,优先级:BOM > 显式声明 --> <dependencyManagement> <dependencies> <!-- 1. Debezium BOM:优先锁定所有Debezium子依赖版本(包括传递依赖) --> <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-bom</artifactId> <version>${debezium.version}</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 2. Spring Cloud 依赖(与Spring Boot 2.7.18兼容) --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2021.0.8</version> <type>pom</type> <scope>import</scope> </dependency> <!-- 3. 核心依赖版本锁定 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-commons</artifactId> <version>${infinispan.version}</version> </dependency> <!-- 4. Debezium核心组件(已通过BOM锁定版本,此处仅声明排除规则) --> <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-core</artifactId> <version>${debezium.version}</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> <exclusion> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> </exclusion> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> <!-- 排除有问题的jdk11专用包 --> <exclusion> <groupId>org.infinispan</groupId> <artifactId>infinispan-commons-jdk11</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-connector-mysql</artifactId> <version>${debezium.version}</version> <exclusions> <exclusion> <groupId>org.infinispan</groupId> <artifactId>infinispan-commons-jdk11</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-connector-oracle</artifactId> <version>${debezium.version}</version> <exclusions> <exclusion> <groupId>org.infinispan</groupId> <artifactId>infinispan-commons-jdk11</artifactId> </exclusion> </exclusions> </dependency> <!-- 5. Flink CDC组件 --> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-mysql-cdc</artifactId> <version>${flink-cdc.version}</version> </dependency> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-oracle-cdc</artifactId> <version>${flink-cdc.version}</version> </dependency> <!-- 6. 子模块版本管理 --> <dependency> <groupId>com.crmp.ecc</groupId> <artifactId>crmp-data-syncjob-common</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.crmp.ecc</groupId> <artifactId>crmp-data-syncjob-dao</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.crmp.ecc</groupId> <artifactId>crmp-data-syncjob-domain</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>com.crmp.ecc</groupId> <artifactId>crmp-data-syncjob-service</artifactId> <version>${project.version}</version> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- ========== Spring Boot核心:排除日志冲突 ========== --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-reload4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <!-- ========== 测试依赖 ========== --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <!-- ========== 工具类 ========== --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.16.0</version> </dependency> <!-- ========== 数据库依赖 ========== --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> <exclusions> <exclusion> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </exclusion> <exclusion> <groupId>com.googlecode</groupId> <artifactId>hibernate-memcached</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.version}</version> </dependency> <!-- Oracle驱动 --> <dependency> <groupId>com.oracle.database.jdbc</groupId> <artifactId>ojdbc10</artifactId> <version>19.10.0.0</version> <scope>runtime</scope> </dependency> <dependency> <groupId>com.oracle.database.nls</groupId> <artifactId>orai18n</artifactId> <version>19.10.0.0</version> </dependency> <!-- 人大金仓 --> <dependency> <groupId>com.kingbase8.jdbc</groupId> <artifactId>kingbase8</artifactId> <version>8.6.0</version> <scope>runtime</scope> </dependency> <!-- ========== Flink核心依赖 ========== --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-api-java-bridge</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner_${scala.binary.version}</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-statebackend-rocksdb</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-json</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.1-jre</version> <scope>provided</scope> </dependency> <!-- ========== CDC连接器(核心修改:排除Infinispan-jdk11依赖) ========== --> <!-- Mysql CDC:排除传递的Debezium和Infinispan问题依赖 --> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-mysql-cdc</artifactId> <exclusions> <exclusion> <groupId>org.apache.flink</groupId> <artifactId>flink-core</artifactId> </exclusion> <exclusion> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java</artifactId> </exclusion> <exclusion> <groupId>io.debezium</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> <!-- 排除Flink CDC传递的Infinispan问题依赖 --> <exclusion> <groupId>org.infinispan</groupId> <artifactId>infinispan-commons-jdk11</artifactId> </exclusion> </exclusions> </dependency> <!-- Oracle CDC:排除传递的Debezium和Infinispan问题依赖 --> <dependency> <groupId>com.ververica</groupId> <artifactId>flink-connector-oracle-cdc</artifactId> <exclusions> <exclusion> <groupId>org.apache.flink</groupId> <artifactId>flink-core</artifactId> </exclusion> <exclusion> <groupId>io.debezium</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> <exclusion> <groupId>org.infinispan</groupId> <artifactId>infinispan-commons-jdk11</artifactId> </exclusion> </exclusions> </dependency> <!-- 人大金仓CDC:排除传递的Debezium依赖 --> <dependency> <groupId>com.kingbase</groupId> <artifactId>flink-sql-cdc-connector-kes-v2</artifactId> <version>3.2-SNAPSHOT</version> <exclusions> <exclusion> <groupId>io.debezium</groupId> <artifactId>*</artifactId> </exclusion> <exclusion> <groupId>org.infinispan</groupId> <artifactId>infinispan-commons-jdk11</artifactId> </exclusion> </exclusions> </dependency> <!-- ========== 显式引入Debezium核心组件(版本由dependencyManagement锁定) ========== --> <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-core</artifactId> </dependency> <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-connector-mysql</artifactId> </dependency> <dependency> <groupId>io.debezium</groupId> <artifactId>debezium-connector-oracle</artifactId> </dependency> <!-- ========== Flink补充依赖 ========== --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-core</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java</artifactId> <version>${flink.version}</version> <exclusions> <exclusion> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> </exclusion> </exclusions> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.6.1</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-base</artifactId> <version>${flink.version}</version> </dependency> <!-- ========== Kafka依赖 ========== --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka</artifactId> <version>3.2.0-1.19</version> <exclusions> <exclusion> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka-clients.version}</version> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>connect-api</artifactId> <version>${kafka-clients.version}</version> <exclusions> <exclusion> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>connect-json</artifactId> <version>${kafka-clients.version}</version> <exclusions> <exclusion> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>connect-transforms</artifactId> <version>${kafka-clients.version}</version> <exclusions> <exclusion> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <!-- ========== Doris连接器 ========== --> <dependency> <groupId>org.apache.doris</groupId> <artifactId>flink-doris-connector-1.19</artifactId> <version>25.1.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.7</version> </dependency> <!-- ========== Hadoop支持 ========== --> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-hadoop-compatibility_2.12</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>3.3.6</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> <exclusion> <groupId>org.apache.yetus</groupId> <artifactId>audience-annotations</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.3.6</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> <exclusion> <groupId>org.apache.yetus</groupId> <artifactId>audience-annotations</artifactId> </exclusion> </exclusions> </dependency> <!-- ========== 其他工具依赖 ========== --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.39</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.3.2</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20231013</version> </dependency> </dependencies> <!-- 环境配置 --> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>false</activeByDefault> </activation> <properties> <profileActive>dev</profileActive> </properties> </profile> <profile> <id>prod</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <profileActive>prod</profileActive> </properties> </profile> </profiles> </project>这是pom配置,这是输出 PS D:\kingbaseProject\crmp-data-syncjob> mvn clean dependency:tree -U -Dincludes="io.debezium:*,org.apache.kafka:*" [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] 多数据源同步服务 [pom] [INFO] crmp-data-syncjob-common [jar] [INFO] crmp-data-syncjob-domain [jar] [INFO] crmp-data-syncjob-dao [jar] [INFO] crmp-data-syncjob-service [jar] [INFO] crmp-data-syncjob-web [jar] [INFO] [INFO] -------------------< com.crmp.ecc:crmp-data-syncjob >------------------- [INFO] Building 多数据源同步服务 1.0.0-SNAPSHOT [1/6] [INFO] from pom.xml [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ crmp-data-syncjob --- [INFO] [INFO] --- maven-dependency-plugin:3.3.0:tree (default-cli) @ crmp-data-syncjob --- [INFO] com.crmp.ecc:crmp-data-syncjob:pom:1.0.0-SNAPSHOT [INFO] +- io.debezium:debezium-core:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-api:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-mysql:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-ddl-parser:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-oracle:jar:1.9.8.Final:compile [INFO] +- org.apache.kafka:kafka-clients:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-api:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-json:jar:2.8.1:compile [INFO] \- org.apache.kafka:connect-transforms:jar:2.8.1:compile [INFO] [INFO] ---------------< com.crmp.ecc:crmp-data-syncjob-common >---------------- [INFO] Building crmp-data-syncjob-common 1.0.0-SNAPSHOT [2/6] [INFO] from crmp-data-syncjob-common\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ crmp-data-syncjob-common --- [INFO] [INFO] --- maven-dependency-plugin:3.3.0:tree (default-cli) @ crmp-data-syncjob-common --- [INFO] com.crmp.ecc:crmp-data-syncjob-common:jar:1.0.0-SNAPSHOT [INFO] +- io.debezium:debezium-core:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-api:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-mysql:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-ddl-parser:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-oracle:jar:1.9.8.Final:compile [INFO] +- org.apache.kafka:kafka-clients:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-api:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-json:jar:2.8.1:compile [INFO] \- org.apache.kafka:connect-transforms:jar:2.8.1:compile [INFO] [INFO] ---------------< com.crmp.ecc:crmp-data-syncjob-domain >---------------- [INFO] Building crmp-data-syncjob-domain 1.0.0-SNAPSHOT [3/6] [INFO] from crmp-data-syncjob-domain\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ crmp-data-syncjob-domain --- [INFO] [INFO] --- maven-dependency-plugin:3.3.0:tree (default-cli) @ crmp-data-syncjob-domain --- [INFO] com.crmp.ecc:crmp-data-syncjob-domain:jar:1.0.0-SNAPSHOT [INFO] +- io.debezium:debezium-core:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-api:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-mysql:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-ddl-parser:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-oracle:jar:1.9.8.Final:compile [INFO] +- org.apache.kafka:kafka-clients:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-api:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-json:jar:2.8.1:compile [INFO] \- org.apache.kafka:connect-transforms:jar:2.8.1:compile [INFO] [INFO] -----------------< com.crmp.ecc:crmp-data-syncjob-dao >----------------- [INFO] Building crmp-data-syncjob-dao 1.0.0-SNAPSHOT [4/6] [INFO] from crmp-data-syncjob-dao\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ crmp-data-syncjob-dao --- [INFO] [INFO] --- maven-dependency-plugin:3.3.0:tree (default-cli) @ crmp-data-syncjob-dao --- [INFO] com.crmp.ecc:crmp-data-syncjob-dao:jar:1.0.0-SNAPSHOT [INFO] +- io.debezium:debezium-core:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-api:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-mysql:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-ddl-parser:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-oracle:jar:1.9.8.Final:compile [INFO] +- org.apache.kafka:kafka-clients:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-api:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-json:jar:2.8.1:compile [INFO] \- org.apache.kafka:connect-transforms:jar:2.8.1:compile [INFO] [INFO] ---------------< com.crmp.ecc:crmp-data-syncjob-service >--------------- [INFO] Building crmp-data-syncjob-service 1.0.0-SNAPSHOT [5/6] [INFO] from crmp-data-syncjob-service\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ crmp-data-syncjob-service --- [INFO] [INFO] --- maven-dependency-plugin:3.3.0:tree (default-cli) @ crmp-data-syncjob-service --- [INFO] com.crmp.ecc:crmp-data-syncjob-service:jar:1.0.0-SNAPSHOT [INFO] +- io.debezium:debezium-core:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-api:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-mysql:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-ddl-parser:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-oracle:jar:1.9.8.Final:compile [INFO] +- org.apache.kafka:kafka-clients:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-api:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-json:jar:2.8.1:compile [INFO] \- org.apache.kafka:connect-transforms:jar:2.8.1:compile [INFO] [INFO] -----------------< com.crmp.ecc:crmp-data-syncjob-web >----------------- [INFO] Building crmp-data-syncjob-web 1.0.0-SNAPSHOT [6/6] [INFO] from crmp-data-syncjob-web\pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ crmp-data-syncjob-web --- [INFO] [INFO] --- maven-dependency-plugin:3.3.0:tree (default-cli) @ crmp-data-syncjob-web --- [INFO] com.crmp.ecc:crmp-data-syncjob-web:jar:1.0.0-SNAPSHOT [INFO] +- io.debezium:debezium-core:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-api:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-mysql:jar:1.9.8.Final:compile [INFO] | \- io.debezium:debezium-ddl-parser:jar:1.9.8.Final:compile [INFO] +- io.debezium:debezium-connector-oracle:jar:1.9.8.Final:compile [INFO] +- org.apache.kafka:kafka-clients:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-api:jar:2.8.1:compile [INFO] +- org.apache.kafka:connect-json:jar:2.8.1:compile [INFO] \- org.apache.kafka:connect-transforms:jar:2.8.1:compile [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for 多数据源同步服务 1.0.0-SNAPSHOT: [INFO] [INFO] 多数据源同步服务 ........................................... SUCCESS [ 1.648 s] [INFO] crmp-data-syncjob-common ........................... SUCCESS [ 0.115 s] [INFO] crmp-data-syncjob-domain ........................... SUCCESS [ 0.085 s] [INFO] crmp-data-syncjob-dao .............................. SUCCESS [ 0.131 s] [INFO] crmp-data-syncjob-service .......................... SUCCESS [ 0.113 s] [INFO] crmp-data-syncjob-web .............................. SUCCESS [ 0.121 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.683 s [INFO] Finished at: 2025-11-25T15:00:10+08:00 [INFO] ------------------------------------------------------------------------ ,这还是报错 2025-11-25 14:34:23 java.lang.NoSuchMethodError: 'io.debezium.config.Field io.debezium.config.Field.withType(org.apache.kafka.common.config.ConfigDef$Type)' at io.debezium.relational.HistorizedRelationalDatabaseConnectorConfig.<clinit>(HistorizedRelationalDatabaseConnectorConfig.java:48) at io.debezium.relational.RelationalDatabaseConnectorConfig.lambda$new$0(RelationalDatabaseConnectorConfig.java:636) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1810) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at io.debezium.config.Configuration$5.keys(Configuration.java:1608) at io.debezium.config.Configuration$5.keys(Configuration.java:1605) at io.debezium.config.Configuration.map(Configuration.java:1567) at io.debezium.config.Configuration.subset(Configuration.java:1553) at io.debezium.relational.RelationalDatabaseConnectorConfig.<init>(RelationalDatabaseConnectorConfig.java:638) at io.debezium.connector.kes.KingbaseConnectorConfig.<init>(KingbaseConnectorConfig.java:1024) at org.apache.flink.cdc.connectors.kes.source.config.KingbaseSourceConfig.getDbzConnectorConfig(KingbaseSourceConfig.java:129) at org.apache.flink.cdc.connectors.kes.source.config.KingbaseSourceConfig.getDbzConnectorConfig(KingbaseSourceConfig.java:35) at org.apache.flink.cdc.connectors.base.config.JdbcSourceConfig.getTableFilters(JdbcSourceConfig.java:165) at org.apache.flink.cdc.connectors.kes.source.KingbaseDialect.isIncludeDataCollection(KingbaseDialect.java:219) at org.apache.flink.cdc.connectors.kes.source.KingbaseDialect.isIncludeDataCollection(KingbaseDialect.java:59) at org.apache.flink.cdc.connectors.base.source.reader.IncrementalSourceReader.addSplits(IncrementalSourceReader.java:266) at org.apache.flink.cdc.connectors.base.source.reader.IncrementalSourceReader.addSplits(IncrementalSourceReader.java:248) at org.apache.flink.streaming.api.operators.SourceOperator.handleAddSplitsEvent(SourceOperator.java:625) at org.apache.flink.streaming.api.operators.SourceOperator.handleOperatorEvent(SourceOperator.java:595) at org.apache.flink.streaming.runtime.tasks.OperatorEventDispatcherImpl.dispatchEventToHandlers(OperatorEventDispatcherImpl.java:72) at org.apache.flink.streaming.runtime.tasks.RegularOperatorChain.dispatchOperatorEvent(RegularOperatorChain.java:80) at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$dispatchOperatorEvent$22(StreamTask.java:1548) at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1.runThrowing(StreamTaskActionExecutor.java:50) at org.apache.flink.streaming.runtime.tasks.mailbox.Mail.run(Mail.java:90) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMail(MailboxProcessor.java:398) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMailsWhenDefaultActionUnavailable(MailboxProcessor.java:367) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMail(MailboxProcessor.java:352) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:229) at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:917) at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:859) at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:958) at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:937) at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:751) at org.apache.flink.runtime.taskmanager.Task.run(Task.java:566) at java.base/java.lang.Thread.run(Thread.java:829) 2025-11-25 14:34:53 java.lang.NoClassDefFoundError: Could not initialize class io.debezium.relational.HistorizedRelationalDatabaseConnectorConfig at io.debezium.relational.RelationalDatabaseConnectorConfig.lambda$new$0(RelationalDatabaseConnectorConfig.java:636) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1810) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at io.debezium.config.Configuration$5.keys(Configuration.java:1608) at io.debezium.config.Configuration$5.keys(Configuration.java:1605) at io.debezium.config.Configuration.map(Configuration.java:1567) at io.debezium.config.Configuration.subset(Configuration.java:1553) at io.debezium.relational.RelationalDatabaseConnectorConfig.<init>(RelationalDatabaseConnectorConfig.java:638) at io.debezium.connector.kes.KingbaseConnectorConfig.<init>(KingbaseConnectorConfig.java:1024) at org.apache.flink.cdc.connectors.kes.source.config.KingbaseSourceConfig.getDbzConnectorConfig(KingbaseSourceConfig.java:129) at org.apache.flink.cdc.connectors.kes.source.config.KingbaseSourceConfig.getDbzConnectorConfig(KingbaseSourceConfig.java:35) at org.apache.flink.cdc.connectors.base.config.JdbcSourceConfig.getTableFilters(JdbcSourceConfig.java:165) at org.apache.flink.cdc.connectors.kes.source.KingbaseDialect.isIncludeDataCollection(KingbaseDialect.java:219) at org.apache.flink.cdc.connectors.kes.source.KingbaseDialect.isIncludeDataCollection(KingbaseDialect.java:59) at org.apache.flink.cdc.connectors.base.source.reader.IncrementalSourceReader.addSplits(IncrementalSourceReader.java:266) at org.apache.flink.cdc.connectors.base.source.reader.IncrementalSourceReader.addSplits(IncrementalSourceReader.java:248) at org.apache.flink.streaming.api.operators.SourceOperator.handleAddSplitsEvent(SourceOperator.java:625) at org.apache.flink.streaming.api.operators.SourceOperator.handleOperatorEvent(SourceOperator.java:595) at org.apache.flink.streaming.runtime.tasks.OperatorEventDispatcherImpl.dispatchEventToHandlers(OperatorEventDispatcherImpl.java:72) at org.apache.flink.streaming.runtime.tasks.RegularOperatorChain.dispatchOperatorEvent(RegularOperatorChain.java:80) at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$dispatchOperatorEvent$22(StreamTask.java:1548) at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1.runThrowing(StreamTaskActionExecutor.java:50) at org.apache.flink.streaming.runtime.tasks.mailbox.Mail.run(Mail.java:90) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMail(MailboxProcessor.java:398) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMailsWhenDefaultActionUnavailable(MailboxProcessor.java:367) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMail(MailboxProcessor.java:352) at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:229) at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:917) at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:859) at org.apache.flink.runtime.taskmanager.Task.runWithSystemExitMonitoring(Task.java:958) at org.apache.flink.runtime.taskmanager.Task.restoreAndInvoke(Task.java:937) at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:751) at org.apache.flink.runtime.taskmanager.Task.run(Task.java:566) at java.base/java.lang.Thread.run(Thread.java:829)
最新发布
11-26
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值