本文是《大数据分析-数据仓库项目实战》阅读笔记。 内容全部摘抄于本书。
算入门教材、文中有大量软件的安装步骤、对技术细节未过多涉及。
大数据时代,需要考虑数据的采集、存储、计算处理等方式。
数据仓库建模方式:确定业务过程、声明粒度、确定维度、确定事实
采集:Flume、kafka、Sqoop
存储:MySQL、Hadoop、HBase
计算:Hive、Tez
查询:Presto、Druid、Kylin
可视化:Superset
任务单调动:Azkaban
元数据管理:Atlas
脚本:Shell
一切行为几乎都可以用数据来描述
大数据采集过程的调整:
现在主流的数据采集传输工具: Sqoop、Flume、DataX
目前广泛数据仓库分层: 大致分为原始数据层、明细数据层、汇总数据层和应用数据层
数据仓库:Data Warehouse (简称:DW、DWH)
数据仓库的特点:面向主题、数据是集成、不可更新、随着时间不断变化
在数据仓库领域有一个概念叫Ad hoc queries,中文一般翻译为“即席查询”。即席查询是指那些用户在使用系统时,根据自己当时的需求定义的查询
系统功能结构: 数据采集、数据仓库平台、数据可视化和即席查询
数据采集:对数据进行清洗、转义、分类、重组、合并、拆分、统计。对数据进行合理分层。
数据采集模块(断点续传、实现数据消费 “at least once”)
ODS:operation data store 原始数据层
DWD: Data warehouse Detail,明细数据层。(对ODS层数据进行清洗,去处空值、脏数据、超过极限范围的数据)
DWS:Data warehouse Service (轻度汇总、一般聚集到以用户当日、设备当日等)
DWT:Data warehouse topic:主题数据层。 (对DWS层的进一步聚合)
ADS:application Data store: 数据应用层
电商平台的数据分析(关注点: 活跃用户量、转化、留存、复购、GMV成交金额; 以及三大关键思路:商品运营、用户运营和产品运营)
Flume: 高可用、高可靠、分布式的海量数据收集系统,可以从多种数据源系统采集、聚集和移动大量的数据并集中存储。
Kafka:提供容错存储、高实时性的分布式消息队列平台。 可以应用和处理系统见高实时性和高可靠性的。(实时性流式计算)
Sqoop: 用于关系型数据库与HDFS之间的传输数据
HDFS:是hadoop的分布式文件系统。
Hive:是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能
即席查询:Presto基于内存计算、Druid优秀懂得时序数据处理引擎、Kylin基于预Cub创建计算
远程终端管理: PuTTY、SecureCRT
略
Flume组建: Flume整体上是 Source-Channel-Sink的三层,其中Source层完成对日志的收集、将日志封装成event传入Channel层,Channel层提供队列的功能,对Source层传入的数据提供简单的缓存从哪个,Sink层取出Channel层的数据,将数据送入存储文件系统中。
Fulme的ETL拦截器和日志类型区分拦截器
各种软件安装, 略。
Sqoop是一个用于将关系型数据库和Hadoop中的数据进行转义的工具,可以将一个关系型数据库(MySQL、Oracle)中的数据导入hadoop(HDFS、Hive、HBASE),也可以反过来
数据同步策略:
数据仓库(Data warehouse)是一个面向主题(Subject oriented)、集成(Integrate)、相对稳定(No-Volatile)、反映历史变化(Time Variant)的数据集合
使用范式的目的:减少数据冗余、尽量让每个数据只出现一次、保证数据的一致性
在维度建模的基础上: 有三种模型:星型模型、雪花模型、与星座模型。
星型模型: 当所有维度表都直接连接到事实表上,这个图就像星星一样。
雪花模型: 当有一张或者多张维度表没有直接连接到事实表上,而通过其他维度表连接到事实表上时。是对星型模型的扩展。 去处了数据冗余,比较靠近第三范式,但无法遵守,原因是成本太高
Hive是一款用类SQL语句来协助读、写、管理那些存储在分布式存储系统上的大数据集的数据仓库软件。 Hive可以将SQL语句解析成MapReduce程序。
MySQL HA: 基于Keepalive的的MySQL的HA。Keepalived是基于VRRP的一款高可用软件。
其中Hive内置了对JSON解析操作的函数
UDF: user-defined function 用户自定义函数
对导入的数据注意分区存储,避免全局扫描
拉链表:是维护历史状态以及最新状态数据的一种表,用于记录每条信息的生命周期
superset 是一个开源的、现代化的、轻量级的BI分析工具、能够对接多种数据源、拥有丰富的图标展示形式、支持自定义仪表盘,拥有友好的用户界面,十分易用
Superset 是Python编写的web应用
分别以Presto、druid、Kylin
Presto: 是facebook推出的一个开源的分布式SQL查询引擎,数据规模支持GB和TP,主要用于处理秒级查询的场景
Presto: 是基于内存的,减少了IO,它能链接多个数据源进行连表查询。虽然能处理PB级的海量数据,但Presto并不能把PB级的数据都放在内存中进行计算
Druid: 是一个高性能的实时分析数据库,它在PB级数据处理,毫秒级查询,数据实时处理方面,比传统的OLAP系统有显著的性能提升。
列式存储、可扩展的分布式、大规模并行查询
Kylin:分布式分析引擎,在亚秒内查询巨大的Hive表
粗略的对整个大数据的部分技术做了一个简单的了解。对其中的具体实现并未逐步操作(实际上并不需要)、整体的方案更加偏向离线计算分析、对实时计算的部分基本没有、算是一本入门科普教材。
注意:本文中描述了大量软件的安装过程,如果想进行实际操作的可以跟着操作,步骤详细。
整体的内容围绕下面两幅图展开的: