Dremio Cloud 评论:AWS 上快速灵活的数据湖屋

数据仓库和数据湖都可以保存大量数据进行分析。您可能还记得,数据仓库包含经过整理的结构化数据,具有在写入数据时应用的预先设计的模式,需要大量 CPU、SSD 和 RAM 以提高速度,并且旨在供业务分析师使用。数据湖包含更多非结构化或结构化数据,最初以原始格式存储,通常使用廉价的旋转磁盘,在读取数据时应用模式,过滤和转换原始数据以供分析,并且旨在供使用最初由数据工程师和数据科学家提供,一旦数据经过整理,业务分析师就可以使用这些数据。
数据湖屋,例如本次审查的主题 Dremio,弥合了数据仓库和数据湖之间的差距。他们从数据湖开始,添加快速 SQL、更高效的列式存储格式、数据目录和分析。
Dremio 将其产品描述为一个数据湖屋平台,供了解和喜爱 SQL 的团队使用。

根据 Dremio 的说法,Snowflake、Azure Synapse 和 Amazon Redshift 等云数据仓库会产生锁定,因为数据在仓库内部。我不完全同意这一点,但我同意将大量数据从一个云系统转移到另一个云系统确实很困难。

同样根据 Dremio 的说法,Dremio 和 Spark 等云数据湖提供了更大的灵活性,因为数据存储在多个引擎可以使用的地方。这是真的。 Dremio 声称由此产生的三个优势:
Dremio 的竞争对手包括 Databricks Lakehouse Platform、Ahana Presto、Trino(以前称为 Presto SQL)、Amazon Athena 和开源 Apache Spark。不太直接的竞争对手是支持外部表的数据仓库,例如 Snowflake 和 Azure Synapse。
Dremio 将所有企业数据仓库描绘成他们的竞争对手,但我认为这是营销,如果不是真正的炒作的话。毕竟,数据湖和数据仓库满足不同的用例并服务于不同的用户,尽管数据湖屋至少部分地跨越了这两个类别。

Dremio 服务器软件是适用于 Linux 的 Java 数据湖库应用程序,可以部署在 Kubernetes 集群、AWS 和 Azure 上。 Dremio Cloud 基本上是作为 AWS 上的完全托管服务运行的 Dremio 服务器软件。

Dremio Cloud 的功能分为虚拟私有云(VPC)、Dremio 的和您的,如下图所示。 Dremio 的 VPC 充当控制平面。您的 VPC 充当执行平面。如果您在 Dremio Cloud 中使用多个云帐户,则每个 VPC 都充当一个执行平面。
执行平面拥有多个集群,称为计算引擎。控制平面使用 Sonar 查询引擎处理 SQL 查询,并通过引擎管理器发送它们,引擎管理器根据您的规则将它们分派到适当的计算引擎。

Dremio 声称具有“反射”的亚秒级响应时间,“反射”是源数据或查询的优化物化,类似于物化视图。得益于 Apache Arrow,一种标准化的面向列的内存格式,Dremio 声称其原始速度比 Trino(Presto SQL 引擎的一种实现)快 3 倍。 Dremio 还声称,在没有指定比较点的情况下,由于 SQL DML、dbt 和 Dremio 的语义层,数据工程师可以在很短的时间内摄取、转换和提供数据。
Dremio 本身没有商业智能、机器学习或深度学习功能,但它有支持 BI、ML 和 DL 软件的驱动程序和连接器,例如 Tableau、Power BI 和 Jupyter Notebooks。它还可以连接到 Lakehouse 存储和外部关系数据库中表中的数据源。

Dremio Cloud 分为两个 Amazon 虚拟私有云 (VPC)。 Dremio 的 VPC 托管控制平面,包括 SQL 处理。您的 VPC 托管包含计算引擎的执行平面。
Dremio Arctic 是 Apache Iceberg 的智能元存储,Apache Iceberg 是一种用于大型分析数据集的开放表格式,由原生 Apache Iceberg 目录 Nessie 提供支持。 Arctic 为 Hive Metastore 提供了一种现代的云原生替代方案,由 Dremio 提供永久免费服务。

