面试官居然问应届生数据湖架构

一、前言

上次有个同学跟我说字节面试居然问他懂不懂数据湖,现在大数据找工作已经卷到这种地步了吗

今天就来跟大家聊一聊数据湖

首先弄清楚数据湖是什么?

数据湖是一个集中式存储库,允许存储所有结构化和非结构化数据

这时候就会有人问,和数据仓库有什么区别?

即便说了这么多,可能你还是对数据湖的概念很模糊

那么我们来看一下数据仓库的问题:

  1. 我们只能增加字段,很难去下线一个字段,真的要下线某一个字段,风险非常高
  2. 数据更新的底层是把整个表的数据重新生成一遍,再覆盖掉历史数据,成本非常高
  3. 增删改没有事务性保障,而在传统的数据库中有成熟的一致性解决方案
  4. 索引功能是有限的,一般很少建立索引,3.0版本已经没有索引了
  5. 无法满足算法人员对数据的所有诉求,比如在机器学习场景中,需要一些文本、语音、视频等非结构化数据
  6. 流批一体开发周期长,当下最流行的流批一体开发模式是基于lambda架构的,这种模式需要同时进行离线和实时的单独开发。

数据湖的提出正好解决了上述大部分问题,数据湖主要有以下特性

  1. 能够存储海量的原始数据
  2. 能够支持任意数据格式的数据
  3. 有较好的分析和处理能力

目前数据湖的相关产品主要有 Delta Lake、Apache Iceberg和Apache Hudi

下面我分别介绍一下这三个数据湖的关键特性:

Delta Lake

1、ACID事务:通过不同等级的隔离策略,Delta Lake 支持多个 pipeline 的并发读写;

2、数据版本管理:Delta Lake 通过 Snapshot 等来管理、审计数据及元数据的版本,并进而支持 time-travel 的方式查询历史版本数据或回溯到历史版本;

3、开源文件格式:Delta Lake 通过 parquet 格式来存储数据,以此来实现高性能的压缩等特性;

4、批流一体:Delta Lake 支持数据的批量和流式读写;

5、元数据演化:Delta Lake 允许用户合并 schema 或重写 schema,以适应不同时期数据结构的变更;

6、丰富的DML:Delta Lake 支持 Upsert,Delete 及 Merge 来适应不同场景下用户的使用需求,比如 CDC 场景;

Apache Iceberg

1、格式演变:支持添加,删除,更新或重命名,并且没有副作用

2、隐藏分区:可以防止导致错误提示或非常慢查询的用户错误

3、分区布局演变:可以随着数据量或查询模式的变化而更新表的布局

4、快照控制:可实现使用完全相同的表快照的可重复查询,或者使用户轻松检查更改

5、版本回滚:使用户可以通过将表重置为良好状态来快速纠正问题

6、快速扫描数据:无需使用分布式SQL引擎即可读取表或查找文件

7、数据修剪优化 :使用表元数据使用分区和列级统计信息修剪数据文件

8、支持事务 :序列化隔离,表更改是原子性的,读取操作永远不会看到部分更改或未提交的更改

9、高并发:高并发写入使用乐观并发,即使写入冲突,也会重试以确保兼容更新成功

Apache Hudi

1、使用快速、可插入的索引进行更新、删除

2、增量查询,记录级别更改流

3、事务、回滚、并发控制

4、自动调整文件大小、数据集群、压缩、清理

5、用于可扩展存储访问的内置元数据跟踪

6、式摄取、内置 CDC 源和工具

7、支持 Spark、Presto、Trino、Hive 等的 SQL 读/写

8、向后兼容的模式演变和实施

有了数据湖之后,ETL有了一定的变化:

  1. 离线TB级的作业数据有问题,要修复数据,只需要delete或者update一下就可以了
  2. 数据增加字段问题,数据可以躺在那,需要的时候自己给schema
  3. 流批一体的环境构建数仓,链路变的简化了,核心思想就是我们使用统一的Delta Lake来做数据的中转。

那么这时候有人会问:数据湖能否替代数仓呢?

数据湖和数仓的关系,其实是一种相互补充的关系,生产落地的场景数据湖会作为上游存在,然后接入数仓,这也就是常说的湖仓一体。

那么再聊一下,湖仓一体具体是什么呢?

湖仓一体是一种新的数据管理模式,将数据仓库和数据湖的价值进行叠加,让湖中的数据可以流到数据仓库中;而数据仓库中的数据也可以保存于数据湖中,供数据挖掘时可以使用。通过将数据仓库和数据湖两者之间的差异进行融合,并将数据仓库构建在数据湖上,从而有效简化了企业数据的基础架构,提升数据存储弹性和质量的同时还能降低成本,减小数据冗余。

二、面试总结

看过前言之后,下面的问题应该很好回答啦

  1. 你觉得数据仓库有哪些优点和缺点
  2. 数据湖是什么
  3. 聊聊数据湖和数仓之间的区别
  4. 你接触过的数据湖产品有哪些,分别有什么特性
  5. 湖仓一体了解过吗
#数据人的面试交流地##大数据开发面经##面试题刺客退退退##大数据#
全部评论
找个实习叫我多读点源码😃
1 回复
分享
发布于 2023-06-20 22:16 贵州

相关推荐

3 14 评论
分享
牛客网
牛客企业服务