摘要

补充时八股格式:
定义:// 啥玩意,解释说明
功能:// 干嘛的,说清楚功能
应用:// 典型的应用场景、例子等
可选其他补充
如MySQL
定义(这两个字不要省略):一种关系型数据库,在数据仓库上下文中一般作为ODS原始数据层的数据源、APP应用层。
功能:在数仓上下文中或大型数据系统中,一般用于存储临界的一般关系型数据,通常用于在线应用和热数据交互。
应用:在一般后端架构中,通常被用于存储在线的数据,如在各类管理系统中被应用。

1. 业界常见技术栈综述

典型架构(4层架构):
自底向上:存储层、处理层、分析层、业务层
经典Hadoop家族:Hadoop、Hive、Spark、HBase

多源统一查询方案:
极速全场景(MPP,Massively Parallel Processing)数据库,是一种基于大规模并行处理技术的数据库系统,旨在高效处理大量数据。
StarRocks
Apache Doris
Doris 在中小型数据体量(总数据 100TB 内,热数据 30TB 内)的场景中

Presto(MPP-SQL交互式查询引擎)、多数据源(Hive,Hbase,RDBMS)

RDB集群:MySQL、PostgreSQL
CDC技术

在线任务:Apache Druid、Flink

对象存储:分布式文件系统基准(自建)、云厂商提供(S3、OSS、OBS)

TiDB
Mesos

StarRocks

一种MPP数据库,为了解决OLAP数仓模型多技术栈交叠搭建困难(提供一个总汇技术符合我们的归一概念)

Hadoop

一种分布式系统框架,与其衍生技术致力于解决大数据处理问题。Hadoop 的组件具有可替代性,目前主流的大数据架构已采用对象存储代替HDFS的架构方案。

MapReduce

解决了数据存储的问题,接下来就是数据计算的问题,MapReduce提供分布式文件统一操作,分为两个过程,Map,Reduce,简单的来说Map就是将问题拆分处理,Reduce就是将分离处理的数据进行汇总返回

Hive

使用Hadoop进行大数据处理需要编写MapReduce程序,对于程序员的技术有一定要求,Hive可以处理SQL生成MapReduce程序,提高了大数据问题的开发效率,但是失去了数据处理的灵活性。

HBase:一个基于Hadoop的分布式、版本化的非关系型数据库,用于存储结构化数据。HBase提供类似于Bigtable的列式存储,并支持实时读写操作。

Hive:一个基于Hadoop的数据仓库工具,允许用户使用SQL语言查询HDFS中的数据。Hive将SQL查询转换为MapReduce作业,并在Hadoop集群上执行。

OLTP数据库

OLAP数据库

OLTP系统通常使用关系型数据库管理系统(RDBMS)来处理数据,如MySQL、PostgreSQL、Oracle等。这些数据库系统提供了强大的事务管理和数据一致性保障。OLAP系统则常使用专门的分析工具和数据仓库,如Apache Hadoop等,这些工具专为大规模数据分析和处理而设计,提供了高效的数据读取和分析能力。

HTAP数据库

数据湖

iceberg
https://blog.csdn.net/wuxintdrh/article/details/120211716
https://blog.csdn.net/Yuan_CSDF/article/details/122418763

Data Engineering
Data Engineering
Data Service
Data Service
Druid
Druid
Presto
Presto
ElasticSearch
ElasticSearch
ClickHouse
ClickHouse
Hive
Hive
Spark
Spark
Flink
Flink
Spark Streaming
Spark Streaming
HDFS
HDFS
Hudi
Hudi
Kafka
Kafka
OSS
OSS
存储层
存储层
业务层
业务层
分析层
分析层
处理层
处理层
Text is not SVG - cannot display

2. 数据架构

2.1 数据湖

2.2 RDBMS 侧

MySQL
Oracle Database
Microsoft SQL Server
PostgreSQL
IBM Db2
SQLite
MariaDB
SAP HANA
Amazon Aurora
Sybase (SAP ASE)
老技术:Access DB

NewSQL:
TiDB
CockroachDB
Google Spanner
VoltDB
NuoDB

列存储:
LSM Tree
ClickHouse

数据库主从架构
Druid

2.3 数仓侧

2.4 在线计算

2.5 流式计算

Kafka

2.6 数据建模

