Hive是基于Hadoop构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据。其在Hadoop的架构体系中承担了一个SQL解析的过程,它提供了对外的入口来获取用户的指令然后对指令进行分析,解析出一个MapReduce程序组成可执行计划,并按照该计划生成对应的MapReduce任务提交给Hadoop集群处理,获取最终的结果。元数据——如表模式——存储在名为metastore的数据库中。
hive的安装建立在hadoop集群之上,它可以安装在hadoop集群的任一个节点上(master或slave)。当然,也可以安装在集群之外,但需要能访问hadoop集群。
在实际部署中,一般用远程mysql存储metastore信息(mysql采用ha),然后在hadoop集群的一个节点上启动hive的metastore服务(例如master上),然后使用客户端访问hive。
1、hive服务端:
1)
配置:
[hadoop@hadoop-master conf]$ vi hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop-master:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive<value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
</configuration>
2)然后启动metastore服务:hive --service metastore &,发现多了一个runJar进程。
2、服务端访问:
在hadoop-master上直接通过命令访问hive:
[hadoop@hadoop-master ~]$ hive
Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties
hive> show databases;
OK
default
src
Time taken: 1.332 seconds, Fetched: 2 row(s)
3、客户端访问:(需要有hadoop环境)
1)配置好hadoop环境;
2)配置hive环境, 修改hive配置文件:
[hadoop@hadoop-slave conf]$ vi hive-site.xml
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop-master:9083</value>
</property>
</configuration>
3)在hadoop-slave上通过hive命令访问hive。