InfluxData 和 Dremio 如何利用 Apache 生态系统
作者:Anais Dotis-Georgiou / 产品
2023 年 9 月 11 日
导航至
InfluxData 和 Dremio 一直走在拥抱开源解决方案以增强其产品供应的前沿。这篇文章讨论了两家公司目前如何利用 Apache 生态系统,并描述了这些强大的技术对其产品产生的下游影响。
InfluxData 创建并维护 InfluxDB,一个时间序列平台。用户利用 InfluxDB 3.0 进行各种用例和行业,包括物联网监控、DevOps 监控、金融科技、农业科技、制造业等等。
Dremio 是一个开源的、数据即服务平台,旨在简化和加速数据分析。它使业务用户能够以自助服务的方式管理和分析他们的数据,用于商业智能 (BI) 和其他用例。
Apache 基金会的优势
两家公司都是 Apache 软件基金会 (ASF) 的成员,这为更广泛的技术和开源社区提供了显着的好处。
-
开源软件:ASF 是最大的开源软件中心之一。开源项目允许开发人员修改、分发和研究源代码,这可以带来更快的创新、更安全和高质量的代码以及更高程度的自定义。
-
广泛的项目范围:ASF 托管了 数百个项目,涵盖了各个领域。这种多样化的项目范围使开发人员和组织能够找到适合其特定需求的工具。
-
社区驱动的开发:社区志愿者开发 Apache 项目。这种协作开发模式可以带来更全面和创新的软件解决方案,因为来自世界各地的开发人员可以贡献不同的观点和技能。
-
稳定可靠:由于其开发的协作性质和彻底的审查流程,在 Apache 许可下开发的软件往往更稳定可靠。
-
商业友好的许可:Apache 许可证被认为是可用的最商业友好的许可证之一。它允许用户出于任何目的使用该软件,分发它,修改它,并根据许可证的条款分发该软件的修改版本,即使是用于商业目的。此外,该许可证不要求衍生作品以相同的许可证分发。
-
促进标准:Apache 项目通常成为各自领域的实际标准,促进互操作性并减少软件行业的碎片化。
-
导师和孵化器计划:ASF 运营一个孵化器项目,帮助新项目发展成为成功的 Apache 顶级项目。这为希望启动新项目的开发人员提供指导和资源,从而进一步促进开源世界的创新和增长。
Apache 软件基金会在促进开源软件、培养创新和设定行业标准方面发挥着重要作用,所有这些都有利于整个软件开发社区,从个人开发人员到像 InfluxData 和 Dremio 这样的企业。
InfluxDB 3.0 和 Apache 生态系统
随着 InfluxDB 3.0 的发布,InfluxData 使用 Apache Arrow 生态系统重建了其数据库的核心。这使公司能够通过将几项关键的强大技术集成到其平台中来增强性能和功能,包括
Apache Arrow 是一个用于定义内存中列式数据的框架。Apache Arrow 使 InfluxDB 能够虚拟地消除数据基数限制。反过来,这一发展使 InfluxDB 能够写入所有类型的时间序列数据,包括指标、日志、跟踪和事件。Arrow 内存优化和高效的数据交换帮助 InfluxDB 在分析方面提供一流的性能。高性能分析需要 Arrow 提供的有效内存中列式存储。如果您有兴趣了解 InfluxDB 如何处理您的所有时间序列数据,请查看以下帖子:OpenTelemetry 教程:使用 InfluxDB 3.0、Jaeger 和 Grafana 收集跟踪、日志和指标。
Parquet 是一种持久的、面向列的文件格式。Parquet 几乎与所有现代机器学习 (ML) 和 分析 工具互操作,这些工具提供一流的分析。DataFusion 支持 SQL 和 DataFrame API,用于逻辑查询计划、查询优化以及针对 Parquet 文件的执行引擎。InfluxDB 3.0 在此数据生态系统(Arrow、Parquet 和 Flight)中支持 SQL 查询。Parquet 实现了互操作性,因为许多最流行的语言(如 C++、Python 和 Java)在 Arrow 项目中对读取和写入 Parquet 文件具有一流的支持。我个人对 Python 支持感到非常兴奋。将来,您将能够直接从 InfluxDB 查询 Parquet 文件并将它们转换为 Pandas DataFrames 和 反之亦然。这意味着 InfluxDB 可以与其他支持 Parquet 的工具互操作,例如 Tableau、PowerBI、Athena、Snowflake、DataBricks、Spark 等。目前,您可以使用 InfluxDB 3.0 Python 客户端库 查询 InfluxDB 3.0 并返回 Pandas DataFrames。
Arrow Flight 是一个“新的通用客户端-服务器框架,旨在简化通过网络接口高速传输大型数据集”。它使用户能够使用 SQL 查询 InfluxDB 3.0,从而降低了采用门槛,并使开发人员能够专注于从其数据中获取见解,而不是编写查询。有关如何使用 Arrow Flight SQL 客户端直接查询 InfluxDB 3.0 的示例,请参阅此 repo。
DataFusion 是一个“用 Rust 编写的可扩展查询执行框架,它使用 Apache Arrow 作为其内存中格式”。DataFusion 用于执行逻辑查询计划、优化查询,并充当能够使用线程并行化的执行引擎。许多不同的项目和产品都使用 DataFusion,并且它拥有一个蓬勃发展的贡献者社区,他们添加了广泛的 SQL 支持和复杂的查询优化。DataFusion 支持与 Postgres 兼容的 SQL 和 DataFrame API。这意味着新的 InfluxDB 引擎将支持来自更广泛生态系统的庞大用户社区,这些生态系统使用 SQL(以及最终的 Pandas DataFrames)。
Dremio 和 Apache 生态系统
Dremio 是一个先进的数据湖仓平台,以其可扩展性和跨各种数据源直接查询的能力而闻名。它结合了各种开源技术,如 Apache Arrow、Apache Parquet、Apache Calcite 和 Apache Iceberg,以促进高效快速的数据分析。
Dremio 的 SQL 界面
Dremio 采用 Apache Calcite 作为其 SQL 界面,以解析和优化 SQL 查询。Apache Calcite 是一个动态开源框架,负责 SQL 解析、规划和查询优化。这种集成使 Dremio 能够为连接到 Dremio 的数据提供高度适应性和高效的 SQL 界面。
Dremio 的缓存层
此外,Apache Parquet 的有效存储和快速访问模式增强了 Dremio 的缓存层。Parquet 的列式数据存储允许更高的压缩和高效的 I/O,使其成为 Dremio 缓存层的理想格式。
Dremio 的数据处理
Apache Arrow 的标准列式内存中格式充当 Dremio 的内部数据表示形式。这种机制确保了系统之间快速无缝的数据传输,而无需序列化或反序列化。Arrow 优化的数据组织,加上其 SIMD 指令和内存映射,使 Dremio 能够利用现代 CPU 功能,从而提高数据处理效率和性能。
Apache Arrow Flight 的高速客户端-服务器框架促进了 Dremio 的快速数据传输。通过避免数据序列化或反序列化,Arrow Flight 避免了过多的数据复制,从而提高了 Dremio 的处理速度。Arrow Flight 的多语言支持和安全功能使其成为跨各种环境进行数据交换的可靠且通用的工具。
此外,Gandiva 是 Dremio 为 Arrow 开发的执行内核,它允许对优化的汇编代码进行即时编译,以快速执行低级操作,如排序和筛选。Dremio 将此功能集成到其 SQL 引擎中,以增强分析任务的性能。
Apache Arrow、Arrow Flight 和 Gandiva 的协同效应构成了 Dremio 数据处理效率的核心,巩固了其作为强大的开源湖仓平台的声誉。
Dremio 的数据反射功能
Dremio 的数据反射利用 Apache Iceberg 表来创建优化的数据表示。这些数据反射类似于索引和物化视图的混合,用于加速查询。反射经过适当的分区和排序以匹配查询访问模式,这允许高效的数据扫描和分区修剪。本质上,Apache Iceberg 和 Dremio 的 Sonar 查询引擎的结合显着提高了大型数据集的查询性能,使用了分区、修剪和排序的原则。
其他资源
要了解有关各种 InfluxDB 3.0 产品的更多信息,请访问以下链接。
要了解有关 Dremio 产品的更多信息,请访问以下链接。