Hive介绍,
Hive概述
HIve是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。可以通过类SQL 语句快速实现MapReduce统计。本质是将SQL转换为MapReduce程序。
Hive是建立在Hadoop上的数据仓库基础架构。并且提供了一系列的工具,可以用来进行数据提取、转化、加载(ETL Extract-Transform-Load),也可以叫做数据清洗。这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为HiveQl(HQL),允许熟悉SQL的用户查询数据。
Hive的Hql
HQL -Hive通过类SQL的语法,来进行分布式的计算。HQL用起来和SQL非常相似,Hive在执行过程中将HQL转化为MapReduce去执行,所以Hive其实是基于Hadoop的一种分布式计算框架,底层仍然是MapReduce,所以Hive本质上还是一种离线大数据分析工具。
Hive的特点
1.可扩展
Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。
2.延展性
Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
3.容错
良好的容错性,节点出现问题SQL仍可以完成执行
数据仓库的特征
1.数据仓库是多个异构数据源所集成的。
2.数据仓库存储的一般是历史数据。大多数的应用场景是读取数据(分析数据),所以数据仓库是弱事务的。
3.数据库是为捕获数据而设计的,数据仓库是为分析数据而设计。
4.数据仓库是时变的,数据存储从历史的角度提供信息。即数据仓库中的关键结构都隐式或显示地包含时间元素。
5.数据仓库是弱事务的,因为数据仓库存的是历史数据,一般都读(分析)数据场景。
数据仓库与数据库的区别
1.数据库属于OLTP系统。(Online Transaction Processing)联机事务处理系统。涵盖了企业大部分的日常操作。比如MySql,oracle等关系型数据库。
2.数据仓库属于OLAP系统。(Online Analytical Processing)联机分析处理系统。Hive,Hbase等。
3.OLTP是面向用户的、用于程序员的事务处理以及客户的查询处理。
4.OLAP是面向市场的,用于知识工人(经理、主管和数据分析人员)的数据分析。
5.OLAP通常会集成多个异构数据源的数据,数据量巨大。
6.OLTP系统的访问由于要保证原子性,所以有事务机制和恢复机制。
7.OLAP系统一般存储的是历史数据,所以大部分都是只读操作,不需要事务。
Hive与Hadoop的关系
HIve与传统数据库对比
| Hive | RDBMS | |
| 查询语句 | HQL | SQL |
| 数据存储 | HDFS | Raw Device Or Local FS |
| 执行 | MapReduce | Excutor |
| 执行延迟 | 高 | 低 |
| 处理数据规模 | 大 | 小 |
| 索引 | 0.8版本后加入位图索引 | 有复杂的索引 |
Hive适用场景
Hive构建在基于静态(离线)批处理的Hadoop之上,Hadoop通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive在几百MB的数据集上执行查询一般有分钟级的时间延迟。因此,Hive并不适合那些需要低延迟的应用,例如,联机事物处理(OLTP)。Hive将用户的HiveQl语句通过解释器转换为MapReduce作业提交到Hadoop集群上,Hadoop监控作业执行过程,然后返回作业执行结果给用户。Hive并非为联机事物处理而设计,Hive并不提供实时的查询和基于行级的数据更新操作。Hive的最佳使用场合是大数据集的离线批处理作业,例如,网络日志分析。
Hive 特点
针对海量数据的高性能查询和分析系统
由于 Hive 的查询是通过 MapReduce 框架实现的,而 MapReduce 本身就是为实现针对海量数据的高性能处理而设计的。所以 Hive 天然就能高效的处理海量数据。
与此同时,Hive 针对 HiveQL 到 MapReduce的翻译进行了大量的优化,从而保证了生成的MapReduce 任务是高效的。在实际应用中,Hive 可以高效的对 TB 甚至 PB级的数据进行处理。
类SQL的查询语言
HiveQL 和 SQL 非常类似,所以一个熟悉SQL 的用户基本不需要培训就可以非常容易的使用 Hive 进行很复杂的查询。
HiveQl灵活的可扩展性(Extendibility)
除了HiveQL自身提供的能力,用户还可以自定义其使用的数据类型、也可以用任何语言自定义mapper和reducer脚本,还可以自定义函数(普通函数,聚集函数)等。这就赋予了HiveQL极大的可扩展性。用户可以利用这种可扩展性实现非常复杂的查询。
高扩展性(Scalability)和容错性
Hive本身并没有执行机制,用户查询的执行是通过MapReduce框架实现的。由于MapReduce框架本身具有高度可扩展(计算能力随Hadoop集群中的数量增加而线性增加)和高容错的特点,所以Hive也相应具有这些特点。
与Hadoop其他产品完全兼容
Hive 自身并不存储用户数据,而是通过接口访问用户数据。这就使得 Hive支持各种数据源和数据格式。例如,它支持处理 HDFS 上的多种文件格式(TextFile、SequenceFile 等),还支持处理 HBase 数据库。用户也完全可以实现自己的驱动来增加新的数据源和数据格式。一种理想的应用模型是将数据存储在 HBase 中实现实时访问,而用Hive对HBase 中的数据进行批量分析。