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。