大数据基础
以史观今
- 数据量是怎么变大的?
- 单机是怎么扛不住的?
- 集群为何难于管理?
- 三大论文 MapReduce/GFS/BigTable 有何指导意义?
- Hadoop 生态是怎么演进的?
- 存储和计算的各类选手各自擅长的场景?
数据分层
APP <- DWS/DM <- DWB/ODS <-[ETL] OLTP(RDS/log/埋点)
名词解释:
- OLTP(On-Line Transaction Processing): 交易业务,实时,一致性,高并发,低延迟
- OLAP(Online Analytical Processing): 数据分析,数据多维,吞吐量大
- ETL(Extract-Transform-Load): 用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去
- DW(data warehouse): 翻译成数据仓库
- DW 数据分层,由下到上为 DWD/DWB/DWS
- DWD(Data Warehouse Detail): 细节数据层,有的也称为 ODS 层,是业务层与数据仓库的隔离层
- DWB(Data Warehouse Base): 基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
- DWS(Data Warehouse Service): 服务数据层,基于 DWB 上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。
数据与处理
- 数据存储
- 文件大小
- 吞吐量
- 增量写?随机写?随机读?顺序读?
- HDFS/HBase/Druid
- 集群管理
- zookeeper/yarn
- 数据处理
- 分类:有限集合 与 无限集合(数据流)
- 对比维度:
- 状态管理
- 消息传输保障:at most once,at least once和exactly once
- 保证指标:
- 容错
- 性能:延迟时间(Latency),吞吐量(Throughput)和扩展性(Scalability)
- 部署
- 扩展
- Storm:数据流,任务量小但速度要求高,容错:ACK
- Spark生态:RDD(Resilient Distributed Datasets) 内存数据处理模型
- Flink: 流处理系统
- Samza: 用 kafka 消息
- Hive: 在 HDFS 之上的 SQL 查询