一、简介
Hive是基于hadoop的一个数据仓库工具,有助于查询和管理分布式存储系统中的数据集,非常适合数据仓库的统计分析
Hive 不适合用于连机事物处理、也不提供实时查询,比较适合在大量不可变数据的批处理作业。
二、下载与安装
1、下载hive压缩包,并复制到centos系统的/opt/module目录下
2、解压文件:tar -zxvf apache-hive-1.0.1-bin.tar.gz 执行重命名文件夹为 hive
3、添加hive-1.0.1到环境变量中,本文前提是已经配置好了hadoop的运行环境,运行环境为hadoop2.2
vi /etc/profile 插入内容 export HIVE_HOME=/opt/modules/hive export PATH=$PATH:$HIVE_HOME
4、配置hive-default.xml和hive-site.xml文件
进入到/opt/modules/hive/conf,将hive-default.xml.template 复制为hive-default.xml和hive-site.xml文件,修改hive-env.xml文件的权限
chmod u+x hive-env.sh
5、在shell命令行中,输入:hive 则会进入到hive的shell命令窗口
(在配置的过程中,遇到了很多的问题,不过根据log日志,可以一步一步的解决问题)
三、架构
hive的架构可以分为四个部分
- 用户接口
- 主要有CLI、Client和WUI,CLI启动的时候,会同时启动一个hive的副本
- 元数据存储
- hive中的元数据是存储在RDBMS中的,如:MySQL,hive的元数据包括表的名字、表的列、表的属性、表的数据所在的目录
- 在hive中,每个数据库对于与HDFS文件系统的一个目录,在数据库中创建的表,则在相应的数据库目录下,为数据库目录的子目录。
- 解释器、编译器、优化器
- 使用HQL语句查询,需要从词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询信息存储在HDFS中,然后由MapReduce调用执行
- 数据存储
- hive的数据存储在HDFS中的,大部分的查询都被解释为MapReduce任务,只有少部分直接读取文件
架构图如下所示。
si
四、存储元数据到MySQL数据库中
a 安装MySQL数据库
yum install -y mysql-server mysql mysql-deve
b、重启mysql服务
service mysqld restart
c、登陆MySQL,并授予权限
mysql -u root -p ***
分配权限:grant all privileges on *.* to 'root'@'hadoop-yarn' identified by 'root123';
刷新权限:flush privileges
d、创建hive专用的元数据库:“hive”
create database hive;
e、在Hive的conf目录下的hive-site.xml文件添加以下配置
<property> <name>hive.metastore.local</name> <value>true</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop-yarn:3306/hive?characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root123</value> </property>
f、将mysql的驱动包复制到hive目录的lib目录下
g、启动hive命令,如下图所示
h、进入MySQL数据库
执行命令:use hive
show tables 如图所示
到此,hive的环境搭建结束,元数据metastore存储在MySQL数据库中。