维(Dimension):是人们观察数据的特定角度,是考虑问题时的一类属性,属性集合构成一个维(时间维、地理维等)。
维的层次(Level):人们观察数据的某个特定角度(即某个维)还可以存在细节程度不同的各个描述方面(时间维:日期、月份、季度、年)。
维的成员(Member):维的一个取值,是数据项在某维中位置的描述。(“某年某月某日”是在时间维上位置的描述)。
度量(Measure):多维数组的取值。(2000年1月,上海,笔记本电脑,0000)。
OLAP的基本多维分析操作有钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)、以及旋转(Pivot)等。

3. 数据底层

3.1 从 FAT 到分布式文件系统

本小节主要介绍单机文件系统的演变,随着计算技术的发展,从简单单机到大型计算机系统,文件系统不断演进,以满足更复杂的需求。

3.1.1 FAT(File Allocation Table)

FAT是最早期的文件系统之一,由微软在1977年开发。FAT的设计简单,通过一个文件分配表记录文件和目录的位置。其特点包括:
索引架构:使用文件分配表来跟踪文件块(链表族),表格中每个条目对应一个磁盘簇。
存储架构:文件以簇为单位存储,适合简单结构。
局限性:不支持大容量存储和长文件名,容易产生碎片。
子家族:FAT、FAT32、exFAT

3.1.2 NTFS(New Technology File System)

由微软开发,一种日志型文件系统,更安全稳定,大文件支持,但4K性能较差,NTFS具有以下特点:
索引架构:基于B-tree族结构,相比FAT家族,提高了文件查找效率。
存储架构:支持大容量存储,通过元数据管理增强数据完整性。
特性:支持文件压缩、加密和访问控制列表(ACL)、支持简单压缩、支持软硬链接等(Reparsed)。

3.1.3 EXT系列(Extended File System)

Linux系统的默认文件系统,包括EXT2、EXT3和EXT4。
索引架构:采用多级索引节点(inode,类多级链表结构,查询复杂度O(N^k))机制存储文件信息,其中对于大目录,EXT4使用Htree(一种B-树变体)来加速文件查找,提高效率。
存储架构:使用数据块和块组结构,支持大多数现代存储需求。
特性:支持日志功能(EXT3、EXT4),提高了可靠性。

3.1.4 ZFS(Zettabyte File System)

ZFS 是第一个128位文件系统,最初是由Sun公司为Solaris 10操作系统开发的文件系统,具有许多创新的特性和设计。以下是ZFS的一些核心特性:
索引架构:B+ Tree家族,ZFS使用类似B+树的数据结构,结合Merklized设计,提供高效的数据存储和检索路径。
存储架构:可变块大小,支持可变大小的数据块,优化存储利用率。存储池(Zpool),通过多设备创建存储池,抽象底层硬件,提高资源利用率。可扩展性,允许动态添加存储设备,无需中断服务。数据镜像和条带化,支持RAID-Z,提供数据冗余和错误修复功能。
数据完整性:端到端校验和,所有数据都有校验和检测,在读取时自动验证和修复数据损坏。自愈能力,在发现损坏时自动从冗余数据修复。轻量级快照支持,几乎瞬時捕获系统状态,便于备份和恢复。
性能:自适应读缓存(ARC):利用内存优化读性能。二级缓存(L2ARC):利用额外的闪存缓存提升读性能。
核心特点:128位文件系统,ZFS结合了文件系统和卷管理的功能,可扩展性和管理功能。

3.1.5 现代分布式文件系统

随着大数据和云计算的兴起,单机文件系统的限制变得明显,分布式文件系统应运而生。

3.1.6 HDFS(Hadoop Distributed File System)

HDFS是Hadoop家族中的一个子组件,是最经典的分布式文件系统,专为大规模数据处理设计,HDFS具有以下特点:
索引架构:使用NameNode管理文件 Namespace,DataNode存储数据块,Secondary DataNode用于备份数据防止服务节点挂掉后数据缺失。
存储架构:数据以128MB的块进行分布式存储,提供容错性。
特性:高吞吐、容错性和适合大数据应用。
缺陷:NameNode存储所有元数据,可能成为单点瓶颈和故障点,小文件空间浪费,并发等问题。

3.1.7 GFS(Google File System)

Google开发的分布式文件系统,启发了HDFS的设计。
索引架构:利用Master节点管理元数据,Chunkserver存储具体数据。
存储架构:数据被分成固定大小(64MB)的块进行存储。
特性:简单一致的设计,易于扩展。

Juice FS

CFS ChubaoFS

