Apache iceberg:Netflix 数据仓库的基石

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: Apache Iceberg 是一种用于跟踪超大规模表的新格式,是专门为对象存储(如S3)而设计的。 本文将介绍为什么 Netflix 需要构建 Iceberg,Apache Iceberg 的高层次设计,并会介绍那些能够更好地解决查询性能问题的细节。

image.png

Apache Iceberg 是一种用于跟踪超大规模表的新格式,是专门为对象存储(如S3)而设计的。 本文将介绍为什么 Netflix 需要构建 Iceberg,Apache Iceberg 的高层次设计,并会介绍那些能够更好地解决查询性能问题的细节。

本文由 Ryan Blue 分享,他在 Netflix 从事开源数据项目,是 Apache Iceberg 的最初创建者之一,也是 Apache Spark, Parquet, 以及 Avro 贡献者。

image.png

Apache Iceberg 是由 Netflix 开发开源的,其于 2018年11月16日进入 Apache 孵化器,是 Netflix 公司数据仓库基础。在功能上和我们熟悉的 Delta Lake 或者 Apache Hudi 类似,但各有优缺点。
任何东西的诞生都是有其背后的原因,那么为什么 Netflix 需要开发 Apache Iceberg?

image.png

在 Netflix,他们希望有更智能的处理引擎,比如有 CBO 优化,更好的 Join 实现,缓存结果集以及物化视图等功能。同时,他们也希望减少人工维护数据。
image.png

Netflix 面临的问题包括:1、不安全的操作随处可见;2、和对象存储交互有时候会出现很大的问题;3、无休止的可扩展性挑战。
为了解决这些问题,Iceberg 诞生了。那么 Iceberg 是什么?

image.png

iceberg 是一种可伸缩的表存储格式,内置了许多最佳实践。

image.png

什么?是一种存储格式?可使我们已经有 Parquet,Avro 以及 ORC 这些格式了,为什么还要设计一种新格式?

image.png
image.png

iceberg 允许我们在一个文件里面修改或者过滤数据;当然多个文件也支持这些操作。为了展示这点,我们来看看一张 Hive 表。

image.png

Hive 表的核心思想是把数据组织成目录树,如上所述。

image.png

如果我们需要过滤数据,可以在 where 里面添加分区相关的信息。

image.png

带来的问题是如果一张表有很多分区,我们需要使用 HMS(Hive MetaStore)来记录这些分区,同时底层的文件系统(比如 HDFS)仍然需要在每个分区里面记录这些分区数据。

image.png

这就导致我们需要在 HMS 和 文件系统里面同时保存一些状态信息;因为缺乏锁机制,所以对上面两个系统进行修改也不能保证原子性。

image.png

当然 Hive 这样维护表也不是没有好处。这种设计使得很多引擎(Hive、Spark、Presto、Flink、Pig)都支持读写 Hive 表,同时支持很多第三方工具。简单和透明使得 Hive 表变得不可或缺的。

image.png
image.png

Iceberg 的目标包括:1、成为静态数据交换的开放规范,维护一个清晰的格式规范,支持多语言,支持跨项目的需求等。

image.png

2、提升扩展性和可靠性。能够在一个节点上运行,也能在集群上运行。所有的修改都是原子性的,串行化隔离。原生支持云对象存储,支持多并发写。

image.png

3、修复持续的可用性问题,比如模式演进,分区隐藏,支持时间旅行、回滚等。

image.png

Iceberg 主要设计思想:记录表在所有时间的所有文件,和 Delta Lake 或 Apache Hudi 一样,支持 snapshot,其是表在某个时刻的完整文件列表。每一次写操作都会生成一个新的快照。

image.png

读取数据的时候使用当前的快照,Iceberg 使用乐观锁机制来创建新的快照,然后提交。

image.png

Iceberg 这么设计的好处是:

  • 所有的修改都是原子性的;
  • 没有耗时的文件系统操作;
  • 快照是索引好的,以便加速读取;
  • CBO metrics 信息是可靠的;
  • 更新支持版本,支持物化视图。

