1.深入理解hive之数据仓库和数据库的区别

不同之处:

1.数据库主要是OLTP的服务

2.数据仓库主要进行的是OLAP的服务


OLTP:

联机事务处理,用来实时记录交易信息,对这类系统的期望是能够快速返回响应信息。,一般是在毫秒级别的,能够快速响应的原因是拥有健全的索引机制。如B+的mysql健全索引,以及B的oracle索引,能够快速的进行DML的一些操作。

关键词:事务(原子性的)

扩展一下:

1》数据的事务处理是行级的,例如insert。。。update语句均是进行一个行数据的查询操作。(理解困难的话,从数组的行这个维度去理解)

2》OLTP的所有的操作都是实时的

     实时:查询速度是十分的快的,而且响应的速度也是十分的快。(这里得快是到毫秒级别的响应,联想自己使用sql对数据库的操作。)


OLAP:

联机分析处理,用来分析所存储数据,一般系统按天,按周,按月生成报表。

(如使用ETL工具,进行数据的同步,在ktr中进行数据的字段预处理,来进行一个过滤,在kjob中进行一个定时周期的设置,天周   周,月根据业务需要进行周期的设置)

总结:

OLAP更倾向于业务,但是OLAP的话更加倾向于分析。

OLAP是属于商业智能的范畴,数据需要研究,处理,分析,以便收集信息


根据以上的特性,进行一个业务场景的总结:

OLTP:一般指的是数据库(泛指的是RDBMS数据)

OLAP:重点在于分析上,用于查询或者分析使用,没有实时要求,一般是按照天周,月进行数据的汇总。更倾向于商业智能,据此,进行一个推论,因此,HIve成为了人工智能,AI,数据分析的开头。

         特点:

          1》数据量大

           2》数据种类的多样化


 

好了了解完了数据库,接下来进行理解一下CAP原则:

CAP原则又称为CAP原理,指的是在在一个分布式系统中,一致性(consistence),高可用性(Avaliablity),分区容错性(partition),一般数据库三者是不可以进行兼容的。

分析:

RCA一般是满足于RDBMS的,(满足一致性,高可用性)

CP原则一般是满足于MongoDB,Hbase,Redis,(满足于一致性和分区容错性),不满足高可用性,也就是进行一个快速的响应的结果,以及支持事务的操作。

理解一下HIve在hadoop中的位置:

HIve特性:

1》位于应用层

2》ETL工具

3》类Sql

4》数据仓库

5》本质上是Mapreduce

下面一张图来进行解释hive在Hadoop中的位置,如下图所示:

1.深入理解hive之数据仓库和数据库的区别_第1张图片

其中Mapreduce以及yarn和HDFS共同组成了Hadooop。

MapReduce:关键词,分布式,并行计算,离线。

YARN:hadoop资源,管理器


 

 

Hive是一个应用层的东西,定位是数据仓库,所偏向的是数据分析,存储和计算的方向,其本质是mapreduce。

ETL(抽取,转换,加载的过程),工具有kettle,hive,以及sqoop。

在新的技术范围内,计算引擎是mapreduce其中之一,基于计算引擎,推断,spark中也有Mr,因此有的公司使用spark中的mr作为计算引擎。


Hive的主备模式:有主也有从(这里可以去用分布式数据库理解,当主节点挂了,可以用从节点,自己内部可以重新进行选举。)

推论:如果挂了的话,HIVE应该如何去处理,在上面CAP的原则中,hive是没有做到高可用性的,但是如果数据库挂了的话,如何去实现一个高可用性。

关键词:存储,hive中真正的数据是存储在HDFS当中的。



Hive优点以及缺点:

1》高可靠性,这里的hive本身是不满足高可靠性的,是间接通过hdfs来进行可靠性的认证的,因为HDFS是磁盘的文件夹,从文件系统来进行理解的话。不满足CAP中的高可用性,因为没有相对健全的索引机制。

    原理:hiveServer采用主备模式:主节点挂了,还有从节点

              双metaStore:

             超时重试机制:

2》类SQL:

类似SQL语法,内置大量的函数。

3》可扩展

自定义存储格式 (存储格式:.txt格式,gzip格式,二进制格式(序列化文件))

存储过程:类似于java中一些方法(里面有多条语句,同时可以包含判断,循环等等一些语句)

例如:select substring(name,1,7) from t user;

该函数不会影响输出的记录数?不用这个函数的条数与用了这个函数的条数是一致的,没影响。

例如:select split(adress ,',')from t_user;

UDF(不影响条数),UDAF(会让条数减少),UDTF(会让条数增多)

自定义函数(UDF/UDAF/UDTF)

4》多接口

定义:指的是可以直接或间接地方式,操作Hive,hive支持的操作方式

Beeline

JDBC

Thrift

Python

Rest

视图:让使用者更简洁,视图里面可以包含很多复杂的sql语句,但是语句中又没有逻辑的东西(如果有逻辑的东西应该使用存储过程)数据会临时存储数据库中,会提高查询效率,但是数据有更新或者删除的时候,需要对数据进行修改。


Hive缺点:

1》延迟很高:

      1.默认M/R执行引擎

      2.M/R启动有所延迟

2》不支持物化视图

1.hive虽然也提供了视图的概念,但是不支持物化视图,不能在视图上更新,插入,删除数据。

3》不适用于OLTP

1.暂不支持列级,别的数据增加,更新,删除操作。

4》暂不支持存储过程

只能使用UDF进行存储过程的代替。


Hive数据仓库创建之后,就会很少去运用。


Hive的应用场景

1》数据挖掘:

1.数据用户行为分析

2.兴趣分区

3.区域展示

2》非实时分析

1.日志分析

2.文本分析

3》数据汇总

1.每天/每周用户点击数

2.流量统计

3》作为数据仓库(这也是我在公司接触的最多的数据分析的场景)

1.数据抽取

2.数据加载

3.数据转换

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(大数据组件)