InfluxData和Dremio如何利用Apache生态系统
作者:Anais Dotis-Georgiou / 产品
2023年9月11日
导航到
InfluxData和Dremio始终站在拥抱开源解决方案的前沿,以增强其产品服务。本文讨论了这两家公司如何目前利用Apache生态系统,并描述了这些强大的技术对其产品服务的影响。
InfluxData创建了并维护InfluxDB,这是一个时间序列平台。用户利用InfluxDB 3.0进行各种用例和行业的应用,包括物联网监控、DevOps监控、金融科技、AggTech、制造等。
Dremio是一个开源的数据即服务平台,旨在简化并加速数据分析。它允许业务用户以自助服务的方式整理和分析他们的数据,用于商业智能(BI)和其他用例。
Apache基金会的优势
两家公司都是Apache软件基金会(ASF)的成员,为更广泛的技术和开源社区提供了显著的好处。
-
开源软件:Apache基金会是最大的开源软件中心之一。开源项目允许开发者修改、分发和研究源代码,这可以导致更快的创新、更安全、高质量的代码以及更高的定制程度。
-
广泛的工程项目:Apache基金会托管了数百个涵盖各个领域的工程项目。这一多样的项目范围使开发者和组织能够找到满足其特定需求的技术工具。
-
社区驱动的开发:社区志愿者开发Apache项目。这种协作开发模式可以带来更全面和创新的软件解决方案,因为来自世界各地的开发者可以贡献不同的视角和技能。
-
稳定可靠:由于其开发过程中的协作性和严格的审查流程,Apache许可证下的软件通常更加稳定和可靠。
-
商业友好的许可证:Apache许可证被认为是商业友好的许可证之一。它允许用户为任何目的使用软件,分发它,修改它,并按照许可证条款分发软件的修改版本,即使是为了商业目的。此外,该许可证不需要将衍生作品以相同的许可证分发。
-
推广标准:Apache项目通常成为各自领域的既定标准,促进互操作性,减少软件行业的碎片化。
-
导师计划和孵化器项目:Apache基金会运营一个孵化器项目,帮助新项目发展成为成功的Apache顶级项目。这为希望启动新项目的开发者提供指导和资源,进一步促进开源世界的创新和增长。
Apache软件基金会(ASF)在推广开源软件、培养创新和制定行业标准方面发挥着重要作用,这些都有利于整个软件开发社区,从个人开发者到像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 支持针对 Parquet 文件的逻辑查询计划、查询优化和执行引擎的 SQL 和 DataFrame API。InfluxDB 3.0 支持此数据生态系统(Arrow、Parquet 和 Flight)中的 SQL 查询。Parquet 能够实现互操作性,因为许多最流行的语言,如 C++、Python 和 Java,在 Arrow 项目中提供了一等支持,用于读取和写入 Parquet 文件。我个人对 Python 的支持感到非常兴奋。在未来,您将能够直接从 InfluxDB 查询 Parquet 文件,并将它们 转换为 Pandas DataFrame,反之亦然。这意味着 InfluxDB 可以与其他支持 Parquet 的工具(如 Tableau、PowerBI、Athena、Snowflake、DataBricks、Spark 等)互操作。目前,您可以使用 InfluxDB 3.0 Python 客户端库 查询 InfluxDB 3.0 并返回 Pandas DataFrame。
Arrow Flight 是一个“用于简化通过网络接口传输大量数据集的通用客户端-服务器框架。”它使用户能够使用 SQL 查询 InfluxDB 3.0,从而降低了采用门槛,并让开发者能够专注于从数据中获取洞察,而不是编写查询。有关如何使用 Arrow Flight SQL 客户端直接查询 InfluxDB 3.0 的示例,请参阅此 仓库。
DataFusion 是一个“可扩展的查询执行框架,用 Rust 编写,使用 Apache Arrow 作为其内存格式。”DataFusion 用于执行逻辑查询计划、优化查询,并作为能够使用线程进行并行化的执行引擎。许多不同的项目和产品使用 DataFusion,它有一个充满活力的贡献者社区,他们添加了广泛的 SQL 支持和复杂的查询优化。DataFusion 支持兼容 Postgres 的 SQL 和 DataFrame API。这意味着新的 InfluxDB 引擎将支持来自更广泛生态系统的 SQL(以及最终 Pandas DataFrame)的大型用户群体。
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 的多语言支持和安全特性使其成为在各种环境中进行数据交换的可靠且通用的工具。
此外,Dremio 为 Arrow 开发的执行内核 Gandiva,能够实现针对低级操作(如排序和过滤)的优化汇编代码的即时编译,从而加快执行速度。Dremio 将这一特性集成到其 SQL 引擎中,以提升分析任务性能。
Apache Arrow、Arrow Flight 和 Gandiva 的协同效应构成了 Dremio 数据处理效率的核心,进一步加强了其在强大开源湖仓平台中的声誉。
Dremio 的数据反射功能
Dremio 的数据反射利用 Apache Iceberg 表创建优化的数据表示。这些数据反射类似于索引和物化视图的混合体,用于加速查询。反射被适当地分区和排序,以匹配查询访问模式,从而实现高效的数据扫描和分区剪枝。本质上,Apache Iceberg 与 Dremio 的 Sonar 查询引擎的结合,显著提高了大数据集的查询性能,采用了分区、剪枝和排序的原则。
更多资源
要了解更多关于 InfluxDB 3.0 产品的信息,请访问以下链接:链接。
要了解更多关于 Dremio 产品的信息,请访问以下链接:链接。