Hadoop历险记(六 什么是数据仓库 什么是Hive)

数据仓库

我们经常会在大数据里面听到数仓这个词 DW。
官方来讲 数据仓库是用于存储 分析 报告的数据系统。
他的核心目的是构建一个面向分析的集成化数据环境。
所以要理解几个要点:

  • 数据仓库不生产数据,所有的数据都来源于外部。(所以他叫仓库而不是叫工厂)
  • 数据仓库不消费任何数据 只是数据的搬运工 然后进行数据分析

为什么要搭建数据仓库:
DW最重要的本职工作 是为了分析海量数据。而不是为了处理业务数据。

举个例子比如我们经常用的京东淘宝电商网站,用户在使用购物时会产生各种各样的业务数据,这些业务数据是和用户直接联机交互的。这些联机交互的业务数据一般会存在关系型数据库中,比如mysql ,oracle
因为这些业务数据需要增删改 需要快速的联机响应。

但是某一天,你发现业务数据愈来愈额多,存在各个关系型数据库中。这时候你想要统一的分析一下所有的海里数据 比如哪些商品卖的好 哪写年龄段的人喜欢买 ? 这时候就有了数据分析的需求。
有了数据分析的结果 你才可以调整你的运营决策。

那么问题来了? 在哪里做数据分析?在关系型数据库mysql中做分析数据可以吗?

其实答案是可以的,但是有点麻烦。

比如业务数据库 本来就要支持增删改查的业务操作。这是你还要搞数据分析大量读数据 这种对数据的压力非常大。 而且关系数据库中那么多库 那么多表 很多属性字段不一致,也是个问题。

所以在这样的背景下,很多企业 会单独搭建一个数据分析平台,
把各个与业务数据库的数据 抽到数据仓库, 然后统一进行分析。

数据仓库有什么特征

一切专项技术都有自己的特征 在前几篇中你已经发现了 Hadoop有特征 hdfs有特征 yarn有特征 他们有自己的特点 适合解决哪一类的问题和需求。 数仓也是这样的,这些特征新手第一次见会很懵逼,但是不要慌 随着后面一步一步深入了解数仓 你会很深刻的体会到以下特征:

  • 面向主题: 主题是一个抽象的概念 对高层次的数据总和和归类。所以你的数据仓库要有一个明确的主题 它到底存储的时候什么主题的数据。
  • 集成性:这个很好理解 你要分析的数据 会在各个系统 各个数据库 各个不同的地方 你要把他们都搞到一个地方 进行统一分析 这就是集成
  • 非易变性: 数据仓库中的数据是为了分析用的 一般只读 不改,很少很少会修改
  • 时变性:数仓中的数据 会随着时间而变化。这一点新手要正确理解,我们要分析海量数据 肯定是每天都要分析 每天都有新数据进来 就是时变性, 它指的时 每个时间段的数据都会备份存下来,而不是说数据时刻在修改。

Hive

刚才讲了什么是数据仓库。
这里介绍一下:Hive 它就是为这个概念而生的。
hive时建立在Hadoop之上的数据仓库系统,它可以将Hadoop文件系统中的数据文件映射成一张表, 然后再对这张表提供sql的查询模型,它的核心就是把 sql语言转换成hadoop里面的MR程序 然后提交到hadoop执行。

前面的文章中将了 hdfs的是怎么存储数据的? 是一个一个文件。 而我们日常用的sql是查询一个一个表。 hive就是这样一个桥梁。

所以Hive和hadoop是紧密配合的。

因为有hdfs存储数据,有MR计算分析数据。

而Hive为用户提供了一个sql编写的环境。 如果没有hive,你就得去写MR java程序来分析数据 这个会很麻烦。 有了hive 就可以非常平滑的让开发人员使用数据仓库。


重点理解
这里要重点理解hive的核心:
hive将文件的中结构化数据映射成一张表, 这个映射到底是什么
从数学上讲,映射是一种对应关系。
我们要想用sql去处理数据 那么这个sql面对的是一张表 而不是一个文件。所以我们需要把文件和表之间的描述记录清楚。
我们把描述文件和表之前关系的内容或者数据 称之为元数据。
(元数据这个概念 hdfs里面就有过 和它道理是一样的。 hdfs里面主节点存元数据 元数据不是具体的数据 它存的是具体数据的位置 数据的属性)
Hive里面的元数据 存的是什么:

  • 表对应哪个文件 文件的位置。
  • 表的一个列 对应这文件里面的哪一个字段(映射)
  • 文件字段之间的分隔符是什么? 逗号?冒号?空格?

有了这些元数据 hive就可以把文件映射成一张表了。注意这里是结构化数据 ,你文件里面存一堆乱七八糟的乱码 让我映射成表 肯定是不行的。

Hive架构图

了解了上面这些东西 我们现在可以正式的看看hive的架构图了
](https://img-blog.csdnimg.cn/69f56eab24794dd8b6e5538f869dcb12.png)

  • 用户接口: 先看最上面那两层,使用hive 那么你要向外提供使用的接口 比如第一张直接敲命令,我们安装hive之后 你就可以打开hive各种敲sql体验一下, 最重要的是中间这条路 使用JDBC协议 走hive访问服务 这是最常用的路径
  • 元数据存储:看右边那两个元数据存储,元数据也需要找个地方把他们存起来
  • driver驱动: 就是中间那一块了! 用户写sql 那么hive需要用驱动程序里面的解析 优化 执行等等程序 把这些sql 转换为hadoop能认识的执行计划
  • 执行引擎:hive本身不处理数据 它把sql转换成可执行的查询计划之后, 由具体的查询引擎 去执行处理 比如MR 比如spark
  • 底层数据:底层数据存在hdfs里面 有执行引擎查询计算具体的数据
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值