1 前言 HIVE的缺陷
Hive的元数据依赖一个外部的MySQL和HDFS文件系统,通过MySQL找到相关的parition之后,需要为每个partition去HDFS文件系统上按照分区做目录的list操作。在文件量大的情况下,这是一个非常耗时的操作。

同时,由于元数据分属MySQL和HDFS管理,写入操作本身的原子性难以保证。即使在开启Hive ACID情况下,仍有很多细小场景无法保证原子性。另外,Hive Metastore没有文件级别的统计信息,这使得filter只能下推到partition级别,而无法下推到文件级别,对上层分析性能损耗无可避免。

在处理数据的时候 hive对数据的变化没有相应的管理, 数据的合并的抽取需要使用拉链表操作,操作相对比较复杂 !

虽然目前从功能上看不如前面两者丰富,但由于它牢固坚实的底层设计,一旦功能补齐,将成为一个非常有潜力的开源数据湖方案。

当前大数据发展的三大趋势:

数据仓库往数据湖方向发展

批处理往流式处理发展

本地部署往云模式发展

数据湖简介
数据湖应该具备以下功能

同时支持流批处理

支持数据更新

支持事务(ACID)

可扩展的元数据

数据质量保障

支持多种存储引擎

支持多种计算引擎

Apache Iceberg 原理介绍

Apache Iceberg 是一种用于跟踪超大规模表的新格式,是专门为对象存储(如S3)而设计的。其核心思想:在时间轴上跟踪表的所有变化。

快照(snapshot)表示表数据文件的一个完整集合

每次更新操作会生成一个新的快照。

Iceberg的优点

优化数据入库流程:Iceberg 提供 ACID 事务能力,上游数据写入即可见,不影响当前数据处理任务,这大大简化了 ETL;Iceberg 提供了 upsert、merge into 能力,可以极大地缩小数据入库延迟;

支持更多的分析引擎:优秀的内核抽象使之不绑定特定的计算引擎,目前 Iceberg 支持的计算引擎有 Spark、Flink、Presto 以及 Hive。

统一数据存储和灵活的文件组织:提供了基于流式的增量计算模型和基于批处理的全量表计算模型。批处理和流任务可以使用相同的存储模型,数据不再孤立;Iceberg 支持隐藏分区和分区进化,方便业务进行数据分区策略更新。支持 Parquet、Avro 以及 ORC 等存储格式。

增量读取处理能力:Iceberg 支持通过流式方式读取增量数据,支持 Structed Streaming 以及 Flink table Source

Iceberg 的快照设计方式,主要包括快照隔离以及对于文件列表的所有修改都是原子操作。

元数据组织包括:

实现基于快照的跟踪方式;

表的元数据是不可修改的,并且始终向前迭代;

当前的快照可以回退。

没有使用数据湖技术,我们需要很多组件来保证 exactly-once 语义。并且利用 HDFS 的 rename 操作的原子性和复杂的命名规则来保证一致性、可见性。利用调度引擎来构建依赖关系,从而避免读写冲突。

上面架构存在的问题:架构比较复杂,需要不同组件之间的协调;架构的复杂会进一步导致数据的延迟。exactly-once 语义保证比较复杂,增加了运维的难度。

有了 Iceberg 之后,整体架构简单了,而且通过简单的架构即可实现原子语义。Iceberg 格式的数据直接可以使用 Hive、Spark 来读取;同时,Iceberg 支持读写分区,写入并且 commit 的数据下游系统立即可以使用,降低系统的整体延迟。

同时,Iceberg 技术还催生了新的架构,也就是 CDC 架构。其相比传统的架构而言整体系统架构更加简洁,端到端的延迟大大降低,而且支持 ACID 事务能力。

————————————————
版权声明:本文为CSDN博主「白眼黑刺猬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37933018/article/details/110230440

