hive总结笔记

Hive是基于Hadoop的数据仓库软件,使用类SQL的HiveQL语言实现数据查询功能,可以查询和管理PB级别的分布式数据,所有Hive的数据都存储在HDFS中

特点:
灵活方便的(ETL提取/转换/加载)
支持MapReduce,Tez,Spark等多种计算引擎。
可直接访问HDFS文件以及HBase。
易用易编程

Hive 的设计特点有:
支持索引,加快数据查询
不同的存储类型 例如,纯文本文件
可以直接使用存储在hdfs上
内置大量函数
类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行

与传统数据仓库比较
Hive                                        传统数据仓库                            
存储:hdfs,理论上是无限拓展                集群存储,容量有上限,适用于数据量小的商业应用
执行引擎:有MR/Tez/Spark等                    可以选择高效的的算法执行查询,也可以优化提高速度
方式:HQL                                    SQL
速度:依赖集群,易拓展,快于普通的数据仓库    复杂查询性能高于Hive,简单大规模(百TB级数据)查询性能较Hive弱
复杂的关联交叉运算其速度很慢,
索引:低效                                    高效
可靠性:数据存储在HDFS,可靠性高,容错性高    可靠性较低,一次查询失败需要重新开始
依赖:依赖硬件较低                            依赖于高性能的商业服务器

数据集市和数据仓库的区别
数据集市
数据集市(Data Mart) ,也叫数据市场,数据集市就是满足特定的部门或者用户的需求,
按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。
数据仓库
为满足各类零散分析的需求,通过数据分层和数据模型的方式,并以基于业务和应用的角度将数据进
行模块化的存储。

Hive数据仓库
数据仓库分层:
ODS层:原始数据层。ODS(Operational Data Store)
DWD层:结构和粒度与原始表保持一致,简单清洗。DWD(Data Warehouse Deatail)
DWS层:以DWD为基础,进行轻度汇总。DWS(Data Warehouse Service)
ADS层:为各种统计报表提供数据。ADS(Application Data Store)

分层的优点
复杂问题简单化
将任务分解成多个步骤完成,每一层只处理单一的步骤,比较简单,并且方便定位问题。
减少重复开发
规范数据分层,通过中间层数据,减少最大的重复计算,增加一次计算结果的复用性。
隔离原始数据
避免数据异常或者数据敏感,使真实数据与统计数据解耦。


优点:
高可靠、高容错
类SQL
可扩展
多接口   1.Beeline 2.JDBC 3.Thrift 4.Python 5.ODBC
缺点:
延迟较高 默认MR为执行引擎。 MR延迟较高
不支持物化视图
不适用OLTP 暂不支持列级别的数据添加、更新、删除操作。
暂不支持存储过程 

架构:
Hive分为三个角色HiveServer、MetaStore、WebHcat。
HiveServer 将用户提交的HQL语句进行编译,解析成对应的Yarn任务、Spark任务或者HDFS操作,从而完成数据的提取、转换、分析。
MetaStore 提供元数据服务。
WebHcat 对外提供基于https协议的元数据访问、DDL查询等服务

hive数据存储模型
数据库:创建表时如果不指定数据库,则默认为default数据库。
表:物理概念,实际对应HDFS上的一个目录。
分区:对应所在表所在目录下的一个子目录。  数量不固定 ,可在分区下再有分区或者桶
桶:对应表或分区所在路径的一个文件。每个桶是一个文件,在建表时可以指定桶的个数并可以排序
倾斜数据:数据集中于个别字段值的场景,比如按照城市分区时,80%的数据都来自某个大城市。
正常数据:不存在倾斜的数据

内部表和外部表
默认创建内部表  hive会将数据移动到数据仓库目录
创建外部表,这时Hive会到仓库目录以外的位置访问数据

区别:一般加载数据的表我们用外部表
导入数据时:内部表数据移到仓库目录 外部表导入时数据位置不移动
删除表时:内部表元数据和数据会被一起删除 而删除外部表时只删除元数据

Hive调优 
数据倾斜
数据倾斜指计算数据的时候,数据的分散度不够,导致大量的数据集中到了一台或者几台机器上计算,这些数据的计算速度远远低于平均计算速度,导致整个计算过程过慢。
日常使用过程中,容易造成数据倾斜的原因可以归纳为如下几点:
group by
distinct count(distinct xx)
join


hive增强特性
同分布:将存在关联关系的数据或可能要进行关联操作的数据存储在相同的存储节点上
列加密  指定相应的加密列
hbase记录批量删除  FusionInsight HD Hive提供了对HBase表的单条数据的删除功能,通过特定的语法,Hive可以将HBase表中符合条件的一条或者多条数据批量清除。
流控特性  当前已经建立的总连接数阈值控制。 每个用户已经建立的连接数阈值控制。 单位时间内所建立的连接数阈值控制。
避免客户端请求数过多,对服务端造成重启
指定行分割符

hive基本操作
DDL:对表结构的操作 有:建表,修改表,删表,分区,数据类型
DML:数据装载    数据导入导出
DQL:对数据的分析  简单查询
                   复杂查询 group by分组排序 
                            Order by全局排序
                            sort by:分区排序
                            join 
                            left join
                            righ join
                            full join


版权声明:本文为weixin_43401491原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。