Hive安装及问题解决

刚刚安装好Hadoop迫不及待要玩下hive,所以自己找了些资料,安装了下hive,这里记录详细的安装过程和碰到的问题:

1.在安装hadoop之前首先确定hadoop已经安装成功,具体安装方法请参考hadoop安装 见 http://www.linuxidc.com/Linux/2011-12/48784.htm 与 http://www.linuxidc.com/Linux/2011-12/48783.htm

2.下载hive版本 我下载的是  

下载地址为http://hive.apache.org/releases.htm

解压文件:

  1. tar -zxvf hive-0.7.0-bin.tar.gz  
3.配置环境变量:
  1. [root@localhost hive]# vim /etc/profile  
  1. export HADOOP_HOME=/root/hadoop-0.20.2  
  2. export PATH=$PATH:$HADOOP_HOME/bin  
  3.   
  4. export HIVE_HOME=/usr/hive/hive-0.7.0-bin  
  5. PATH=$PATH:$HIVE_HOME/bin  
  6.   
  7. export PATH  
  8. export JAVA_HOME=/usr/java/jdk1.7.0_01  

4.我存储元数据是采用第三方的mysql数据库,这种情况下需要下载一个数据包mysql-connector-java-5.1.18-bin.jar,放到hive的lib目录下

在hive的conf目录下创建文件hive-site.xml配置文件,代码如下:

  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <configuration>  
  5. <property>  
  6. <name>hive.metastore.local</name>  
  7.   <value>true</value>  
  8. </property>  
  9.   
  10. <property>  
  11. <name>javax.jdo.option.ConnectionURL</name>  
  12.   <value>jdbc:mysql://192.168.0.237:3306/metastore_db?createDatabaseIfNotExist=true</value>  
  13. </property>  
  14.   
  15. <property>  
  16. <name>javax.jdo.option.ConnectionDriverName</name>  
  17.   <value>com.mysql.jdbc.Driver</value>  
  18. </property>  
  19.   
  20. <property>   
  21.   <name>javax.jdo.option.ConnectionUserName</name>   
  22.   <value>t237</value>   
  23. </property>   
  24.     
  25. <property>   
  26.   <name>javax.jdo.option.ConnectionPassword</name>   
  27.   <value>123456</value>   
  28. </property>   
  29. <property>   
  30.   <name>datanucleus.fixedDatastore</name>   
  31.   <value>false</value>   
  32. </property>   
  33. </configuration>  
5.运行hive
  1. [root@localhost conf]# hive  
  2. Hive history file=/tmp/root/hive_job_log_root_201112061510_1145168119.txt  
  3. hive> show tables;  
  4. OK  
  5. log  
  6. log_info  
  7. log_new  
  8. maptile  
  9. result  
  10. Time taken: 2.889 seconds  
  11. hive>   
6.这里遇到点问题:刚开始执行hive时,执行show tables;报如下错误:
  1. FAILED: Hive Internal Error: java.lang.RuntimeException(Error while making MR scratch directory - check filesystem config (null))  
  2. java.lang.RuntimeException: Error while making MR scratch directory - check filesystem config (null)  
后来询问了google,得到如下解决办法:

原有的hadoop配置文件core-site.xml信息如下:

  1. <pre name="code" class="plain"><!-- Put site-specific property overrides in this file. -->  
  2.   
  3. <configuration>  
  4. <property>  
  5.     <name>hadoop.tmp.dir</name>  
  6.     <value>/hadoop-root/tmp</value>  
  7. </property>  
  8. <property>    
  9.     <name>fs.default.name</name>    
  10.     <value>hdfs://192.168.30.149:9000/</value>  
  11. </property>  
  12. </configuration>  

改成:

  1. <!-- Put site-specific property overrides in this file. -->  
  2.   
  3. <configuration>  
  4. <property>  
  5.     <name>hadoop.tmp.dir</name>  
  6.     <value>/hadoop-root/tmp</value>  
  7. </property>  
  8. <property>    
  9.     <name>fs.default.name</name>    
  10.     <value>hdfs://hadoop149:9000/</value>  
  11. </property>  
  12. </configuration>  
重启hadoop,运行hive,问题解决。

之后创建表一直很顺利,但是到查询表例如我执行:select size from log limit 10;时,又报错如下:

  1. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf  
后来问了下百度和google都没有结果,自己觉得是缺少了类文件,我便把hive/lib下所有的hive-*文件拷贝到hadoop的lib下

重启hadoop,问题解决。但是归根结底我觉得是$HADOOP_CLASSPATH变量没有配置清楚,这个之后再解决这里做个标记。

执行select 后运行正常:

  1. hive> select size from log_info limit 12;  
  2. Total MapReduce jobs = 1  
  3. Launching Job 1 out of 1  
  4. Number of reduce tasks is set to 0 since there's no reduce operator  
  5. Starting Job = job_201112061127_0004, Tracking URL = http://hadoop149:50030/jobdetails.jsp?jobid=job_201112061127_0004  
  6. Kill Command = /root/hadoop-0.20.2/bin/hadoop job  -Dmapred.job.tracker=hdfs://192.168.30.149:9004 -kill job_201112061127_0004  
  7. 2011-12-06 15:35:47,923 Stage-1 map = 0%,  reduce = 0%  
  8. 2011-12-06 15:35:50,952 Stage-1 map = 9%,  reduce = 0%  
  9. 2011-12-06 15:35:52,975 Stage-1 map = 27%,  reduce = 0%  
  10. 2011-12-06 15:35:53,984 Stage-1 map = 45%,  reduce = 0%  
  11. 2011-12-06 15:35:56,001 Stage-1 map = 64%,  reduce = 0%  
  12. 2011-12-06 15:35:59,023 Stage-1 map = 82%,  reduce = 0%  
  13. 2011-12-06 15:36:00,038 Stage-1 map = 100%,  reduce = 0%  
  14. 2011-12-06 15:36:03,062 Stage-1 map = 100%,  reduce = 100%  
  15. Ended Job = job_201112061127_0004  
现在又找到的心得问题:在执行删除表操作时,出现如下错误:
  1. NestedThrowables:  
  2. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes  
  3. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask  
这个问题还没有解决:期待牛人解决


最后附上:内存数据库derby的配置

  1. <configuration>   
  2. <property>   
  3.   <name>hive.metastore.local</name>   
  4.   <value>true</value>   
  5.   <description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>   
  6. </property>   
  7.     
  8. <property>   
  9.   <name>javax.jdo.option.ConnectionURL</name>   
  10.   <value>jdbc:derby://hadoop149:1527/metastore_db;create=true</value>   
  11.   <description>JDBC connect string for a JDBC metastore</description>   
  12. </property>   
  13.     
  14. <property>   
  15.   <name>javax.jdo.option.ConnectionDriverName</name>   
  16.   <value>org.apache.derby.jdbc.ClientDriver</value>   
  17.   <description>Driver class name for a JDBC metastore</description>   
  18. </property>   
  19.     
  20. </configuration>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值