首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

装配Hive

2012-07-23 
安装Hive从http://archive.cloudera.com/cdh/3/中下载hive-0.7.1-cdh3u1.tar.gz。在安装了Hadoop的namenode

安装Hive
从http://archive.cloudera.com/cdh/3/中下载hive-0.7.1-cdh3u1.tar.gz。
在安装了Hadoop的namenode上解压Hive:

$tar zxvf hive-0.7.1-cdh3u1.tar.gz -C /home/hadoop/cdh3 


修改hive安装目录下/conf/hive-env.sh.template中的HADOOP_HOME为实际的Hadoop安装目录;
添加环境变量
$sudo gedit /etc/profile

$hive
如果能够进入Hive的shell页面,并能浏览,则表示Hive已经可以使用了。
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at org.apache.hadoop.util.RunJar.main(RunJar.java:149)Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

解决方法是,安装Hadoop时,修改Hadoop目录下/conf/hadoop-env.sh时,添加HADOOP_CLASSPATH变量覆盖了原有的变量,改成如下的形式即可:
HADOOP_CLASSPATH=$HADOOP_CLASSPATH:....
红色为添加部分。问题解决。

这样安装的元数据保持在内嵌的数据库Derby中,只能允许一个会话连接,如果要支持多用户多会话,则需要一个独立的元数据库,目前比较流行的是使用MySQL,下面进行配置。

1)安装好MySQL服务器端和MySQL客户端,并启动MySQL服务。
http://wadefall.iteye.com/admin/blogs/1209545

2)为Hive建立相应的MySQL帐号,并赋予足够的权限
进入MySQL控制台:
mysql -uroot -p

建立hive帐号
CREATE USER 'hive' IDENTIFIED BY 'hive';

赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;


用hive帐号测试远程登录
mysql -h localhost -u hive -p


3) 建立Hive专用的元数据库
create database hive


4)在本地安装MySQL客户端

5)在Hive的conf目录下修改配置文件hive-site.xml(如果没有该文件,复制hive-default.xml并改名为hive-site.xml),配置文件修改如下,红色部分为修改内容
<property>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>  <description>JDBC connect string for a JDBC metastore</description></property><property>  <name>javax.jdo.option.ConnectionDriverName</name>  <value>com.mysql.jdbc.Driver</value>  <description>Driver class name for a JDBC metastore</description></property><property>  <name>javax.jdo.option.ConnectionUserName</name>  <value>root</value>  <description>username to use against metastore database</description></property><property>  <name>javax.jdo.option.ConnectionPassword</name>  <value>root123</value>  <description>password to use against metastore database</description></property>


6)把MySQL的JDBC驱动包(我使用的是mysql-connector-java-5.1.16-bin.jar)复制到Hive的lib目录下。

7)启动Hive shell,执行
show tables;

如果不报错,表明基于独立元数据库的Hive已经安装成功了。

查看一下元数据的效果。
在Hive上建立数据表
CREATE TABLE my(id INT,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

show tables;

select name from my;


然后我们以刚刚建立的hive帐号登录MySQL查看元数据信息。
export ANT_LIB=$ANT_HOME/lib
hive --service hwi


然后打开http://ip:9999/hwi/就能看到Hive的web页面。

热点排行