= 优秀的开源数据工程 :toc: :toc-placement!:
这个优秀列表旨在提供与数据工程相关的开源项目概览。 这是一项社区努力:请贡献并发送拉取请求以扩展这个列表! 有关包括非开源工具的列表,请参阅这个出色的优秀列表。
toc::[]
== 分析
- Apache Spark - 用于大规模数据处理的统一分析引擎。包括Scala、Java、Python(称为PySpark)和R(SparkR)的API。
- Apache Beam - Google DataFlow的开源实现。提供在任何执行引擎(包括Spark、Flink或其自身的DirectRunner)上运行的批处理和流数据处理作业的功能。支持Java、Python和Go的多个API。
- Apache Flink - 对数据流进行有状态计算。
- Trino(前身为PrestoSQL) - 用于大数据的分布式SQL查询引擎。
== 商业智能
- Apache Superset - 现代的、企业级的商业智能Web应用程序。
- HUE - Hadoop用户界面。类似于Superset,但可以连接RDBMS、Hive、Impala、HBase、Spark、HDFS & S3、Oozie、Pig、YARN Job Explorer等。提供可扩展的Django环境用于自定义应用集成。
- Metabase - 让公司中的每个人都能轻松提问并从数据中学习的方式。
- Redash - 解锁数据的所有工具。
== 数据湖仓
- Delta Lake - 开源存储框架,支持使用Spark、PrestoDB、Flink、Trino和Hive等计算引擎构建湖仓架构,并提供Scala、Java、Rust、Ruby和Python的API。
- Apache Hudi - 事务性数据湖平台,为数据湖带来数据库和数据仓库的功能。Hudi重新构想了缓慢的旧式批处理数据处理,提供强大的新增量处理框架,实现低延迟的分钟级分析。
- Apache Iceberg - 用于巨大分析表的高性能格式。Iceberg为大数据带来了SQL表的可靠性和简单性,同时使Spark、Trino、Flink、Presto、Hive和Impala等引擎能够安全地同时处理相同的表。
== 变更数据捕获
- Debezium - MySQL、Postgres、MongoDB、SQL Server等的变更数据捕获。
- Maxwell - Maxwell's daemon,一个MySQL到JSON的Kafka生产者。
== 数据存储
- Apache Calcite - SQL解析器,数据存储的构建块。
- Apache Cassandra - 开源分布式宽列存储,NoSQL数据库。
- Apache Druid - 高性能实时分析数据库。
- Apache HBase - 开源非关系分布式数据库。
- Apache Pinot - 实时分布式OLAP数据存储。
- ClickHouse - 开源分布式列式DBMS。
- InfluxDB - 专门构建的开源时间序列数据库。
- MinIO - MinIO是一个高性能、分布式对象存储系统,兼容AWS S3。
- Postgres - 世界上最先进的开源关系数据库。
== 数据治理和注册表
- Amundsen - 元数据目录。
- Apache Atlas - Hadoop的数据治理和元数据框架。
- DataHub - 通用元数据搜索和发现工具。
- Metacat - 统一的元数据探索API服务。
- Elementary - 数据可靠性解决方案,从即插即用的数据血缘和数据集运行状态开始。
- Monosi - 数据可观察性和监控平台。
- OpenMetadata - 通用元数据、搜索和血缘工具。
== 数据虚拟化
- Apache Drill - 用于Hadoop、NoSQL和云存储的无模式SQL查询引擎。
- Dremio - 数据湖引擎。提供基于Apache Arrow的查询和加速引擎,以及为数据科学家和分析师创建IT管理的自助服务层的能力。
- Teiid - 不同信息源的关系抽象。
- Presto - 用于大数据的分布式SQL查询引擎。
== 数据编排
- Alluxio - 用于HDFS、S3、Ceph、NFS和相关文件存储的可扩展、多层分布式缓存。提供从Spark、Hive和Presto到目录的SQL查询集成。
- dbt - 赋予数据分析师和工程师应用类似软件工程师构建应用程序的方法,dbt确保数据转换过程符合既定实践。
== 格式
- Apache Avro - 数据序列化系统。
- Apache Parquet - 列式存储格式。
- Apache ORC - 另一种列式存储格式。
- Apache Thrift - 数据类型和服务接口定义及代码生成器。
- Apache Arrow - 跨语言内存数据开发平台。它为平面和分层数据指定了标准化的、与语言无关的列式内存格式,针对现代硬件上的高效分析操作进行了组织。它还提供计算库和零拷贝IPC和流式消息传递。
- Cap'n Proto - 数据交换格式和基于能力的RPC系统。
- FlatBuffers - 适用于C++、C#、C、Go、Java、JavaScript、Lobster、Lua、TypeScript、PHP、Python和Rust的高效跨平台序列化库。
- MessagePack - 高效的二进制序列化格式。它允许您像JSON一样在多种语言之间交换数据。
- Protocol Buffers - Google的语言中立、平台中立、可扩展的结构化数据序列化机制。
== 集成
- Apache Camel - 轻松集成各种消费或生产数据的系统。
- Kafka Connect - 处理Apache Kafka数据输入和输出的可重用框架。
- Logstash - 开源服务器端数据处理管道。
- Telegraf - 用Go编写的插件驱动服务器代理(部署为单个二进制文件,没有外部依赖),用于收集和发送来自数据库、系统和IoT传感器的指标和事件。提供数百个现有插件。
== 消息基础设施
- Apache ActiveMQ - 灵活强大的多协议消息传递。
- Apache Kafka - 具有消息功能的分布式提交日志。
- Apache Pulsar - 分布式发布-订阅消息系统。
- Liiklus - 事件网关,为类Kafka系统提供反应式gRPC/RSocket访问。
- Nakadi - 分布式事件总线,在类Kafka队列之上实现RESTful API抽象。
- NATS - 简单、安全和高性能的消息系统。
- RabbitMQ - 消息代理。
- Waltz - 基于仲裁的分布式预写日志,用于复制事务。
- ZeroMQ - 开源通用高性能消息库。
== 规范和标准
- CloudEvents - 以通用方式描述事件数据的规范。
== 流处理
- https://kafka.apache.org/documentation/streams/[Apache Kafka Streams] - 一个客户端库,用于构建应用程序和微服务,其中输入和输出数据存储在Kafka中。
- http://samza.apache.org/[Apache Samza] - 一个分布式流处理框架。
- https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html[Apache Spark结构化流] - 基于Spark SQL引擎构建的可扩展和容错的流处理引擎。
- http://storm.apache.org/[Apache Storm] - 一个分布式实时计算系统。
== 测试
- https://greatexpectations.io/[Great expectations] - 通过数据测试帮助数据团队消除管道债务。
- https://github.com/DataKitchen/data-observability-installer/[DataKitchen数据可观察性] - 一个功能齐全的数据质量分析和数据测试工具:它会为您自动生成测试。
== 监控和日志
- https://prometheus.io/[Prometheus] - 一个开源的系统监控和告警工具包。
- https://grafana.com/[Grafana] - 一个开源的分析和监控平台。
- https://github.com/DataKitchen/data-observability-installer/[DataKitchen数据可观察性] - 一个功能齐全的监控和告警软件,可以监控整个数据生态系统。
== 版本控制
- https://github.com/treeverse/lakeFS/[lakeFS] - 在对象存储之上提供可重复、原子和版本化的数据湖。
== 工作流管理
- https://github.com/meirwah/awesome-workflow-engines[优秀工作流引擎] - 精选的开源工作流引擎列表。
- https://airflow.apache.org/[Apache Airflow] - 由社区创建的平台,用于以编程方式编写、调度和监控工作流。
- https://nifi.apache.org/[Apache NiFi] - Apache NiFi支持强大且可扩展的数据路由、转换和系统中介逻辑的有向图。
- https://github.com/knime/[KNIME] - KNIME Analytics Platform为基于Spark的工作流提供所见即所得的编辑器,拥有超过2000多个集成。提供可视化和流分析功能。KNIME Server是一个商业许可组件,可提供额外功能。
- https://github.com/PrefectHQ/prefect/[Prefect] - 为现代基础设施设计的工作流管理系统。
- https://github.com/dagster-io/dagster/[Dagster] - 用于机器学习、分析和ETL的数据编排器。
- https://github.com/kestra-io/kestra[Kestra] - 具有声明性语法的开源数据编排和调度平台。
- https://github.com/mage-ai/mage-ai[Mage] - 具有丰富交互式UI的开源数据编排和调度平台。
== 相关资源
仅概述内容,不包含具体工具
=== 幻灯片、录音和播客
- https://www.dataengineeringpodcast.com/[数据工程播客]
- https://softwareengineeringdaily.com/[软件工程日报]
- https://datastackshow.com/[数据栈展示]
=== 博客文章和文章
=== 集合
- https://nosql-database.org/[NOSQL数据库管理系统] - NoSQL数据库管理系统列表。
- https://db-engines.com/en/[DB-Engines] - 关系型和NoSQL数据库管理系统的知识库。
- https://www.goodreads.com/list/show/146550.Data_Engineering_Group[书籍]和https://www.goodreads.com/group/show/1073364-data-engineering[读书俱乐部] - Goodreads上关于数据工程的书籍列表和小组
- https://www.kdnuggets.com/25-free-books-to-master-sql-python-data-science-machine-learning-and-natural-language-processing[25本免费数据书籍] - 25本与SQL、Python、数据科学、机器学习和自然语言处理相关的免费电子书集合。
== 许可证
本仓库的内容采用"知识共享署名-相同方式共享4.0国际许可协议"授权。