Iceberg是一种开放的数据湖表格式。您可以借助Iceberg快速地在HDFS或者阿里云OSS上构建自己的数据湖存储服务,并借助开源大数据生态的Spark、Flink、Hive和Presto等计算引擎来实现数据湖的分析。
1:iceberg解决的问题
1.1lambda架构优缺点
- lambda架构解决了流批一体的构造方式
- lambda架构支持了实时数据处理的同时又依靠离线数仓保证了数据的一致性
- lambda架构因保留了两套体系导致数据存在冗余加大了存储压力
- lambda架构因其特殊性导致了开发成本的提高
1.2kappa架构优缺点
- kappa架构剔除了传统的离线数仓改用了实时数仓减少了数据的存储
- kappa架构支持了流数据处理可以保证数据的及时性
- kappa架构不够灵活无法确定数据的血缘分析无法准确定位到错误
- kappa架构无法支持及时查询(不支持sql)如果想及时的获取数据可能需要编写flink接口
2:iceberg是什么
Apache Iceberg is an open table format for huge analytic datasets. Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala using a high-performance table format that works just like a SQL table.
注官网:Introduction
翻译:Apache Iceberg是一种用于大型分析数据集的开放表格式。Iceberg使用与SQL表类似的高性能表格式,为包括Spark、Trino、PrestoDB、Flink、Hive和Impala在内的计算引擎添加表。
起初iceberg给我的认知是一套存储系统但是在了解后发现iceberg类似于一种文本存储格式可以快速的定位到文件的位置方便我们查询和使用
2.1iceberg的优势
- iceberg是一种数据湖的解决方案
- iceberg单表可以支持pb级别的数据量
- 支持实时/批量的数据读取和写入(得益于其快速的检索能力)
- 支持sql敏捷开发
个人理解为iceberg更像是封装在底层hdfs系统之上,支持hive,spark,flink等多种工具的纽带,它以其独特的数据存储格式保障了传统离线数仓实时性的缺失,更支持了对数据的增删改等操作并且还友好的支持各种结构化非结构化(视频音频)等更多数据类型的存储和支持,真正做到了可以让企业的数据得倒充分的存储和利用。
2.2存储结构分析
2.3依据数据湖而衍生得来的数仓解决方案
基于iceberg的数仓建设方案,有效的继承了kappa框架和lambda的优势集于一身,而且整个数仓变得更加灵活,数据的存储和实时性得到了保障而且避免了重复开发和运维成本