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