关于数据仓库的一些个人思考

一、为什么要用数据仓库?mysql不好吗?mysql和hive的区别

1、mysql、hadoop和hive

mysql是关系型数据库,与之对应的是其实应该是HDFS,数据仓库。

hadoop是分布式计算的开源框架,包含HDFS,hive,Hbase。

hive是基于hadoop的一个数据仓库工具,本质是工具。提供SQL查询功能,HiveSQL会转化成mapReduce任务执行,无需编写代码。为数据统计分析提供便利。

2、为什么hive会慢?

因为hive查询时候需要提交mapReduce任务,申请资源和启动任务,因此会很慢。但是当数据量达到很大的级别时候,mysql的速度是远不及hive的。

另外因hadoop的分布式存储,即HDFS本身稳定性也很强。

3、应用场景

如果数据量很小,或者要求数据实时性强,用mysql没问题。如果数据量大还是得用数据仓库,hadoop进行分布式计算。

因此,这里所说的数据仓库,其实是离线数据仓库。

有人可能会问,假如我要求实时性很强,而且数据量又很大呢?难道没有分布式方面的解决方案吗?有,这就需要实时数仓,Flink流处理框架,Flink是java和Scala编写的分布式流数据流引擎。

数据库是面向事务的设计,数据仓库是面向主题设计的。 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。

数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。
(维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID)

二、数仓的各种概念

1、hadoop、HDFS、hive

hadoop 是分布式计算的开源框架,本质是一种框架。(是用java实现的)

HDFS是分布式存储文件系统,数据是以块的形式存储在各个datanode里面的。具体原理可以查资料。

hive是专门处理存储在HDFS里的数据的工具,它本质是工具。

顺便一提mysql,是关系型数据库,本质是数据库,与之对应的是HDFS。mysql的数据是以二维表的形式存储在磁盘中。具体原理可以查资料。

2、为什么安装hive的时候,需要安装mysql,作用是什么?

解决这个问题首先搞清楚“元数据”和“原始数据”的概念。

原始数据,很简单,就是数据本身,存储在磁盘上,通过数据库进行管理及查询。

元数据,就是描述数据的数据,包括比如表名称、列、分区、属性和大小等。

因此对于hive来说,真正的数据,即原始数据是存放在HDFS中,但是要查询HDFS的数据,就需要通过hiveSQL查询元数据来获取。实际上hiveSQL提交后,会执行mapReduce任务。那这些元数据放哪里呢?hive默认是存放在derby,但derby只适合单机,性能很差。因此多数都是存放在mysql中,也可以是其他的关系型数据库。hive安装完成后,可以在mysql数据库中找到hive的元数据库,这个库里面的表,就是hive的元数据,这些元数据就是描述HDFS的数据。

磁盘是怎么存储数据的?
可以参考这批文章 https://blog.csdn.net/Wisimer/article/details/115543032

3、sqoop是什么,能做什么?

sqoop是连接关系型数据库和hadoop的桥梁,本质是一种用java编写的工具。它也是基于hadoop的框架,因此也会通过执行mapReduce任务实现的。

简单来说,sqoop就是把mysql数据传到HDFS里,并且把相关元数据记录在mysql里的hive库中。

4、yarn是什么?

Yet Another Resource Negotiator,yarn是hadoop的资源管理器。因为hadoop这个框架本身就是要通过mapReduce进行map和reduce作业,不管是hive的数据查询,还是sqoop的数据导入导出。

而大量的mapReduce任务,就需要一个管理工具去协调,每个任务的资源分配,包括CPU、内存分配、任务队列等等。

关于yarn的知识点很多,ResourceManager,applicationMaster,nodeManager,container等等,想深入了解可以进一步去查阅。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