摘要:今天分享的是Apache Iceberg在腾讯内部的探索和实践。本文结合腾讯大数据技术分享内容和2020全球软件开发大会分享内容进行整理,主要内容包括:
1、数据湖技术概述
2、Apache Iceberg的简介
3、腾讯为什么选择Apache Iceberg
4、腾讯看点万亿数据下的业务痛点
5、Apache Iceberg在看点实践
6、Apache Iceberg读写和删除
Apache Iceberg新一代数据湖技术
Apache Iceberg是一种新的表格格式,用于存储移动缓慢的大型表格数据。它旨在改进Hive、Trino和Spark中内置的事实上的标准表布局。
一、数据湖技术概述
数据湖产生的背景:
随着大数据存储和处理需求越来越多样化,如何构建一个统一的存储,并在其上进行多种形式的数据分析,成了企业构建大数据生态的一个重要方向。如何快速、一致、原子性地在存储上构建起 Data Pipeline,成了亟待解决的问题。为此,Uber 开源了 Apache Hudi,Databricks 提出了 Delta Lake,而 Netflix 则发起了 Apache Iceberg 项目。一时间这种具备 ACID 能力的表格式中间件成为了大数据、数据湖领域炙手可热的方向。
腾讯在 2019 年开始投入研发 Apache Iceberg,阿里巴巴也联合 Apache Iceberg 社区积极推动 Flink 实时数据湖技术方案的落地。
那么Apache Iceberg有什么独到之处呢,受到国内两家互联网巨头的青睐?本文跟大家慢慢道来,感兴趣的读者可以关注、收藏哦。
计算引擎之下、存储之上:
数据库大牛、图灵奖获得者 Michael Stonebraker 曾在 MapReduce 诞生之初撰写过一篇文章,题为“MapReduce: A major step backwards”。Michael Stonebraker 在文章中直截了当地指出:MapReduce 忽视了数据库领域积累超过 40 年的技术经验。
虽然大数据技术的出现和迭代降低了用户处理海量数据的门槛,但另一方面,与数据库这样高度优化的技术相比,大数据技术的抽象和实现还是太原始和初级。因此大数据技术在后续十几年的发展中,一直以数据库为目标,将更多数据库的成熟技术和理念借鉴到大数据中。
如何定义这类新技术:
简单地说,这类新技术是介于上层计算引擎和底层存储格式之间的一个中间层,我们可以把它定义成一种“数据组织格式”。
Iceberg 将其称之为“表格式”,也是表达类似的含义。它与底层的存储格式(比如 ORC、Parquet 之类的列式存储格式)最大的区别是,它并不定义数据存储方式,而是定义了数据、元数据的组织方式,向上提供统一的“表”的语义。它构建在数据存储格式之上,其底层的数据存储仍然使用 Parquet、ORC 等进行存储。
数据湖技术总结:
主要思想:对所有数据统一存储,通过计算能够生成符合要求的各种数据
物理实现:数据存储平台
实现方式:通常基于Hadoop生态,但不仅限于Hadoop
粗暴理解:数据仓库HIVE
数据湖技术的发展及问题:
计算引擎发展:
HIVE on MR → Spark、Presto、Impala
存储格式发展:
Text、RCFile → ORCFile、Parquet
存在问题:
数据读写没有ACID保证
数据没有版本控制
无法高效Update/Delete
分区管理不灵活
二、Apache Iceberg简介
简介:
Apache Iceberg 由Netflix 发起,现已开源到Apache,作为新一代的存储正在飞速的发展中,目前最新版本为V1.0。
Apache Iceberg是一种新的表格格式,用于存储移动缓慢的大型表格数据。它旨在改进Hive、Trino和Spark中内置的事实上的标准表布局。
可靠性、性能:
Iceberg 是