大数据架构设计
2023-05-04 09:52:09 0 举报
AI智能生成
大数据学习总结。
作者其他创作
大纲/内容
基本原理
HDFS
基本特点
超大文件
流式数据访问
商用硬件部署
低延迟数据访问
仅追加写入
数据块(Block)
NameNode
容错机制
联邦 HDFS
DataNode
块缓存
数据流
文件读取
文件写入
网络拓扑
一致模型
高可用
主备 NameNode
故障切换与规避
文件系统接口
命令行接口
Java API
HTTP API
HBase
基本概念
列式存储
RDBMS 的局限
NoSQL
维度
数据模型
键值对
列式存储
文档结构存储
存储模型
内存
持久化
一致性模型
物理模型
分布式
单机
读写性能
辅助索引
故障处理
数据压缩
负载均衡
原子性读写
封锁
扩展性
范式化
整体架构
存储结构
自动分区
存储实现
HFile
WAL - memstore
协调服务
操作特点
协调调度
图处理
实时处理
数据仓库
OLTP 与 OLAP
传统数据仓库
失信的 SLA:随着数据规模变大,处理时间变长
难堪重负:ETL 处理与用户查询竞争资源,体验变差
查询成本高昂:把数据归档后难以查询时间窗口以外的数据
缺乏灵活性:需求变更数据库模式改动大,且结构化数据与其他数据源难以关联
Hadoop 优势
在线归档数据,减少对 EDW 资源占用
提供简单的数据访问接口
灵活的模式演进,半结构化、非结构化数据处理
可通过 Oozie 等工作流管理工具协调调度
相关术语
模型
粒度
可加性
事实表
维度
数据模型
关系数据模型
数据结构
组成
主键选取原则
尽可能小、有序、数字类型
不可修改,避免外键引用失效
没有业务含义,避免随业务改变而修改
可多列组成,但尽可能少
完整性约束
实体完整性:主键不为空
参照完整性:外键与主表某记录的候选键值相同,或外键全为空(即无关联)
关系数据库语言(SQL)
规范化
1NF
2NF
3NF
维度数据模型
构建流程
选择业务流程(UML)
声明粒度(订单/消费流水)
确认维度(日期:年/月/日)
确认事实(金额/数量)
维度规范化
避免规范化的情况
增加表数量会使结构复杂
多表连接使查询复杂
不适合使用位图索引
明显降低查询性能
星型模型
基本特点
简化查询:简化业务报表逻辑,提升查询性能
快速聚合,便于向 OLAP 提供数据
不能保证数据完整性,应通过批处理和实时处理抵消
分析需求不灵活
事实表分类
事务事实表(如销售行为)
快照事实表(如用户月底余额)
累积事实表(如月总营收)
雪花模型
比星型模型更节省空间,但同时会降低查询性能
可结合星型使用(配置视图模拟)
Data Vault 模型
基本特点
基于时间存储原始数据
依赖越少越好
与源系统越独立越好
适应源系统的数据变化、支持扩展
数据可追踪
表的种类
中心表(HUB)
链接表(Link)
附属表(Satelite)
构建流程
设计中心表
设计链接表
设计附属表
设计必要的 PIT 表
数据仓库架构
数据建模与存储
选择存储引擎
反范式设计
数据更新:仅追加
事实表
历史表
存储格式与压缩算法
分区方式
数据采集
OLTP 导出
数据整合
数据处理与访问
分区
合并与更新
更新效率
数据聚合
数据导出
数据调度
数据处理
MapReduce
Spark
基本概念
优势和应用场景
抽象层
Pig
Crunch
Cascading
Hive
Impala
数据建模
存储格式
标准文件格式
文本数据(CSV)
结构化文本数据(JSON、XML)
二进制数据(SequenceFile)
Hadoop 文件
基于文件的数据结构化格式
支持格式
基于文件的数据结构:SequenceFile
序列化格式:Avro
列式存储格式:RCFile、Parquet
基本特点
存储方式
无压缩
记录级压缩
块级压缩
可分片压缩
与压缩编解码无关
存储格式
行式存储
列式存储
序列化存储格式
Hadoop 序列化框架
Thrift
Protobuf
Avro
数据压缩
模式设计
HDFS
Schema-on-Read:原始数据加载到 Hadoop 中,用时按需处理访问
标准化目录结构
数据标准化组织:考虑数据处理代码复用
访问控制与配额控制
分区与分桶
分区:减少处理数据集时的 I/O
分桶:根据某字段哈希映射到特定数量的桶,易于关联
反模式设计
针对查询模式冗余存储
结构化数据:数据仓库星型结构(事实表和维度表)
非结构化、半结构化数据:注重存放目录和元数据管理
反向规范化(物化视图)
HBase
行键(Rowkey)
记录检索:唯一性与反向规范化
分布:行键排序并划分到 Region
数据块缓存:相关的行键缓存命中率更高
支持扫描:避免跨大量 Region 扫描和过滤
行键大小:权衡读写和扫描需求设计
可读性:便于开发和调试
时间戳(Timestamp)
Hop
表和 Region
列
列簇
TTL
元数据管理
分类
逻辑数据集:数据集位置、有关模式、分区与排序特性、格式等由元数据仓库存储
HDFS 文件:文件权限与属主以及数据节点上不同数据块位置,由 NameNode 存储和管理
HBase 表:表名称、相关名称空间、相关属性以及列簇名称,由 HBase 存储和管理
数据输入与转化:创建指定数据集的特定用户、数据集来源、创建数据集花费时间和记录数,或加载数据大小
数据集统计信息:数据集中行数量、每列中特定值数量、数据分布直方图以及最大值和最小值
存储
管理
自动管理
嵌入文件路径中
存储在 HDFS 隐藏目录上
数据迁移
考量因素
时效性
批处理
近实时处理
实时处理
更新模式:增量更新 or 全量更新
访问模式
随机访问
扫描与转化
......
数据源系统与数据结构
数据源类型
设备读取效率
原始格式
压缩格式
流式数据
日志文件
数据变换
网络瓶颈
网络安全
交互模式
主动请求
被动推送
错误处理
复杂度
采集策略
文件传输
Sqoop
数据分片
连接器
Goldilocks 原则
公平调度器
定位瓶颈
数据同步
数据合并
版本对比
Flume
整体架构
设计范式
文件格式
性能调节
配置 Sink
配置 Interceptor
配置 Channel
定位瓶颈
Kafka
整体架构
应用场景
容错支持
离线处理
实时处理
与 Flume 整合
数据导出
0 条评论
下一页