我的环境是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,修改后如下。
- <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>123456</value>
- <description>password to use against metastore database</description>
- </property>
6. 下载mysql驱动 并将其复制到hive/lib中
mysql-connector-java-5.1.31-bin.jar
7. 启动hive 就好了。
我安装的时候一直出现一个问题就是 我的ubuntu 的hostname 是hadoop IP是192.168.46.100. 所以设置环境变量的时候是这样
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true</value>
- <description>JDBC connect string for a JDBC metastore</description>
- </property>
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
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