Arctic 提供以下功能:
Dremio 的大部分性能和功能取决于所使用的磁盘和内存数据文件格式。
Apache Arrow 由 Dremio 创建并为开源做出了贡献,它为平面和分层数据定义了一种独立于语言的列式内存格式,组织起来用于在 CPU 和 GPU 等现代硬件上进行高效的分析操作。 Arrow 内存格式还支持零拷贝读取,以实现闪电般快速的数据访问,而无需序列化开销。
Gandiva 是 Apache Arrow 的基于 LLVM 的矢量化执行引擎。 Arrow Flight 在 Apache Arrow 上实现 RPC(远程过程调用),并建立在 gRPC 之上。 gRPC 是来自 Google 的现代、开源、高性能 RPC 框架,可以在任何环境中运行; gRPC 通常比 REST 消息传输快 7 到 10 倍。

Apache Iceberg 是一种用于大型分析表的高性能格式。 Iceberg 为大数据带来了 SQL 表的可靠性和简单性,同时使 Sonar、Spark、Trino、Flink、Presto、Hive 和 Impala 等引擎可以同时安全地处理相同的表。 Iceberg 支持灵活的 SQL 命令来合并新数据、更新现有行和执行有针对性的删除。

Apache Parquet 是一种开源的、面向列的数据文件格式,专为高效的数据存储和检索而设计。它提供高效的数据压缩和编码方案,具有增强的性能,可以批量处理复杂数据。
据 Dremio 介绍,Apache Iceberg 数据文件格式由 Netflix、Apple 和其他技术巨头创建,支持任何引擎的 INSERT/UPDATE/DELETE,在开源社区中势头强劲。相比之下,再次根据 Dremio 的说法,Delta Lake 数据文件格式是由 Databricks 创建的,当在 AWS 上的 Databricks 平台上运行时,支持使用 Spark 的 INSERT/UPDATE 和使用任何 SQL 查询引擎的 SELECT。
Dremio 指出了开源版本的 Delta Lake 和在 AWS 上的 Databricks 平台上运行的 Delta Lake 版本之间的一个重要技术差异。例如,有一个允许 Trino 读写开源 Delta Lake 文件的连接器,以及一个允许基于 Scala 和 Java 的项目(包括 Apache Flink、Apache Hive、Apache Beam 和 PrestoDB)读写的库开源 Delta Lake。但是,这些工具无法安全地写入 AWS 上 Databricks 平台上的 Delta Lake 文件。
除了源自所用文件格式的查询性能之外,Dremio 还可以使用柱状云缓存和数据反射来加速查询。
Columnar Cloud Cache (C3) 使 Dremio 通过使用内置于云计算实例(例如 Amazon EC2 和 Azure 虚拟机)中的 NVMe/SSD 在 Amazon S3、Azure Data Lake Storage 和 Google Cloud Storage 上实现 NVMe 级 I/O 性能. C3 仅缓存满足您的工作负载所需的数据,甚至可以缓存数据集中的单个微块。如果您的表有 1,000 列并且您只查询这些列的一个子集并过滤特定时间范围内的数据,那么 C3 将只缓存您的表的那部分。根据 Dremio 的说法,通过有选择地缓存数据,C3 还显着降低了云存储 I/O 成本,这可能占您运行的每个查询成本的 10% 到 15%。
Dremio 的列式云缓存 (C3) 功能通过使用云实例中的 NVMe SSD 缓存先前查询使用的数据来加速未来的查询。

数据反射支持亚秒级 BI 查询,无需在分析之前创建多维数据集和汇总。数据反射是一种数据结构,可以智能地预先计算聚合和其他数据操作,因此您不必即时进行复杂的聚合和向下钻取。反射对最终用户是完全透明的。用户无需连接到特定的具体化,而是查询所需的表和视图,Dremio 优化器会选择最佳反射来满足和加速查询。

Dremio 采用多引擎架构,因此您可以为组织中的各种工作负载创建多个大小合适、物理隔离的引擎。您可以轻松设置工作负载管理规则,将查询路由到您定义的引擎,这样您就不必再担心复杂的数据科学工作负载会阻止高管的仪表板加载。除了消除资源争用之外,引擎还可以快速调整大小以处理任何并发性和吞吐量的工作负载,并在您不运行查询时自动停止。
Dremio 引擎本质上是配置为执行程序的可扩展实例集群。规则有助于将查询分派到所需的引擎。

Dremio Cloud 入门指南涵盖
我不会向您展示本教程的每一步,因为您可以自己阅读并在自己的免费帐户中运行它。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627