Hive个人心得笔记之数据库和数据仓库
Hive个人心得笔记之数据库和数据仓库
一、数据仓库和数据库对比
数据库 | 数据仓库 |
为线上系统提供实时数据 | 为离线分析存储历史数据 |
具有完整的增删改查的能力 | 只支持一次写入多次查询,不支持行级别的增删改 |
具有完整的事务能力 | 不强调事务的特性 |
尽量的避免冗余 提高存储 和处理的效率 | 人为的制造冗余 提高查询的效率 |
数据来源单一 | 数据来源多样 |
二、OLTP和OLAP对比
- 数据库属于OLTP系统(Online Transaction Processing)联机事务处理系统。涵盖了企业大部分的日常操作,如购物、库存、制造、银行、工资、注册、记账等。比如Mysql,oracle等关系型数据库;数据仓库属于OLAP系统。(Online Analytical Processing)联机分析处理系统。Hive,Hbase等
- OLTP是面向用户的、用于程序员的事务处理以及客户的查询处理;OLAP是面向市场的,用于知识工人(经理、主管和数据分析人员)的数据分析
- OLAP通常会集成多个异构数据源的数据,数量巨大;OLTP系统的访问由于要保证原子性,所以有事务机制和恢复机制
- OLAP系统一般存储的是历史数据,所以大部分都是只读操作,不需要事务;OLTP系统具有较强的事务
三.体系结构
1.用户接口主要有三个:CLI,**JDBC 和 WUI**
- CLI,最常用的模式。实际上在>hive 命令行下操作时,就是利用CLI用户接口
- JDBC,通过java代码操作,需要启动hiveserver,然后连接操作
2.Metastore
Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
3.解释器**(complier)、优化器(optimizer)、执行器(executor)组件**
这三个组件用于:HQL语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行
4.Hadoop
Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成
四.执行流程
- 通过客户端提交一条Hql语句
- 通过complier(编译组件)对Hql进行词法分析、语法分析。在这一步,编译器要知道此hql语句到底要操作哪张表
- 去元数据库找表信息
- 得到信息
- complier编译器提交Hql语句分析方案
执行流程
- executor 执行器收到方案后,执行方案(DDL过程)。在这里注意,执行器在执行方案时,会进行判断:如果当前方案不涉及到MR组件,比如为表添加分区信息、比如字符串操作等,比如简单的查询操作等,此时就会直接和元数据库交互,然后去HDFS上去找具体数据;如果方案需要转换成MR job,则会将job 提交给Hadoop的JobTracker
- MR job完成,并且将运行结果写入到HDFS上
- 执行器和HDFS交互,获取结果文件信息
- 如果客户端提交Hql语句是带有查询结果性的,则会发生:7-8-9步,完成结果的查询。
还没有评论,来说两句吧...