目前绝大多数企业正在使用的技术,大部分都是基于Apache协议开源框架,因为有些框架有多种分类方式,而且篇幅有限,只做简要介绍,仅供参考调研(截止今年目前已总结100多个),本文大约11000字,阅读需完要20分钟。
数据采集
主要代表是:Flume、Sqoop、Logstash、Databus、DataX、Canal、Kettle、Maxwell、NIFI、Debezium、SeaTunnel、Fluentd、Chukwa、StreamPipes。排名不分先后,但其中的sqoop 2021年已经被标记为退役。
-
Flume:Apache Flume 是一个分布式、可靠且可扩展的日志收集和聚合系统,主要是用来将大量的数据从多个源(如日志文件、消息队列)采集到目标系统(如 Hadoop、Kafka)中。
-
Sqoop:Apache Sqoop 是用于在关系型数据库(如 MySQL、Oracle)和 Hadoop 生态系统(如 HDFS、Hive)之间进行数据传输的工具,可以方便地将结构化数据导入到 Hadoop 中进行分析。
-
Logstash:Logstash 是一个开源的数据收集引擎,用于从各种来源(如日志文件、消息队列、数据库)收集、转换和发送数据到目标存储(如 Elasticsearch、Hadoop)中。
-
Databus:Databus 是 LinkedIn 开源的实时数据复制和传输系统,用于在分布式环境中可靠地传输数据变更,支持多种数据源和目标存储。
-
DataX:DataX 是阿里巴巴开源的数据同步工具,支持多种数据源和目标存储,可用于大规模数据迁移和同步任务。
-
Canal:Canal 是阿里巴巴开源的数据库增量订阅&消费组件,可以捕获数据库的变更事件,并将其转发到消息队列中,用于实时数据同步和数据集成。
-
Kettle:Kettle(又名 Pentaho Data Integration)是一款强大的开源 ETL 工具,用于提取、转换和加载数据,支持多种数据源和目标存储。
-
Maxwell:Maxwell 是一个开源的 MySQL 数据库的增量订阅工具,可以捕获 MySQL 数据库的变更事件,并将其转发到消息队列中,用于实时数据同步和数据流处理。
-
NIFI:Apache NiFi 是一个可视化的数据流处理和自动化工具,用于从各种数据源收集、传输和处理数据,支持强大的数据路由、转换和监控功能。
-
Debezium:Debezium 是一个开源的分布式数据库变更事件捕获平台,可以捕获多种数据库(如 MySQL、PostgreSQL、MongoDB)的变更事件,并将其转发到消息队列中,用于实时数据流处理。
-
SeaTunnel(Waterdrop):SeaTunnel(也称为 Waterdrop)是腾讯开源的大数据实时同步工具,支持多种数据源和目标存储,用于实时数据同步和数据流处理。
-
Fluentd:Fluentd是一个开源的数据收集器,支持从多种来源采集数据,并将其传输到多种目标。它具有可扩展性和灵活性,适用于大规模的日志和事件数据采集。
-
Apache Chukwa:Apache Chukwa是一个用于日志和事件数据的分布式数据收集系统。它支持从各种来源(如日志文件、操作系统统计)采集数据,并提供实时监控和分析功能。
-
Apache StreamPipes:Apache StreamPipes是一个用于构建可扩展的实时数据流处理和物联网应用的开发框架。它支持从多种数据源采集数据,并进行实时处理、分析和可视化。
消息队列
-
Kafka:Apache Kafka 是一个分布式流处理平台和消息队列系统。它具有高吞吐量、可持久化、可水平扩展等特点。Kafka 基于发布-订阅模式,可以用于构建实时数据管道,将数据流从生产者传输到消费者,支持大规模的实时数据流处理和数据集成。
-
Pulsar:Apache Pulsar 是一个开源的分布式消息和流处理平台。它提供持久化的消息队列和流式处理功能,并具备高可扩展性、高性能和多租户支持。Pulsar 支持多种消息传递模式,包括发布-订阅和队列模式,同时还提供了一些高级功能,如事务、批处理和消息路由。
-
RabbitMQ:RabbitMQ是一个开源的消息队列系统,支持多种消息传递协议,包括AMQP、MQTT等