1.Hive简介
现如今,数据可能是当下最赚钱的资源了。面对如此多的数据,Hadoop提供了完美的解决方案,使用分布式文件系统HDFS存储数据,使用MapReduce计算模型来处理数据。不过,仍然存在着一系列的挑战,例如:(1)用户如何从一个现有的数据基础结构转移到Hadoop上,而这个结构是基于传统的关系数据库和结构化查询语句(SQL)的。(2)MapReduce计算框架实在是太麻烦,比如用MapReduce来join两个文件需要好多的代码量(前面博客写过)。可不可以在文件上直接使用类似于SQL的语句来进行操作数据,不写Mapper和Reducer函数。这样的话,对大多数的工程师来说,是真的再好不过了,能够直接使用类似于SQL语句的方式来处理数据,真是太舒服了。基于这一系列问题,建立在Hadoop上的数据仓库Hive营运而生。
Hive提供了一种类SQL的查询语言,叫做HvieQL,一种声明式的语言,用户会提交声明式的查询,而Hive会将其转换为MapReduce job.大多数情况下,用户不需要了解Hive内部是如何工作的,这样可以专注于手头上的事情。
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
2.Hive架构与工作流程
Hive的主要模块图示如下:
如上图所示,Hive的发行版本中附带的模块有CLI(命令行界面,如同我们安装了MySql之后的命令行界面),一个称为Hive网页界面(HWI)的简单网页界面,以及可通过JDBC,ODBC与Thrift服务器进行远程连接。对于那些更喜欢图形用户界面的用户,可以使用现在逐步出现的商业和开源的解决方案,例如Karmasphere发行的一个商业产品(http://karmasphere.com),Cloudera提供的开源的Hue项目以及Qubole提供的“Hive即服务”方式。
所有的命令和查询都会进入到Driver(驱动模式),通过该模块对输入进行解析,对需求的计算进行优化,然后按照指定的步骤执行(通常是启动多个MapReduce任务(job)来执行)。当需要启动MapReduce任务(job)时,Hive本身是不会生成Java MapReduce算法程序的。相反,Hive通过一个表示“job执行计划”的XML文件驱动执行内置的、原生的Mapper和Reducer模块。换句话说,这些通用的函数类似于微型的语言翻译程序,而这个驱动计算的“语言”是以XML形式编码的。
Hive通过和JobTracker通信来初始化MapReduce任务(Job),而不必部署在JobTracker所在的管理节点上执行。在大型集群中,通常会有网关机专门用于部署像Hive这样的工具。在这些网关机上可远程和管理节点上的JobTracker通信来执行任务(Job)。通常,要处理的数据文件是存储在分布式文件系统HDFS中的,而HDFS是由NameNode进行管理的。
Metastore(元数据存储)是一个独立的关系型数据库(通常是一个MySql实例,默认是derby),Hive会在其中保存表模式和其他系统的元数据。
工作流程如下:
3.Hive架构与工作流程(软件包以及配置放在最后链接供下载使用)
我们用的s10主机(已经搭建好了Hadoop集群,可以参考大数据系列之Hadoop)来进行搭建
软件包以及配置放在最后链接供下载使用,请先下载,再配置
搭建步骤如下:
1.下载hive2.1-tar.gz
2.tar开
$>tar -xzvf hive-2.1.0.tar.gz -C /home/zpx/soft //tar开
$>cd /home/zpx/soft/hive-2.1.0 //
$>ln -s hive-2.1.0 hive //符号连接
3.配置环境变量
[/etc/profile]
export HIVE_HOME=/home/zpx/soft/hive export PATH=$PATH:$HIVE_HOME/bin
# 使修改生效
source /etc/profile
4.验证hive安装成功
$>hive ---version
5.配置hive,使用win8的mysql存放hive的元数据.
a)复制mysql驱动程序到hive的lib目录下。
...
b)配置hive-site.xml
复制hive-default.xml.template为hive-site.xml
修改连接信息为mysql链接地址,将${system:...字样替换成具体路径。
[hive/conf/hive-site.xml](使用的是远程链接MySql)
配置文件后面链接下载提供
6.在msyql中创建存放hive信息的数据库
7.初始化hive的元数据(表结构)到mysql中。
以下在链接的过程中可能会出现拒接链接的问题,因为是远程连接MySql被拒绝访问(如果是本地链接则忽略),如果出现了拒绝访问,那就去查看MySql的user表将Host修改为%
$>./schematool -dbType mysql -initSchema
8.开启Hive进入命令行模式(CLI)
$>hive
以下为Hive的配置所用的工具包以及配置文件。其中将hive-site中的/home/zpx修改成自己的虚拟机目录,将数据库链接换成自己的
配置文件以及工具包地址
链接:https://pan.baidu.com/s/1M2cPvje8vFs6uo7fqkniTA 密码:3352