数据湖之iceberg系列(一)iceberg能做什么相关推荐

  1. 数据湖之iceberg系列(三)iceberg快速入门

    1 环境准备 准备大数据集群 .安装HDFS ,HIVE,SAPRK ,FLINK 下载运行集群环境运行是需要的jar包 下载地址:http://iceberg.apache.org/releases ...

  2. 数据湖(八):Iceberg数据存储格式

    文章目录 Iceberg数据存储格式 一.​​​​​​​Iceberg术语 二.​​​​​​​表格式Table Format <

  3. 数据湖(九):Iceberg特点详述和数据类型

    文章目录 Iceberg特点详述和数据类型 一.Iceberg特点详述

  4. 数据湖YYDS! Flink+IceBerg实时数据湖实践

    点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 数据湖的前世今生 互联网技术发展的当下,数据是各大公司最宝贵的资源之一已经是不争的事实.收据的收集 ...

  5. Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

    简介:数据湖的架构中,CDC 数据实时读写的方案和原理 本文由李劲松.胡争分享,社区志愿者杨伟海.李培殿整理.主要介绍在数据湖的架构中,CDC 数据实时读写的方案和原理.文章主要分为 4 个部分内容: ...

  6. 数据湖技术 Iceberg 的探索与实践

    随着大数据存储和处理需求的多样化,如何构建一个统一的数据湖存储,并在其上进行多种形式的数据分析成了企业构建大数据生态的一个重要方向.Netflix 发起的 Apache Iceberg 项目具备 AC ...

  7. 开源数据湖方案选型:Hudi、Delta、Iceberg深度对比

    文章目录 前言: 共同点 一.Databricks 和 Delta 1.1.Delta的意图,解决的疼点 1.没有 Delta 数据湖之前存在的问题 : 二.Uber和Apache Hudi 三.Ne ...

  8. 数据湖在大数据场景下应用和实施方案调研笔记(增强版)

    点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 在读本文前你应该看过这些: <我看好数据湖的未来,但不看好数据湖的现在> <数据 ...

  9. 到底什么是数据湖?全面解读数据湖的缘起、特征、技术、案例和趋势

    正文开始 本文有1.5万字,预计阅读30分钟,可以先收藏 数据湖近几年迅速蹿红,今天笔者做一个综述,包括数据湖的缘起.数据湖的定义.数据湖的特征.数据湖的技术.数据湖的趋势和数据湖的案例六大部分,如果 ...

最新文章

  1. 一种注册表沙箱的思路、实现
  2. [20170914]tnsnames.ora的管理.txt
  3. 01 小程序开发入门
  4. bzoj 2653 middle (可持久化线段树)
  5. 经典mysql数据库表案例_MySQL数据库的“十宗罪”(附10大经典错误案例)
  6. tideways+xhgui搭建php 7的性能测试环境
  7. 循环神经网络应用案例
  8. 教你用1行Python代码制作动态二维码
  9. 基础008_定浮点转化[floating point IP]
  10. Google Earth Engine(GEE)——中国区域NOAA数据风速代码下载
  11. Emmagee——Android性能测试工具
  12. 17讲项目实战签证页面
  13. 软件工程 软件质量模型(ISO/IEC 9126)
  14. 提高 Python 代码的可读性,你需要知道这10个技巧
  15. Chinese-LLaMA-Alpaca:优秀的开源中文语言模型预训练工具
  16. 2026年中国大数据总体市场规模将超359亿美元
  17. java狐妖外传,月华凌乱——狐不归外传
  18. (荐)跟我学SpringMVC目录汇总贴、PDF下载、源码下载
  19. Microsoft Office 2010 Starter
  20. C语言网——【求[X,Y]内被除3余1并且被除5余3的整数的和】

热门文章

  1. 重庆市计算机二级证丢失,重庆计算机二级证书丢了怎么办
  2. 华硕计算机用户名默认,华硕路由器后台默认网址是多少
  3. python之简单爬虫(爬取豆瓣出版社)
  4. java中Robot
  5. 问题合集 ------- 用 Eclipse 平台进行 C/C++ 开发
  6. activity5.1初始密码
  7. linux 抓包文件 导出,tcpdump抓包和scp导出以及Wireshark查看
  8. 微信小程序 RTMP 音视频 通话 ffmpeg_音视频常见问题分析和解决:HLS切片丢帧引起的视频卡顿问题排查...
  9. ubuntu 20 安装vnc_Windows 远程控制 Ubuntu 系统
  10. c语言常量的正确表示const,C语言中的const和free用法详解