11.2 Hive的基本操作

本节中我们将介绍Hive的基本操作,包括Hive在集群上的安装配置及Hive的Web UI的使用。

11.2.1 在集群上安装Hive

从图11-1中可以看出,Hive可以理解为在Hadoop和HDFS之上为用户封装一层便于用户使用的接口,该接口有丰富的样式,包括命令终端、Web UI及JDBC/ODBC等。因此Hive的安装需要依赖Hadoop。下面我们具体介绍如何下载、安装和配置Hive。

(1)先决条件

要求必须已经安装完成Hadoop,当前最新版本为1.0.1。Hadoop的安装我们已经在前面章节中详细讲过(参见第2章“Hadoop的安装与配置”),这里不再赘述。

(2)下载Hive安装包

当前Hive的最新版本为0.8.1,读者可通过以下命令下载Hive安装包:


wget http://labs.renren.com/apache-mirror/hive/hive-0.8.1/hive-0.8.1.tar.gz

tar xzf hive-0.8.1.tar.gz

cd hive-0.8.1


或者到Hive官方网站选择一个服务器镜像(http://www.apache.org/dyn/closer.cgi/hive)及相应的版本进行下载。

(3)配置系统环境变量/etc/profile或~/.bashrc

该步骤只是为了便于大家操作,对于Hive的安装并不是必须的。

如下所示,在PATH中加入Hive的bin及conf路径:


Config Hive

export HIVE_HOME=/home/hadoop/hadoop-1.0.1/hive-0.8.1

export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH


在当前终端输入“source/etc/profile”使环境变量对当前终端有效。

(4)修改Hive配置文档

若不进行修改,Hive将使用默认的配置文档。一些高级用户希望对其进行配置。$HIVE_HOME/conf对应的是Hive的配置文档路径。该路径下的$HIVE_HOME/conf/hive-site.xml对应的是Hive工程的配置文档,默认该配置文档并不存在,需要我们手动创建。如下所示:


cd$HIVE_HOME/conf

cp hive-default.xml.template hive-site.xml


hive-default. xml.template为系统提供给的配置文档模板,其中填写的是默认的配置参数。Hive的主要配置项如下:

hive. metastore.warehouse.dir,该参数指定的是Hive的数据存储目录,指定的是HDFS上的位置,默认值为/user/hive/warehouse。

hive. exec.scratchdir,该参数指定的是Hive的数据临时文件目录,默认位置为/tmp/hive-${user.name}。

连接数据库配置。

在11.1.2节中已经讲过,Hive需要将元数据存储在RDBMS中,这对于Hive的运行是非常重要的。在默认情况下,Hive已经为我们配置好了Derby数据库的连接参数,并且集成了Derby数据库及连接驱动jar包。下面为连接Derby数据库的关键配置:


<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<configuration>

……

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:derby:;databaseName=metastore_db;create=true</value>

<description>JDBC connect string for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>org.apache.derby.jdbc.EmbeddedDriver</value>

<description>Driver class name for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>APP</value>

<description>username to use against metastore database</description>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>mine</value>

<description>password to use against metastore database</description>

</property>

……

</configuration>


其中“javax.jdo.option.ConnectionURL”参数指定的是Hive连接数据库的连接字符串,“javax.jdo.option.ConnectionDriverName”参数指定的是驱动的类入口名称,“javax.jdo.option.ConnectionUserName”参数和“javax.jdo.option.ConnectionPassword”参数指定的是数据库的用户名和密码。使用Derby数据库需要确定在$HIVE_HOME/lib/目录下有Derby的数据库驱动。Hive0.8.1在默认情况下为我们提供了该驱动包:derby-10.4.2.0.jar。

(5)运行Hive

在上述配置完成后,直接运行$HIVE_HOME/bin/hive即可启动连接Hive,如下所示:


./bin/hive

Logging initialized using configuration in jar:file:/home/hadoop/hadoop-1.0.1/hive-

0.8.1/lib/hive-common-0.8.1.jar!/hive-log4j.properties

Hive history file=/tmp/hadoop/hive_job_log_hadoop_201205151824_37118280.txt

hive>


该方式使用的是命令行的方式(command line, cli)连接Hive进行操作。

另外,Hive还提供了丰富的Wiki文档,读者可以参考以下链接中的内容。

Hive的Wiki页面:http://wiki.apache.org/hadoop/Hive。

Hive入门指南:http://wiki.apache.org/hadoop/Hive/GettingStarted。

HQL查询语言指南:http://wiki.apache.org/hadoop/Hive/HiveQL。

演示文稿:http://wiki.apache.org/hadoop/Hive/Presentations。

由于Hive本身还处在不断的发展中,很多时候文档更新的速度还赶不上Hive本身的更新速度,因此,如果大家想了解Hive最新的发展动态或想与研究者进行交流,那么可以加入Hive的邮件列表,用户:hive-user@hadoop.apache.org,开发者:hive-dev@hadoop.apache.org。