hive 0.13.1 安装指导

hive安装指导

版本描述

操作系统:centos 6.5 64 bit

HadoopHadoop 2.4.0

hive: 0.13.1

网络规划

前提条件是已经安装了hadoop

用户创建

hadoop共用一个账户,这里就不要单独创建账户了,我这里配置是:

hadoop用户:hadoop

用户目录:home/hadoop

HADOOP_HOME/home/hadoop/hadoop-2.4.0

安装jdk

这个我就不再多说了,网上资料大把,jdk版本是 1.7.0_45

安装mysql

我这里是安装一个mysql用来存储元数据,你也可以用内存数据derby

如果是mysql,其数据的字符集一定要设置为latin1,如果不修改创建元数据数据库就会失败

修改mysql的默认的字符集,修改/etc/my.cnf 文件中的

如下两个配置

character-set-server = latin1

collation-server    = latin1_general_ci

在重启mysql 

重新创建hive的数据库。

安装hive

下载包

下载链接: http://apache.fayea.com/apache-mirror/hive/stable/apache-hive-0.13.1-bin.tar.gz

上传包

1、把hive包传入home/hadoop

2tarhive

执行:

   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

配置hive-env.sh

进入配置目录

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!

修改配置文件

配置hive-default.xml

进入配置目录

cd /home/hadoop/hive-0.13.1/conf

创建配置文件

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

配置hive-site.xml

进入配置目录

cd /home/hadoop/hive-0.13.1/conf

创建配置文件

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

打开配置文件

vi hive-site.xml

配置元数据存储

  hive.metastore.warehouse.dir

  hdfs://10.20.96.225:9100/hive/warehouse

  location of default database for the warehouse

  hive.exec.scratchdir

  hdfs://10.20.96.225:9100/hive/scratchdir

  Scratch space for Hive jobs

  hive.querylog.location

  /home/hadoop/hive-0.13.1/logs

  

    Location of Hive run time structured log file

  

  javax.jdo.option.ConnectionURL

  jdbc:mysql://10.20.96.214:3306/hive_metadata?createDatabaseIfNotExist=true

  JDBC connect string for a JDBC metastore

  javax.jdo.option.ConnectionDriverName

  com.mysql.jdbc.Driver

  Driver class name for a JDBC metastore

  javax.jdo.option.ConnectionUserName

  root

  username to use against metastore database

  javax.jdo.option.ConnectionPassword

  rootpasswd

  password to use against metastore database

保存退出

:wq!

备注: “hive-default.xml”用于保留默认配置,“hive-site.xml”用于个性化配置,可覆盖默认配置。

配置log4j

测试可以不用配置,商用环境建议配置

进入配置目录

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、下载驱动包

我用的mysqlmysql 5.6.15 版本,配套的jdbc是 mysql-connector-java-5.1.24-bin.jar

这个jar在网上一大把,自己在网上下载就可以了,一定要根据mysql版本选择配套的版本

2、添加驱动包

   把驱动包放到 $HIVE_HOME/lib 目录下

启动hive

执行如下命令:

hive

如果出现如下界面表示启动成功

在出现这个输出的时候建议在看看log是不是有异常输出。如果没有异常输出表示成功

测试

hive命令行中输入如下命令

create database testDB

如果输出

OK

Time taken: 0.056 seconds

表示配置成功

FAQ

问题1

问题描述:

如果执行语句: 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;

问题2

问题描述: 

启动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)

解决方法:

问题是:MySQLvarchar主键只支持不超过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的数据库。

问题3

问题描述: 

执行创建数据库时抛出如下错误:Could not retrieve transation read-only status server

解决方法:

问题原因 是javax.jdo.option.ConnectionURL中配置的数据库名有问题不能配置为hive修改为hive_metadataok


你可能感兴趣的:(大数据,hadoop)