3.1.8 对象存储和 CDN

  1. 定义:对象存储是一种数据存储架构,它将数据作为对象进行管理,而不是传统的文件系统(将数据存储为文件)或块存储(将数据存储为块)。每个对象包括数据本身、元数据(描述数据的属性),以及一个全球唯一的标识符(用于检索对象)。简单来说,对象存储是专为管理大量非结构化数据(如音视频文件、图片、备份数据或大数据系统底层表文件等)而设计的存储系统。
  2. 功能:对象存储的主要功能是统一化存储和管理大量非结构化数据。它提供了高扩展性、以便处理大规模的数据,同时提供良好的数据寻址和检索机制,通过唯一标识符来高效地访问存储对象。
  3. 应用:
    常见的功能应用包括数据去重、版本控制、数据备份和恢复、灾难恢复、大数据底层应用、以及数据分析和挖掘等。
    云存储服务:例如,Amazon S3、Google Cloud Storage、Alibaba OSS、HUAWEI OBS,给用户提供按需存取的数据存储服务。
    内容交付网络(CDN)<典型>:将数据存储到全球的数据中心,提升内容分发速度和用户访问体验。通常用于管理、分发、加速静态资源。
  4. 补充:
    对象存储通常不被称为文件系统,这个是相对的,首先确实一般的对象存储不支持传统文件系统的随机读写且一般对象存储采用键值存储,使用键模拟目录结构。但是与HDFS相似的是,读写的粒度是文件粒度。
    hadoop3.3.0之后原生支持部分云产商对象存储。目前由于HDFS的缺陷,许多业内实践已部分替换底层HDFS为对象存储。

3.1.2 冷热存储

3.1.3

3.2 处理

3.3 分析

3.3.1 Adhoc 即席查询

3.3.2 OLAP

3.x 关键问题

3.x.1 数据治理

  1. 数据倾斜问题
    问题:部分子任务执行时间远长于其他任务,导致整体作业延迟。
  2. 内存溢出
    问题:任务失败,出现OutOfMemoryError。
  3. 小文件问题
    问题:大量小文件导致性能下降。
  4. 空表
  5. 表无产出
  6. 生命周期不合理
  7. 大任务
  8. 长时间无查询
  9. 峰值内存

3.x.2 数据血缘

血缘粒度:表粒度、桶粒度(文件粒度)、字段粒度
方法论:SQL解析、依赖/产出登记
任务级血缘
数据血缘的核心概念
数据源(Data Source):数据的原始来源,可能是业务系统、外部接口等。
数据转换(Data Transformation):数据在流动过程中经历的各种处理和变换。
数据目标(Data Target):数据最终存储或使用的位置。
数据流(Data Flow):数据从源到目标的整个流动路径。
元数据(Metadata):描述数据特征的数据,如数据类型、格式、业务含义等。

3.x.3 数据埋点

4. 常用术语名词解释

ETL(Extract-Transform-Load)用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

CDC(Change Data Capture)

5. 新特性

EMR(弹性MapReduce)
大数据云原生化

6. 数据业务开发

7. 业内大数据、数据产品

镜舟

Rugal
Airflow

参考文献

https://vr.sina.com.cn/news/2021-09-08/doc-iktzscyx3018965.shtml
Oussous A, Benjelloun F Z, Lahcen A A, et al. Big Data technologies: A survey[J]. Journal of King Saud University-Computer and Information Sciences, 2018, 30(4): 431-448.
Ageed Z S, Zeebaree S R M, Sadeeq M M, et al. Comprehensive survey of big data mining approaches in cloud systems[J]. Qubahan Academic Journal, 2021, 1(2): 29-38.

https://zhuanlan.zhihu.com/p/695508708
https://blog.csdn.net/hellozhxy/article/details/131807601
https://mp.weixin.qq.com/s/TFjJ799IOPkwG_Ywz3piow?from=groupmessage&scene=1&subscene=10000&sessionid=1725542548&clicktime=1725544479&enterid=1725544479
https://blog.csdn.net/Myx74270512/article/details/128649850
https://github.com/simbafl/DataWarehouse
https://github.com/houshanren/big_data_architect_skills
https://github.com/wx-chevalier/Database-Notes
https://www.bilibili.com/read/cv34491229/

https://cloud.tencent.com/developer/article/2235519

https://t.it168.com/article_6853116.html

https://tech.dewu.com/article?id=31
https://tech.meituan.com/2021/04/15/data-governance-in-meituan-jiulv.html
https://juejin.cn/post/6975814437311610888

https://www.zhihu.com/question/631983226/answer/3306153787?utm_psn=1831690221403631619

https://blog.csdn.net/archleaner/article/details/50988258

https://blog.csdn.net/wuxintdrh/article/details/120211716

Author:undefined  Create time:2024-09-03 18:42
Last editor:undefined  Update time:2025-01-07 22:14