在最近几年由于大数据的火爆,企业级的数据呈现爆炸式的增长,在整个大数据的发展过程中经历了大致3个阶段:
第一个阶段,企业慢慢向大数据转型,出现了像hadoop这样的底层大数据存储,同时由于hadoop自带分布式计算框架,能满足企业对于大数据的存储和分析。此时hadoop奠定了大数据的基础。 第二个阶段,企业的数据越来越多,用户要求查询必须要短时间内返回,慢慢的hadoop让出了大数据基础的地位,此时数仓慢慢的变成了大数据的主流解决方案。 第三个阶段,企业不再满足对于数据进行预定义的分析,而是要求要有原始数据分析,因此慢慢的数据湖的概念就出现了。
数据湖的出现,其实主要满足的是对于企业原始数据加以存储和分析的赋能,数据湖的存储不再满足于支持结构化和半结构化的数据存储,而是完全的支持:
结构化数据 半结构化数据 非结构化数据
所以在大众看来,只要是数据都可以存储,都可以用来做数据分析。最终实现企业最大化的利用数据发挥价值的功能。
介绍了数据湖,那么下面我们介绍下数据湖的特点:
1、支持非结构化和半结构化数据。 2、可扩展到 PB 及以上级规模。 3、使用类 SQL 的接口与存储的数据交互。 4、能够尽可能无缝地连接各种分析工具。 5、最后,现代数据湖通常是解耦存储和分析工具的组合。
目前比较流行的数据湖解决方案有:
一、Delta Lake
Delta Lake 是一个将 ACID 事务引入 Apache Spark 的开源平台。Delta Lake 是由 Databricks 开发的,可运行在现有的存储平台(S3、HDFS、Azure)之上,并且完全兼容 Apache Spark API。Delta Lake的主要特点有:
1、Spark 上的 ACID 事务:可序列化的隔离级别确保用户读取数据时永远不会看到不一致的数据。Delta Lake 允许在现有的数据湖之上添加事务层。既然在它之上有了事务事务,就可以确保拥有可靠、高质量的数据,并且可以对其进行各种计算。 2、可扩展的元数据处理:利用 Spark 的分布式处理能力,轻松处理具有数十亿个文件的 PB 级规模的表的所有元数据。 3、流和批处理的统一:Delta Lake 中的一个表是一个批处理表,同时也是一个流源和 sink。流数据摄入、批量历史回填、交互式查询都是开箱即用的。 4、模式强制:自动处理模式演变,以防止在摄入期间插入坏记录。 5、时间旅行:数据版本化功能,使用户能够关注特定的时间点,支持回滚、完整的历史审计跟踪和可重复的机器学习实验。 6、upsert 和 delete:支持 merge、update 和 delete 操作,以支持复杂的使用,如 change-data-capture,slowly-changing-dimension (SCD)操作、流更新,等等。
二、Apache Iceberg
Apache Iceberg 是一种用于大型分析数据集的开放表格格式。Iceberg 向 Presto 和 Spark 添加了使用高性能格式的表,其工作方式与 SQL 表类似。Iceberg 的重点是避免不愉快的意外,帮助模式演化和避免无意的数据删除。用户不需要了解分区就可以获得快速查询。Apache Iceberg的主要特点有:
1、模式演化支持添加、删除、更新或重命名,并且没有副作用。 2、隐藏分区可以防止用户错误导致不正确的结果或非常慢的查询。 3、分区布局演化可以在数据卷或查询模式更改时更新表的布局。 4、时间旅行支持使用完全相同的表快照的可重复查询,或者让用户轻松地检查更改。 5、版本回滚允许用户通过将表重新设置为良好状态来快速纠正问题。
三、Apache Hive
Apache Hive 数据仓库软件已经出现一段时间了。随着新的挑战的出现,Hive 现在正试图解决一致性和可用性问题。它方便了使用 SQL 读取、写入和管理分布存储中的大型数据集。结构可以投射到存储中已经存在的数据上。使用hive的场景有:
1、数据流摄取:使用 Apache Flume、Apache Storm 或 Apache Kafka 等工具将数据流传输到 Hadoop集群中。虽然这些工具可以以每秒数百行或更多行的速度写入数据,但 Hive 只能每 15 分钟到1 小时添加一次分区。添加分区通常会很快导致表中分区数量过多。这些工具可以将数据流传输到现有的分区中,但这会导致读取器进行脏读(即,在开始查询之后会看到写入的数据),并在目录中留下许多小文件,从而对 NameNode 造成压力。Hive 现在支持这样的场景,即允许读取器获得一致的数据视图,并避免过多的文件。 2、缓慢变化的维度(SCD):在典型的星型模式数据仓库中,维度表会随着时间缓慢变化。这些更改导致插入单个记录或更新记录(取决于所选择的策略)。Hive 从 0.14 开始就能够支持这一功能。 3、数据重申:有时收集的数据被发现是不正确的,需要纠正。从 Hive 0.14 开始,可以通过 INSERT、UPDATE 和 DELETE 来支持这些用例。 4、使用 SQL MERGE 语句进行批量更新。
基于上诉主流的三种数据湖解决方案的对比信息如下:
序号 | 平台 | 支持的分析工具 | 文件格式 | 回滚 | 压缩和清理 | 时间旅行 |
1 | Delta Lake | Apache Spark | Parquet | 支持 | 支持,手动处理 | 支持 |
2 | Apache Iceberg | Apache Spark,Presto | Parquet,ORC | 支持 | 不支持 | 支持 |
3 | Apche Hive | Apache Spark,Hive | ORC | 不支持 | 手动 & 自动处理 | 不支持 |
还没有评论,来说两句吧...