Hive原理,
HIVE是一个构架在HADOOP之上的数据存储框架,要想使用HIVE,首先要在系统中安装并启动了HADOOP。
HIVE的安装方式很简单,从apache原网站即可down下来HIVE的各个版本,down下以后,直接解压即可。
注意,要想成功启动HIVE需要几个必要条件:
1)安装了HADOOP(当然,成功安装HADOOP的条件是成功安装了JDK)
2)配置HADOOP_INSTALL环境变量,如没有配置,可:export HADOOP_INSTALL=/yourhadooppath
把该语句导入到~/.bashrc中方便管理。
OK,HIVE可以运行了,cd到你的HIVE安装目录下,找到bin目录,进入,键入sh hive命令即可执行。为了方便也可以export PATH=$PATH:/your_hive_install_path,这样,每次可直接执行hive命令。
HIVE使用和MySQL类似的语句(HiveQL)方式进行管理分布式数据仓库,如show databases,show tables等,实际上,HIVE是将数据存储成格式化文件(表)存储在HDFS集群上,并通过在数据库中定义的数据格式metastore操作数据。
metastore默认存储在derby数据库当中,如果没有安装derby数据库,则在启动hive时程序会抛出异常,当然也可以配置该表存储在mysql上,配置方法是
1)下载mysql-jdbc jar包,放在HIVE_INSTALL的lib目录下
2)在conf下新建一个hive-site.xml(如果已有则修改之)然后输入类似下面的配置:
1 <?xml version="1.0"?>
2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
3 <configuration>
4 <property>
5 <name>hive.metastore.local</name>
6 <value>true</value>
7 </property>
8 <property>
9 <name>javax.jdo.option.ConnectionURL</name>
10 <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
11 </property>
12 <property>
13 <name>javax.jdo.option.ConnectionDriverName</name>
14 <value>com.mysql.jdbc.Driver</value>
15 </property>
16 <property>
17 <name>javax.jdo.option.ConnectionUserName</name>
18 <value>hive</value>
19 </property>
20 <property>
21 <name>javax.jdo.option.ConnectionPassword</name>
22 <value>hive</value>
23 </property>
24 </configuration>
实际上就是为HIVE的jdbc连接做了些配置,于是hive在启动时加载该配置文件信息连接mysql数据库。
3)从上面的配置我们容易看出,我们还需要在mysql中grant一个hive用户并且identified 这个hive一个hive的密码。
4)从上面的配置中还需要在mysql中create database hive
这样就OK了,重新启动HIVE,show databases;注意这里看到default,在这个hive中是无法看到mysql中的其他不相关数据库信息的,
然后在hive中执行操作
create table test (id INT, age INT);
(HIVE中不区分大小写),执行成功后,该表创建完成,表的数据存储在HDFS集群上的,默认路径是/user/hive/,
如果我们hadoop fs -lsr /user/hive就可以看到它的存储形式了