终于搭建好了,纠结了一天!好开心。特此记录自己的心酸过程。
准备:
Hadoop-2.6.5
Jdk1.8.0-101
hive-2.1.0
mysql
一、安装mysql
apt-get install mysqlserve mysqlclent
mysql -uroot -p1234
(-u:用户名,-p:密码,-h:主机)
mysql>create database hive;
mysql>grant all on hive.* tomyhive@Master identified by ‘myhive’
(注:hive是数据库,第一个myhive是用户,第二个myhive是密码)
二、安装hive
1)、配置环境变量
在~/.bashrc中加入HIVE_HOME路径,并且把export PATH=
PATH:
HIVE_HOME/bin:$HIVE_HOME/conf 加在Path上。source ~/.bashrc使其生效。
2)创建hive-env.sh文件
cp hive-env.sh.template hive-env.sh
在hive-env.sh中添加:
export HADOOP_HOME
export HIVE_CONF_DIR=/hive安装路径/conf
3) 创建hive-site.xml
cp hive-default.xml.template hive-site.xml
配置hive-site.xml文件:
连接数据库配置说明:
参数javax.jdo.option.ConnectionURL
jbc:derby:;databaseName=metastore_db;create=true
参数javax.jdo.option.ConnectionDriverName指定驱动的类入口名称:
org.apache.derby.jdbc.EmbeddedDriver
参数javax.jdo.option.ConnectionUserName指定数据库的用户名:myhive
参数javax.jdo.option.ConnectionPassword指定数据库的密码:myhive
<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><span style="color:#ff0000;">myhive</span></value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value><span style="color:#ff0000;">myhive</span></value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.hwi.listen.port </name>
<value>9999 </value>
<description>This is the port the Hive Web Interface will listen on </descript ion>
</property>
<property>
<name>datanucleus.autoCreateSchema </name>
<value>false </value>
</property>
<property>
<name>datanucleus.fixedDatastore </name>
<value>true </value>
</property>
<property>
<name>hive.metastore.local </name>
<value>true </value>
<description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM </description>
</property>
4)将mysql的JDBC驱动包放在HIVE_HOME/lib下
hive的配置基本上完成了。
问题:
启动hive
发生错误:
Caused by: MetaException(message:Hive metastore database
is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType …) to create the schema. If needed, don’t forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql))
然后我执行$HIVE_HOME/bin/schematool -initSchema -dbType
derby
又出错:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to us
e near ‘“APP”.”NUCLEUS_ASCII”(C CHAR(1)) RETURNS INTEGER LANGUAGE JAVA PARAMETER STYLE ’ at line 1 (state=42000,code=1064)
我才发现,原来在初始化时用了derby,这里应该是mysql
所以就执行$HIVE_HOME/bin/schematool -initSchema -dbType mysql
这个错误解决了,又运行hive
发现错误如下:
java.lang.IllegalArgumentException:java.net.URISyntaxException: Relative path in absolute URI:{system:java.io.tmpdir%7D/%7Bsystem:user.name%7D
解决方法:
在hive安装目录下创建临时io的tmp文件夹:
mkdir iotmp
然后,将这个iotmp的绝对路径替换hive-site.xml文件中的
${system:java.io.tmpdir}。
再执行hive,启动成功!
在进行hive测试时也会有IllegalArgumentException问题,这时也只需要将相对路径改为绝对路径!
参考链接:
http://www.voidcn.com/blog/zhihaoma/article/p-6194362.html
http://wenku.baidu.com/link?url=VlJHSWYGSed0Z3iWiIJM5SH3DkWBLlNs2gBfVt1AwvyUDVuszFU3VVpwpE1Q8Hz2cJF7BGMeUcKAd7W7xCza0uy2vV5-_uOOSZye4NMmleW&qq-pf-to=pcqq.c2c