开发环境:
ubuntu10.04
jdk:1.7.0_40
Hadoop:1.2.1
1、下载安装包
首先从http://hive.apache.org/downloads.html下载并解压到一个目录下,笔者是/root/hive。
Hiva需要Hadoop已经启动并运行,所以先得运行hadoop。然后在HDFS中配置几个目录备用
2、配置HDFS中的目录
bin/hadoop fs -mkdir /tmp
bin/hadoop fs -mkdir /user/hive/warehouse
bin/hadoop fs -chmod g+w /tmp
bin/hadoop fs -chmod g+w /user/hive/warehouse
3、配置共享SQL数据库
Hive部署在多用户环境中,就需要有一个集中的地方存储数据。通常会使用一个共享的SQL数据库,如mysql,但任何符合JDBC的数据库都是可以的,这里以mysql为例。
安装mysql ,执行如下命令:
sudo apt-get install mysql-server mysql-client
安装完成之后可以可以验证下是否成功。
执行命令:
netstat -tap|grep mysql
如图所示:
安装好mysql 还需要jdbc驱动的支持,可以到http://dev.mysql.com/downloads/connector/j/ 下载驱动,并解压出来。
在解压出来的目录里找到mysql-connector-java-5.1.10.jar(版本不同,名字略有差别)并拷贝到 $JAVA_HOME/jre/lib/ext下。这个目录是之前安装了jdk的目录。
此时还需要创建一个数据库作为Hive的metastore。这个数据库通常命名为metastore_db。
mysql> CREATE DATABASEmetastore_db;
最后还要添加mysql用户访问权限:
在mysql中输入如下指令
mysql> grant all on *.* to root@"%" identified by '123456';
这里的 root 账号名和 密码 要和下文保持一致!!!
4、修改Hive的配置文件
在$HIVE_HOME/conf目录下,原始的安装中没有hive-site.xml文件,因此需要手动创建。hive-site.xml代码如下所示:
即表示配置成功。
补充:
后来安装了HBase之后,发现再次开启Hive就报错了:
<span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">root@ubuntu:~/hive/hive-0.12.0# bin/hive</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/thrift/TException</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.lang.Class.forName0(Native Method)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.lang.Class.forName(Class.java:270)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at org.apache.hadoop.util.RunJar.main(RunJar.java:153)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">Caused by: java.lang.ClassNotFoundException: org.apache.thrift.TException</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.net.URLClassLoader$1.run(URLClassLoader.java:366)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.net.URLClassLoader$1.run(URLClassLoader.java:355)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.security.AccessController.doPrivileged(Native Method)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.net.URLClassLoader.findClass(URLClassLoader.java:354)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.lang.ClassLoader.loadClass(ClassLoader.java:424)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">at java.lang.ClassLoader.loadClass(ClassLoader.java:357)</span><br style="font-family: 'Microsoft YaHei'; font-size: 14.44444465637207px;" /><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px; white-space: pre;"> </span><span style="font-family:'Microsoft YaHei';font-size: 14.44444465637207px;">... 3 more</span>后来查找发现,是因为Hadoop的配置文件hadoop-env.h被改动了;
将
<span style="font-family:'Microsoft YaHei';">export HADOOP_CLASSPATH=$HBASE_HOME/hbase-0.94.18.jar:$ZOOKEEPER_HOME/zookeeper-3.4.6.jar:$HBASE_HOME/conf</span>改成如下所示即可:
<span style="font-family:'Microsoft YaHei';">export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/hbase-0.94.18.jar:$ZOOKEEPER_HOME/zookeeper-3.4.6.jar:$HBASE_HOME/conf</span>参考资料: