当前位置:   article > 正文

Hive 安装_use metastore显示database changed

use metastore显示database changed
http://archive.cloudera.com/cdh/3/ 中下载hive-0.7.1-cdh3u1.tar.gz。 
在安装了Hadoop的namenode上解压Hive: 
Java代码   收藏代码
  1. $tar zxvf hive-0.7.1-cdh3u1.tar.gz -C /home/hadoop/cdh3   


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

引用
export HIVE_HOME=/home/hadoop/cdh3/hive-0.7.1-cdh3u1 
export PATH=$PATH:HIVE_HOME/bin


然后启动Hive 
Java代码   收藏代码
  1. $hive  

如果能够进入Hive的shell页面,并能浏览,则表示Hive已经可以使用了。 
引用

hadoop@ubuntu:~$ hive 
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201110241652_1651346475.txt 
hive> show tables; 
OK 
Time taken: 3.496 seconds 


在安装过程中,第一次启动Hive没有成功,后来在网上查到原因如下,并成功解决: 
错误如下: 
Java代码   收藏代码
  1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf  
  2.         at java.lang.Class.forName0(Native Method)  
  3.         at java.lang.Class.forName(Class.java:247)  
  4.         at org.apache.hadoop.util.RunJar.main(RunJar.java:149)  
  5. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf  
  6.         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)  
  7.         at java.security.AccessController.doPrivileged(Native Method)  
  8.         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)  
  9.         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)  
  10.         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)  
  11.         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控制台: 
Java代码   收藏代码
  1. mysql -uroot -p  

建立hive帐号 
Java代码   收藏代码
  1. CREATE USER 'hive' IDENTIFIED BY 'hive';  

赋予权限 
Java代码   收藏代码
  1. GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;  


用hive帐号测试远程登录 
Java代码   收藏代码
  1. mysql -h localhost -u hive -p  


3) 建立Hive专用的元数据库 
Java代码   收藏代码
  1. create database hive  


4)在本地安装MySQL客户端 

5)在Hive的conf目录下修改配置文件hive-site.xml(如果没有该文件,复制hive-default.xml并改名为hive-site.xml),配置文件修改如下,红色部分为修改内容 
Xml代码   收藏代码
  1. <property>  
  2.   <name>javax.jdo.option.ConnectionURL</name>  
  3.   <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>  
  4.   <description>JDBC connect string for a JDBC metastore</description>  
  5. </property>  
  6.   
  7. <property>  
  8.   <name>javax.jdo.option.ConnectionDriverName</name>  
  9.   <value>com.mysql.jdbc.Driver</value>  
  10.   <description>Driver class name for a JDBC metastore</description>  
  11. </property>  
  12.   
  13. <property>  
  14.   <name>javax.jdo.option.ConnectionUserName</name>  
  15.   <value>root</value>  
  16.   <description>username to use against metastore database</description>  
  17. </property>  
  18.   
  19. <property>  
  20.   <name>javax.jdo.option.ConnectionPassword</name>  
  21.   <value>root123</value>  
  22.   <description>password to use against metastore database</description>  
  23. </property>  


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

7)启动Hive shell,执行 
Java代码   收藏代码
  1. show tables;  

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

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

Java代码   收藏代码
  1. show tables;  

Java代码   收藏代码
  1. select name from my;  


然后我们以刚刚建立的hive帐号登录MySQL查看元数据信息。 
引用
mysql> use hive 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 

Database changed 

mysql> show tables; 
+-----------------+ 
| Tables_in_hive  | 
+-----------------+ 
| BUCKETING_COLS  | 
| COLUMNS         | 
| DATABASE_PARAMS | 
| DBS             | 
| PARTITION_KEYS  | 
| SDS             | 
| SD_PARAMS       | 
| SEQUENCE_TABLE  | 
| SERDES          | 
| SERDE_PARAMS    | 
| SORT_COLS       | 
| TABLE_PARAMS    | 
| TBLS            | 
+-----------------+ 
13 rows in set (0.00 sec) 

mysql> select * from TBLS; 
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+ 
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER  | RETENTION | SD_ID | TBL_NAME | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT | 
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+ 
|      1 |  1319445990 |     1 |                0 | hadoop |         0 |     1 | my       | MANAGED_TABLE | NULL               | NULL               | 
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+ 
1 row in set (0.00 sec) 

在TBLS中可以看到Hive表的元数据。 


Hive web service,Hive web接口,启动方法: 
https://cwiki.apache.org/confluence/display/Hive/HiveWebInterface  
Java代码   收藏代码
  1. export ANT_LIB=$ANT_HOME/lib  

Java代码   收藏代码
  1. hive --service hwi  


然后打开http://ip:9999/hwi/就能看到Hive的web页面。 http://archive.cloudera.com/cdh/3/中下载hive-0.7.1-cdh3u1.tar.gz。 
在安装了Hadoop的namenode上解压Hive: 
Java代码   收藏代码
  1. $tar zxvf hive-0.7.1-cdh3u1.tar.gz -C /home/hadoop/cdh3   


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

引用
export HIVE_HOME=/home/hadoop/cdh3/hive-0.7.1-cdh3u1 
export PATH=$PATH:HIVE_HOME/bin


然后启动Hive 
Java代码   收藏代码
  1. $hive  

如果能够进入Hive的shell页面,并能浏览,则表示Hive已经可以使用了。 
引用

hadoop@ubuntu:~$ hive 
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201110241652_1651346475.txt 
hive> show tables; 
OK 
Time taken: 3.496 seconds 


在安装过程中,第一次启动Hive没有成功,后来在网上查到原因如下,并成功解决: 
错误如下: 
Java代码   收藏代码
  1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf  
  2.         at java.lang.Class.forName0(Native Method)  
  3.         at java.lang.Class.forName(Class.java:247)  
  4.         at org.apache.hadoop.util.RunJar.main(RunJar.java:149)  
  5. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf  
  6.         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)  
  7.         at java.security.AccessController.doPrivileged(Native Method)  
  8.         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)  
  9.         at java.lang.ClassLoader.loadClass(ClassLoader.java:307)  
  10.         at java.lang.ClassLoader.loadClass(ClassLoader.java:252)  
  11.         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控制台: 
Java代码   收藏代码
  1. mysql -uroot -p  

建立hive帐号 
Java代码   收藏代码
  1. CREATE USER 'hive' IDENTIFIED BY 'hive';  

赋予权限 
Java代码   收藏代码
  1. GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;  


用hive帐号测试远程登录 
Java代码   收藏代码
  1. mysql -h localhost -u hive -p  


3) 建立Hive专用的元数据库 
Java代码   收藏代码
  1. create database hive  


4)在本地安装MySQL客户端 

5)在Hive的conf目录下修改配置文件hive-site.xml(如果没有该文件,复制hive-default.xml并改名为hive-site.xml),配置文件修改如下,红色部分为修改内容 
Xml代码   收藏代码
  1. <property>  
  2.   <name>javax.jdo.option.ConnectionURL</name>  
  3.   <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>  
  4.   <description>JDBC connect string for a JDBC metastore</description>  
  5. </property>  
  6.   
  7. <property>  
  8.   <name>javax.jdo.option.ConnectionDriverName</name>  
  9.   <value>com.mysql.jdbc.Driver</value>  
  10.   <description>Driver class name for a JDBC metastore</description>  
  11. </property>  
  12.   
  13. <property>  
  14.   <name>javax.jdo.option.ConnectionUserName</name>  
  15.   <value>root</value>  
  16.   <description>username to use against metastore database</description>  
  17. </property>  
  18.   
  19. <property>  
  20.   <name>javax.jdo.option.ConnectionPassword</name>  
  21.   <value>root123</value>  
  22.   <description>password to use against metastore database</description>  
  23. </property>  


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

7)启动Hive shell,执行 
Java代码   收藏代码
  1. show tables;  

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

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

Java代码   收藏代码
  1. show tables;  

Java代码   收藏代码
  1. select name from my;  


然后我们以刚刚建立的hive帐号登录MySQL查看元数据信息。 
引用
mysql> use hive 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 

Database changed 

mysql> show tables; 
+-----------------+ 
| Tables_in_hive  | 
+-----------------+ 
| BUCKETING_COLS  | 
| COLUMNS         | 
| DATABASE_PARAMS | 
| DBS             | 
| PARTITION_KEYS  | 
| SDS             | 
| SD_PARAMS       | 
| SEQUENCE_TABLE  | 
| SERDES          | 
| SERDE_PARAMS    | 
| SORT_COLS       | 
| TABLE_PARAMS    | 
| TBLS            | 
+-----------------+ 
13 rows in set (0.00 sec) 

mysql> select * from TBLS; 
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+ 
| TBL_ID | CREATE_TIME | DB_ID | LAST_ACCESS_TIME | OWNER  | RETENTION | SD_ID | TBL_NAME | TBL_TYPE      | VIEW_EXPANDED_TEXT | VIEW_ORIGINAL_TEXT | 
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+ 
|      1 |  1319445990 |     1 |                0 | hadoop |         0 |     1 | my       | MANAGED_TABLE | NULL               | NULL               | 
+--------+-------------+-------+------------------+--------+-----------+-------+----------+---------------+--------------------+--------------------+ 
1 row in set (0.00 sec) 

在TBLS中可以看到Hive表的元数据。 


Hive web service,Hive web接口,启动方法: 
https://cwiki.apache.org/confluence/display/Hive/HiveWebInterface  
Java代码   收藏代码
  1. export ANT_LIB=$ANT_HOME/lib  

Java代码   收藏代码
  1. hive --service hwi  


然后打开http://ip:9999/hwi/就能看到Hive的web页面。 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/633502
推荐阅读
相关标签
  

闽ICP备14008679号