搭建hive的环境,以mysql为Metastore

本文档详细介绍了在Ubuntu系统上,使用Hadoop 1.2.1版本搭建Hive环境,并配置MySQL作为Hive的Metastore数据库的步骤。包括安装MySQL,创建数据库与用户权限,安装Hive,配置环境变量,修改hive-site.xml,添加MySQL驱动,以及解决hostname与IP相关问题。
摘要由CSDN通过智能技术生成

我的环境是Ubuntu, hadoop 版本 是 1.2.1。 搭建hadoop环境就不叙述了,网上博客很多,可以去查。


1. 首先下载mysql :   sudo  apt-get install mysql-server .  按着提示一步一步走就好,但是别忘记设密码。

2. 接着在接着在 mysql 里面创建 数据库  hive:   create database hive;  因为我的链接hive的用户名就是root

    所以我要在root下增加权限,使它能够远程链接。grant all on hive.* to 'root'@'%' identified by '123456'

    其中123456 是我的mysql的进入密码。这里当然也可以增加用户,然后赋予权限(可以参考   

     http://www.cnblogs.com/fslnet/p/3143344.html的帖子)

3.  接下来就可以安装hive了,先去官网下载hive。 然后解压到自己需要的目录下。

4.  设置环境变量  这里的/opt/hive 是自己hive安装路径。首先 sudo vim /etc/profile 加入下面几项。加好了不要忘记

     source  /etc/profile

     export HIVE_HOME=/opt/hive

     export PATH=$PATH:$HIVE_HOME/bin

     export CLASSPATH=$CLASSPATH:$HIVE_HOME/bin

5. 修改hive-site.xml  先cope hive/conf/ 中的hive-env.xml.template. 改名为hive-site.xml,修改后如下。

[html]  view plain copy
  1.   
  2. <property>  
  3.   <name>javax.jdo.option.ConnectionURL</name>  
  4.   <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>  
  5.   <description>JDBC connect string for a JDBC metastore</description>  
  6. </property>  
  7.   
  8. <property>  
  9.   <name>javax.jdo.option.ConnectionDriverName</name>  
  10.   <value>com.mysql.jdbc.Driver</value>  
  11.   <description>Driver class name for a JDBC metastore</description>  
  12. </property>  
  13.   
  14. <property>  
  15.   <name>javax.jdo.option.ConnectionUserName</name>  
  16.   <value>root</value>  
  17.   <description>username to use against metastore database</description>  
  18. </property>  
  19.   
  20. <property>  
  21.   <name>javax.jdo.option.ConnectionPassword</name>  
  22.   <value>123456</value>  
  23.   <description>password to use against metastore database</description>  
  24. </property>  

6. 下载mysql驱动 并将其复制到hive/lib中  

            mysql-connector-java-5.1.31-bin.jar

7.  启动hive 就好了。



我安装的时候一直出现一个问题就是 我的ubuntu 的hostname 是hadoop  IP是192.168.46.100. 所以设置环境变量的时候是这样

           

  1. <property>  
  2.   <name>javax.jdo.option.ConnectionURL</name>  
  3.   <value>jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true</value>  
  4.   <description>JDBC connect string for a JDBC metastore</description>  
  5. </property>                                                          


所以一直出现这个错误  Caused by: java.sql.SQLException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true, username = root. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

这样的错误是我把 /etc/hosts中的  127.0.0.1     localhost给注释掉了 把这个还原回来 然后把上面的hadoop改为localhost  就可以了

错误2:

  Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
        at org.apache.hadoop.fs.Path.initialize(Path.java:148)
        at org.apache.hadoop.fs.Path.<init>(Path.java:126)
        at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:487)
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:430)
        ... 7 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
        at java.net.URI.checkPath(URI.java:1804)
        at java.net.URI.<init>(URI.java:752)
        at org.apache.hadoop.fs.Path.initialize(Path.java:145)
        ... 10 more

解决方法:在配置文件hive-site.xml里找"system:java.io.tmpdir"把他们都换成绝对路径如:/home/grid/apache-hive-0.14.0-bin/iotmp
应该是有4个system:java.io.tmpdir。


好先写到这里。主要是为了怕自己忘记。哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值