Hadoop-初步认识Hive

一、Hive是什么?

Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 QL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

二、Hive和常用数据库的区别

Hive基于hadoop,hadoop是批处理系统,不能保证低延迟,因此,hive的查询也不能保证低延迟。Hive的工作模式是提交一个任务,等到任务结束时被通知,而不是实时查询。相对应的是,类似于oracle这样的系统当运行于小数据集的时候,响应非常快,可当处理的数据集非常大的时候,可能需要数小时。需要说明的是,hive即使在很小的数据集上运行,也可能需要数分钟才能完成。总之,低延迟不是hive追求的首要目标。hive的设计目标是:可伸缩、可扩展、容错及输入格式松耦合。

三、Hive的几个特点

1.Hive最大的特点是通过类SQL来分析大数据,而避免了写MapReduce程序来分析数据,这样使得分析数据更容易;

2.数据是存储在HDFS上的,Hive本身并不提供数据的存储功能;

3.Hive是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上(比如MySQL);

4.数据存储方面:它能够存储很大的数据集,并且对数据完整性、格式要求并不严格;

5.数据处理方面:因为Hive语句最终会生成MapReduce任务去计算,所以不适用于实时计算的场景,它适用于离线分析。

四、Hive架构

Hive的核心是驱动引擎,驱动引擎由四部分组成:解释器:解释器的作用是将HiveSQL语句转换为语法树(AST);编译器:编译器是将语法树编译为逻辑执行计划;优化器:优化器是对逻辑执行计划进行优化;执行器:执行器是调用底层的运行框架执行逻辑执行计划。

Hive的数据是存储在HDFS上的。Hive中的库和表可以看作是对HDFS上数据做的一个映射。所以Hive必须是运行在一个Hadoop集群上的。

Hive语句的执行过程:Hive中的执行器,是将最终要执行的MapReduce程序放到YARN上以一系列Job的方式去执行。

Hive的元数据存储:Hive的元数据是一般是存储在MySQL这种关系型数据库上的,Hive和MySQL之间通过MetaStore服务交互。

Hive客户端:Hive有很多种客户端。cli命令行客户端,采用交互窗口,用hive命令行和Hive进行通信;HiveServer2客户端,用Thrift协议进行通信,Thrift是不同语言之间的转换器,是连接不同语言程序间的协议,通过JDBC或者ODBC去访问Hive;HWI客户端:hive自带的一个客户端,但是比较粗糙,一般不用;HUE客户端:通过Web页面来和Hive进行交互,使用的比较多。

五、Hive 资源

Hive 本身提供了较丰富的文档,以下链接提供了 Hive 的一些基础文档:

FaceBook 镜像(被墙需翻墙):[[http://mirror.facebook.com/facebook/hive]]
Wiki 页面:[[http://wiki.apache.org/hadoop/Hive]]
入门指南:[[http://wiki.apache.org/hadoop/Hive/GettingStarted]]
查询语言指南:[[http://wiki.apache.org/hadoop/Hive/HiveQL]]
演示文稿:[[http://wiki.apache.org/hadoop/Hive/Presentations]]
蓝图:[[http://wiki.apache.org/hadoop/Hive/Roadmap]]
大多数有关 Hive 的使用和特性的问题可以从以上的链接中寻找到答案。当然,由于 Hive 本身在不断的发展中,文档的更新速度很多时候都赶不上 Hive 本身的更新速度,若希望了解 Hive 的最新动态或者遇到 Bug,可以加入 Hive 的邮件列表:
* User: hive-user@hadoop.apache.org
* Developer: hive-dev@hadoop.apache.org

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值