hive安装出现的问题

来源:互联网 发布:邢岫烟 知乎 编辑:程序博客网 时间:2024/06/05 23:20

安了一天hive,总算安好了。安装过程中出现了不少问题,记录一下……

 

hadoop版本 hadoop-0.20.2

按着网上文档,安装比较顺利

 

刚学了HIVE,想试着安装一下

文档上写的是用hive-0.8.1

发现apache无法下载这个版本了,最老的是hive-0.10.0

 网上随便找了一个。

1.解压

[hadoop@hadoop0 ~]tar -zxvf hive-0.8.1.tar.gz

(我的hadoop、hive相关目录全在hadoop用户下)

2.配环境变量

[hadoop@hadoop0 ~]$ vi .bash_profile 
 

# .bash_profile

# Get the aliases and functionsif [ -f ~/.bashrc ]; then        . ~/.bashrcfi

# User specific environment and startup programs

PATH=$PATH:$HOME/binMYSQL_HOME=/home/hadoop/mysql-5.5.24-linux2.6-i686JAVA_HOME=/usr/java/jdk1.6.0_45HIVE_HOME=/home/hadoop/hive-0.10.0HADOOP_HOME=/home/hadoop/hadoop-0.20.2PATH=$JAVA_HOME/bin:$MYSQL_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/tools.jar

export PATH CLASSPATH JAVA_HOME HADOOP_HOME HIVE_HOME MYSQL_HOME

(注:必须配好HADOOP_HOME。hive是建立在hadoop上的,存在依赖关系,执行hive命令的时候,会自动寻找HADOOP_HOME,必须保证能找到)

3.配置文件

cp hive-default.xml.template hive-site.xml

4.测试

执行hive

没报错

执行show tables;

没报错,OK!

 

hive 的元数据要保存到关系型数据库中,默认的会放到hive自带的derby中。网上看了,这种方式是不支持多用户同时访问的,所以要改成mysql数据库。

5.安装mysql数据库(我用的是mysql-5.5.24-linux2.6-i686

网上要新建用户,赋权什么的,感觉麻烦,直接用了root ,设置密码123456

同时把mysql-connector-java-5.1.25-bin.jar 放到/home/hadoop/hive-0.10.0/lib 中

ok !

6.修改配置文件

cat hive-site.xml<configuration><property><name>hive.metastore.local</name><value>true</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property></configuration>

 

以上是我按网上的操作执行,本来以为万无一失的,但是错了……

执行show tables;

 java.lang.IllegalArgumentException: URI:  does not have a scheme

网上说是找不到元数据信息什么的,或是说连接数据库的URI错了
我仔细看了hive-site.xml,实在看不出有什么问题

难道是我网上下的HIVE有问题?
于是我网上到apache官网下了hive-0.10.0。

解压,配$HIVE_HOME.

执行hive

报错。我看了一下,应该是没有找到hive的配置文件。

执行

cp hive-default.xml.template hive-site.xml

执行hive

报错。

查看日志文件

我勒个去……官方的xml文件竟然也有错,有好几处的<description>竟然没有对应的</description>

我觉得以后有必要对官方的开源项目持必要的质疑态度了

把对应的地方给填上</description>

执行hive

OK!

执行show tables;

OK!

配配置文件hive-site.xml

cat hive-site.xml<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property></configuration>

注意,hive-0.10.0的配置文件里是没有

<property><name>hive.metastore.local</name>

<value>true</value>

</property>

这个属性的。配好上面的,就会自动转成用MYSQL存储元信息


引入mysql-connector-java-5.1.25-bin.jar

执行hive

OK

执行show tables;

Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient


更改hive-log4j.properties

hive.root.logger=DEBUG,DRFA

在执行hive

show tables;

 到/tmp/hadoop/hive.log里查看日志信息,发现

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

网上查了,才明白原因。

对于数据库,要想通过用户名远程访问,必须要开设相关权限才行

我以前在windows上用MYSQL是图形安装的,可能已经赋过权限了

现在在LINUX上没有进行赋权操作,难怪不行呢

进入MYSQL,执行

CREATE USER 'hive' IDENTIFIED BY 'hive';  GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANT OPTION;  

修改hive-site.xml

<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value></property></configuration>执行hive
执行show tables;

终于成功了!

我又在我之前的hive-0.8.1上试了,但是还是不行。具体原因也懒得追究了

 

总结:

安装过程

1.解压hive.tar.gz

2.配环境变量HIVE_HOME

3.安装mysql

4.建立hive用户和数据库,并赋权

5.配hive-site.xml

OK!

说着简单,但是不尝试真的不知道还有一些东西是需要学习的! 

 

 

 

原创粉丝点击