Hive个人心得笔记之数据库和数据仓库

一、数据仓库和数据库对比

数据库

数据仓库

为线上系统提供实时数据

为离线分析存储历史数据

具有完整的增删改查的能力

只支持一次写入多次查询,不支持行级别的增删改

具有完整的事务能力

不强调事务的特性

尽量的避免冗余 提高存储 和处理的效率

人为的制造冗余 提高查询的效率

数据来源单一

数据来源多样

二、OLTP和OLAP对比

  1. 数据库属于OLTP系统(Online Transaction Processing)联机事务处理系统。涵盖了企业大部分的日常操作,如购物、库存、制造、银行、工资、注册、记账等。比如Mysql,oracle等关系型数据库;数据仓库属于OLAP系统。(Online Analytical Processing)联机分析处理系统。Hive,Hbase等
  2. OLTP是面向用户的、用于程序员的事务处理以及客户的查询处理;OLAP是面向市场的,用于知识工人(经理、主管和数据分析人员)的数据分析
  3. OLAP通常会集成多个异构数据源的数据,数量巨大;OLTP系统的访问由于要保证原子性,所以有事务机制和恢复机制
  4. OLAP系统一般存储的是历史数据,所以大部分都是只读操作,不需要事务;OLTP系统具有较强的事务

三.体系结构

hive数据库sql hive数据库和oracle区别_hive数据库sql

1.用户接口主要有三个:CLI,JDBC 和 WUI

  1. CLI,最常用的模式。实际上在>hive 命令行下操作时,就是利用CLI用户接口
  2. JDBC,通过java代码操作,需要启动hiveserver,然后连接操作

2.Metastore

Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等

3.解释器(complier)、优化器(optimizer)、执行器(executor)组件

这三个组件用于:HQL语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行

4.Hadoop

Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成

四.执行流程

hive数据库sql hive数据库和oracle区别_HDFS_02

  1. 通过客户端提交一条Hql语句
  2. 通过complier(编译组件)对Hql进行词法分析、语法分析。在这一步,编译器要知道此hql语句到底要操作哪张表
  3. 去元数据库找表信息
  4. 得到信息
  5. complier编译器提交Hql语句分析方案
  6. 执行流程
  1. executor 执行器收到方案后,执行方案(DDL过程)。在这里注意,执行器在执行方案时,会进行判断:如果当前方案不涉及到MR组件,比如为表添加分区信息、比如字符串操作等,比如简单的查询操作等,此时就会直接和元数据库交互,然后去HDFS上去找具体数据;如果方案需要转换成MR job,则会将job 提交给Hadoop的JobTracker
  2. MR job完成,并且将运行结果写入到HDFS上
  3. 执行器和HDFS交互,获取结果文件信息
  1. 如果客户端提交Hql语句是带有查询结果性的,则会发生:7-8-9步,完成结果的查询。