当前位置:网站首页>数据湖(七):Iceberg概念及回顾什么是数据湖
数据湖(七):Iceberg概念及回顾什么是数据湖
2022-07-05 12:44:00 【51CTO】
Iceberg概念及回顾什么是数据湖
一、回顾什么是数据湖
数据湖是一个集中式的存储库,允许你以任意规模存储多个来源、所有结构化和非结构化数据,可以按照原样存储数据,无需对数据进行结构化处理,并运行不同类型的分析,对数据进行加工,例如:大数据处理、实时分析、机器学习,以指导做出更好地决策。
二、大数据为什么需要数据湖
当前基于Hive的离线数据仓库已经非常成熟,在传统的离线数据仓库中对记录级别的数据进行更新是非常麻烦的,需要对待更新的数据所属的整个分区,甚至是整个表进行全面覆盖才行,由于离线数仓多级逐层加工的架构设计,数据更新时也需要从贴源层开始逐层反应到后续的派生表中去。
随着实时计算引擎的不断发展以及业务对于实时报表的产出需求不断膨胀,业界最近几年就一直聚焦并探索于实时数仓建设。根据数仓架构演变过程,在Lambda架构中含有离线处理与实时处理两条链路,其架构图如下:
编辑
正是由于两条链路处理数据导致数据不一致等一些列问题所以才有了Kappa架构,Kappa架构如下:
编辑
Kappa架构可以称为真正的实时数仓,目前在业界最常用实现就是Flink + Kafka,然而基于Kafka+Flink的实时数仓方案也有几个非常明显的缺陷,所以在目前很多企业中实时数仓构建中经常使用混合架构,没有实现所有业务都采用Kappa架构中实时处理实现。Kappa架构缺陷如下:
- Kafka无法支持海量数据存储。对于海量数据量的业务线来说,Kafka一般只能存储非常短时间的数据,比如最近一周,甚至最近一天。
- Kafka无法支持高效的OLAP查询,大多数业务都希望能在DWD\DWS层支持即席查询的,但是Kafka无法非常友好地支持这样的需求。
- 无法复用目前已经非常成熟的基于离线数仓的数据血缘、数据质量管理体系。需要重新实现一套数据血缘、数据质量管理体系。
- Kafka不支持update/upsert,目前Kafka仅支持append。
为了解决Kappa架构的痛点问题,业界最主流是采用“批流一体”方式,这里批流一体可以理解为批和流使用SQL同一处理,也可以理解为处理框架的统一,例如:Spark、Flink,但这里更重要指的是存储层上的统一,只要存储层面上做到“批流一体”就可以解决以上Kappa遇到的各种问题。数据湖技术可以很好的实现存储层面上的“批流一体”,这就是为什么大数据中需要数据湖的原因。
三、Iceberg概念及特点
1、概念
Apache Iceberg是一种用于大型数据分析场景的开放表格式(Table Format)。Iceberg使用一种类似于SQL表的高性能表格式,Iceberg格式表单表可以存储数十PB数据,适配Spark、Trino、PrestoDB、Flink和Hive等计算引擎提供高性能的读写和元数据管理功能,Iceberg是一种数据湖解决方案。
注意:Trino就是原来的PrestoSQL ,2020年12月27日,PrestoSQL 项目更名为Trino,Presto分成两大分支:PrestoDB、PrestorSQL。
2、特点
Iceberg非常轻量级,可以作为lib与Spark、Flink进行集成
Iceberg官网: https://iceberg.apache.org/
Iceberg具备以下特点:
- Iceberg支持实时/批量数据写入和读取,支持Spark/Flink计算引擎。
- Iceberg支持事务ACID,支持添加、删除、更新数据。
- 不绑定任何底层存储,支持Parquet、ORC、Avro格式兼容行存储和列存储。
- Iceberg支持隐藏分区和分区变更,方便业务进行数据分区策略。
- Iceberg支持快照数据重复查询,具备版本回滚功能。
- Iceberg扫描计划很快,读取表或者查询文件可以不需要分布式SQL引擎。
- Iceberg通过表元数据来对查询进行高效过滤。
- 基于乐观锁的并发支持,提供多线程并发写入能力并保证数据线性一致。
边栏推荐
- Compilation principle reading notes (1/12)
- Hiengine: comparable to the local cloud native memory database engine
- Yyds dry goods inventory # solve the real problem of famous enterprises: move the round table
- RHCSA1
- 深度长文探讨Join运算的简化和提速
- RHCSA3
- SAP self-development records user login logs and other information
- Principle and performance analysis of lepton lossless compression
- Kotlin process control and circulation
- 解决uni-app配置页面、tabBar无效问题
猜你喜欢
【云原生】Nacos-TaskManager 任务管理的使用
LeetCode20.有效的括号
SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子
CVPR 2022 | single step 3D target recognizer based on sparse transformer
A few years ago, I outsourced for four years. Qiu Zhao felt that life was like this
研究:数据安全工具在 60% 的情况下无法抵御勒索软件
SAP UI5 ObjectPageLayout 控件使用方法分享
Transactions from January 14 to 19, 2022
潘多拉 IOT 开发板学习(HAL 库)—— 实验7 窗口看门狗实验(学习笔记)
Transactions on December 23, 2021
随机推荐
Run, open circuit
Insmod prompt invalid module format
关于 SAP UI5 floating footer 显示与否的单步调试以及使用 SAP UI5 的收益
Laravel document reading notes -mews/captcha use (verification code function)
Taobao product details API | get baby SKU, main map, evaluation and other API interfaces
#yyds干货盘点# 解决名企真题:搬圆桌
我在滴滴做开源
Leetcode20. Valid parentheses
Detailed explanation of navigation component of openharmony application development
Taobao short videos are automatically released in batches without manual RPA open source
RHCSA5
奔跑,开路
国内市场上的BI软件,到底有啥区别
Halcon template matching actual code (I)
Difference between JUnit theories and parameterized tests
函数传递参数小案例
From the perspective of technology and risk control, it is analyzed that wechat Alipay restricts the remote collection of personal collection code
Introduction to the principle of DNS
自然语言处理从小白到精通(四):用机器学习做中文邮件内容分类
OpenHarmony应用开发之Navigation组件详解