hive安装指导
操作系统:centos 6.5 64 bit
Hadoop:Hadoop 2.4.0
hive: 0.13.1
前提条件是已经安装了hadoop
和hadoop共用一个账户,这里就不要单独创建账户了,我这里配置是:
hadoop用户:hadoop
用户目录:home/hadoop
HADOOP_HOME:/home/hadoop/hadoop-2.4.0
这个我就不再多说了,网上资料大把,jdk版本是 1.7.0_45
我这里是安装一个mysql用来存储元数据,你也可以用内存数据derby。
如果是mysql,其数据的字符集一定要设置为latin1,如果不修改创建元数据数据库就会失败
修改mysql的默认的字符集,修改/etc/my.cnf 文件中的
如下两个配置
character-set-server = latin1
collation-server = latin1_general_ci
在重启mysql
重新创建hive的数据库。
下载链接: http://apache.fayea.com/apache-mirror/hive/stable/apache-hive-0.13.1-bin.tar.gz
1、把hive包传入home/hadoop中
2、tar开hive包
执行:
tar -zxvf apache-hive-0.13.1-bin.tar.gz
重命名,执行:
mv apache-hive-0.13.1-bin hive-0.13.1
进入环境变量配置目录,这里需要切换到root用户
cd /etc/profile.d
创建配置文件
touch hive.sh
打开配置文件
vi hive.sh
配置环境变量
#set hive environment
HIVE_HOME=/home/hadoop/hive-0.13.1
PATH=$HIVE_HOME/bin:$PATH
CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
export HIVE_HOME
export PATH
export CLASSPATH
保存退出
:wq!
立即生效,这里需要切换到hadoop用户
source /etc/profile
进入配置目录
cd /home/hadoop/hive-0.13.1/conf
创建hive-env.sh文件
cp hive-env.sh.template hive-env.sh
打开配置文件
vi hive-env.sh
修改配置
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/home/hadoop/hadoop-2.4.0
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/home/hadoop/hive-0.13.1/conf
保存退出
:wq!
进入配置目录
cd /home/hadoop/hive-0.13.1/conf
创建配置文件
cp hive-default.xml.template hive-default.xml
进入配置目录
cd /home/hadoop/hive-0.13.1/conf
创建配置文件
cp hive-default.xml.template hive-site.xml
打开配置文件
vi hive-site.xml
配置元数据存储
Location of Hive run time structured log file
保存退出
:wq!
备注: “hive-default.xml”用于保留默认配置,“hive-site.xml”用于个性化配置,可覆盖默认配置。
测试可以不用配置,商用环境建议配置
进入配置目录
cd /home/hadoop/hive-0.13.1/conf
创建配置文件
cp hive-exec-log4j.properties.template hive-exec-log4j.properties
cp hive-log4j.properties.template hive-log4j.properties
修改配置,修改上面两个配置文件的如下属性
hive.log.dir=/home/hadoop/hive-0.13.1/logs
log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
注意如果没有logs目录就建立一个 执行命令
mkdir logs
1、下载驱动包
我用的mysql是mysql 5.6.15 版本,配套的jdbc是 mysql-connector-java-5.1.24-bin.jar
这个jar在网上一大把,自己在网上下载就可以了,一定要根据mysql版本选择配套的版本
2、添加驱动包
把驱动包放到 $HIVE_HOME/lib 目录下
执行如下命令:
hive
如果出现如下界面表示启动成功
在出现这个输出的时候建议在看看log是不是有异常输出。如果没有异常输出表示成功
在hive命令行中输入如下命令
create database testDB
如果输出
OK
Time taken: 0.056 seconds
表示配置成功
问题描述:
如果执行语句: create table test(id int, name string); 抛出如下异常:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
解决办法:
表示数据库的字符集不对,在mysql上执行:alter database hive character set latin1;
问题描述:
启动hive时报如下错误(这个错误在后台的log中可以看到,前台不会输出,前台还是会正常进入hive命令行模式):
2014-10-31 02:57:20,798 ERROR [main]: DataNucleus.Datastore (Log4JLogger.java:error(115)) - An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
解决方法:
问题是:MySQL的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段,而 GBK是双字节的,UTF-8是三字节的。
修改mysql的默认的字符集,修改/etc/my.cnf 文件中的
如下两个配置
character-set-server = latin1
collation-server = latin1_general_ci
在重启mysql
重新创建hive的数据库。
问题描述:
执行创建数据库时抛出如下错误:Could not retrieve transation read-only status server
解决方法:
问题原因 是javax.jdo.option.ConnectionURL中配置的数据库名有问题不能配置为hive修改为hive_metadata就ok了