image.png

image.png

Iceberg 在 Netflix 生产环境维护着数十 PB 的数据,数百万个分区。对大表进行查询能够提供低延迟的响应。

image.png

生产环境中使用 Flink 管道在 3 个 AWS regions 写数据。Lift 服务将数据移到一个 region。Merge 服务对小文件进行合并。

image.png

可用性方面:回滚是家常便饭。

image.png

未来工作:1、支持 Spark 向量化以便实现快速的 bulk read,Presto 向量化已经支持。2、行级别的删除,支持 MERGE INTO 等。


推荐相关阅读:
[Data Lake 三剑客——Delta、Hudi、Iceberg 对比分析
](https://developer.aliyun.com/article/744920?spm=a2c6h.12873581.0.dArticle744920.592a3a183ThfM2&groupCode=apachespark)

本文转载自公众号:过往记忆大数据
原文链接:https://mp.weixin.qq.com/s/acWcoZ25zDXetA3ewypG2g


阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区近万人Spark技术同学在线提问答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!
image.png
对开源大数据和感兴趣的同学可以加小编微信(下图二维码,备注“进群”)进入技术交流微信群。
image.png

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
2月前
|
存储 分布式计算 分布式数据库
深入理解Apache HBase:构建大数据时代的基石
在大数据时代,数据的存储和管理成为了企业面临的一大挑战。随着数据量的急剧增长和数据结构的多样化,传统的关系型数据库(如RDBMS)逐渐显现出局限性。
336 12
|
1月前
|
存储 小程序 Apache
10月26日@杭州,飞轮科技 x 阿里云举办 Apache Doris Meetup,探索保险、游戏、制造及电信领域数据仓库建设实践
10月26日,由飞轮科技与阿里云联手发起的 Apache Doris 杭州站 Meetup 即将开启!
54 0
|
3月前
|
存储 数据挖掘 Apache
Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)
如何在 Docker 环境下快速搭建 Apache Doris + Apache Iceberg 测试 & 演示环境,并展示各功能的使用操作
Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)
|
4月前
|
SQL 存储 关系型数据库
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
数字化转型的浪潮中,高效准确的数据分析能够帮助雨润集团快速洞察市场动态、优化供应链管理、提高生产效率。雨润集团引入了 Apache Doris 构建了统一实时数据仓库,实现了计算效率提升 30 倍、存储资源节省 90%、成本降低超 100 万、人员效率提升 3 倍,为智能化、高效化转型指明了方向。
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
|
5月前
|
存储 运维 OLAP
抖音集团基于 SelectDB 内核 Apache Doris 的实时数据仓库实践
在直播、电商等业务场景中存在着大量实时数据,这些数据对业务发展至关重要。而在处理实时数据时,我们也遇到了诸多挑战,比如实时数据开发门槛高、运维成本高以及资源浪费等。
抖音集团基于 SelectDB 内核 Apache Doris 的实时数据仓库实践
|
6月前
|
SQL 大数据 BI
从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践
从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践
|
6月前
|
存储 关系型数据库 Apache
Apache Doris 实时数据仓库的构建与技术选型方案
Apache Doris 实时数据仓库的构建与技术选型方案
751 32
|
6月前
|
SQL 分布式计算 HIVE
最强指南!数据湖Apache Hudi、Iceberg、Delta环境搭建
最强指南!数据湖Apache Hudi、Iceberg、Delta环境搭建
284 0
|
SQL 分布式计算 资源调度
Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询
这篇教程将展示如何使用 Flink CDC + Iceberg + Doris 构建实时湖仓一体的联邦查询分析,Doris 1.1版本提供了Iceberg的支持,本文主要展示Doris和Iceberg怎么使用,同时本教程整个环境是都基于伪分布式环境搭建,大家按照步骤可以一步步完成。完整体验整个搭建操作的过程。
2434 1
|
消息中间件 传感器 分布式计算
「物联网架构」Apache-Kafka:物联网数据平台的基石
「物联网架构」Apache-Kafka:物联网数据平台的基石

推荐镜像

更多