数仓基本知识
概要
以下描述包含我对整个数仓及其概念的简化提炼。适合新手了解相关概念,快速上手,老鸟请绕过。
业界为什么要用“数仓”?
说起数仓,业界为什么要开发数仓的技术?我们有mysql数据库,mongo数据库,业界为什么要推出个”数仓”的技术?
因为存储,因为查询。
存储: mysql在阿里开500G磁盘空间就将近4w块钱一个月,而且已经达到最大值,如果我们要100个T数据(1T=1024G),我们还能用mysql数据库吗?不能,怎么办?” 数仓!“
查询: 众所周知mysql在单表处理上亿的数据,可以近实时响应,那么多表关联+上百亿数据呢? mysql还能高效的查询数据吗?不能,怎么办? “数仓”
数仓为什么这么神奇?又可以解决存储问题,又可以解决查询问题?
存储问题: 数仓数据基于HDFS(分布式文件系统),分布式?不要被这个名词下到,其实简单的理解就是,hdfs把一个完整的数据集存到多个节点上(多个机器,多个磁盘)。磁盘不够我们可以无限加磁盘,所以数仓的存储上限可以达到PB级别(1P=1024T=1024*1024G),甚至更高。
DEMO:
查询问题: 数仓基于Map-Reduce(分布式查询),这其实是算法中”问题分解的思想“,把大的问题化成小问题,把每个小问题解决,大问题自然迎刃而解。
mysql的大问题,大数据量+复杂业务查询慢 => 分解小问题 => 把大数据量分解成一个个小数据量,把每个程序处理应用于每个小数据量,再汇总结果.
数仓的定义
数仓,大家广义的理解就是hadoop生态。
hadoop是什么? 简单理解 hadoop = hive + hbase + 一系列依赖hive和hbase的套件(presto,phoenix等)
我们常听到的dataworks是什么? dataworks 就是hadoop,准确的来说dataworks基于hadoop(业界公认且唯一的基本上只有hadoop,所以阿里也没得选),在hadoop上爆改的一个生态。爆改了名字,阿里才好卖产品。maxcompute = hive , hologress = presto(facebook出产)
数仓衍射出来的技术
hive: mysql分布式加强版
hbase: mysql分布式加强版 + 列式存储底层数据结构
spark: 分布式查询的一个技术(组件),支持python,java。
presto: 基于hive的一个技术(组件),加速hive的查询。
Ali maxComputer : 交互式分析,阿里自己魔改的(hive + spark)
Ali hologress: : 阿里自己魔改的presto,阿里云自研开发的HSAP(Hybrid Serving/Analytical Processing)服务/分析一体化系统 ,融合了实时服务和分析大数据的场景,可以当presto+mysql用,因为基于postgresql数据库研发.
Ali Oss: 阿里的对象存储技术,其实简单理解就是个远程磁盘,可以把结构化的数据以文件的形式进行存储。
Nifi: 属于ETL技术(Extract-Transform-Load),其实就是控制数据流流动的组件,是一种比如 “小明” -> “李小明”,“小红” -> “李小红” 等常见实时流标准处理的套件。