Hadoop相关部署二:Hive安装部署

1.1  解压缩Hive

将Hive的tar包解压到/opt目录下:

tar –zxvf hive-0.7.1-cdh3u3.tar.gz

解压缩后的Hive目录如下:

其中bin目录下是一些可执行的脚本文件,在conf下是相关的配置文件,也是我们要修改的主要地方,lib下是一些相关的jar包,包括mysql的连接包、hbase的包等都会放到lib下。

将Hive的安装路径添加到path环境变量中。

以及

export HIVE_CONF_DIR=$HIVE_HOME/conf

export HIVE_LIB=$HIVE_HOME/lib

在/etc/profile文件中添加上述代码,source使之生效。

1.2  创建Hive的目录

在hdfs中创建Hive的目录,命令如下:

[hdfs@sdc0 bin]$ ./hadoop fs -mkdir /tmp

[hdfs@sdc0 bin]$ ./hadoop fs -mkdir /usr/hive/warehouse

[hdfs@sdc0 bin]$ ./hadoop fs -chmod g+w /tmp

[hdfs@sdc0 bin]$ ./hadoop fs -chmod g+w /usr/hive/warehouse

1.3  conf/hive-site.xml

   这个文件主要用于配置Hive的一些配置参数。文件中的内容也是主要以property键值对的形式存在,主要有一下五种键:

hive.metastore.local 设置元数据信息的存放位置,如果采用mysql等第三方数据库时,设置为true,本文档编写时采用的就是mysql;

本文档中设置为true

javax.jdo.option.ConnectionURL 设置数据库的连接信息;

本文档中设置为

jdbc:mysql://10.28.171.38:3306/hiveTestDB?createDatabaseIfNotExist=true

javax.jdo.option.ConnectionDriverName 设置数据库的驱动信息;

本文档中设置为:com.mysql.jdbc.Driver

javax.jdo.PersistenceManagerFactoryClass设置数据持久化的类;

本文档中设置为:org.datanucleus.jdo.JDOPersistenceManagerFactory

javax.jdo.option.DetachAllOnCommit设置是否从session中把对象分离出来;本文档中设置为true;

javax.jdo.option.NonTransactionalRead 设置 是否允许事务外的数据对象访问;本文档中设置为true;

javax.jdo.option.ConnectionUserName 设置数据库的用户名;

本文档中设置为:hive

javax.jdo.option.ConnectionPassword 设置数据库的用户密码;

本文档中设置为:hive

hive.querylog.location设置日志的保存位置,如果不设置,将默认保存在/tmp/<user.name>/hive.log里。

hive.aux.jars.path设置运行hive时需要额外加载的一些相关的包,如果不设置的话,在执行insert或者跟mapreduce、hbase相关的操作时会报错。

本文档中设置为:

file:///opt/hive-0.7.1-cdh3u3/lib/hive-hbase-handler-0.7.1-cdh3u3.jar,file:///opt/hive-0.7.1-cdh3u3/lib/hbase-0.94.1-security.jar,file:///opt/hive-0.7.1-cdh3u3/lib/zookeeper-3.4.3.jar,file:///opt/hive-0.7.1-cdh3u3/lib/protobuf-java-2.4.0a.jar

即,把lib目录下的这四个jar包加载进来。其中,hbase-0.94.1-security.jar在habse安装目录中;zookeeper-3.4.3.jar在zookeeper安装目录中;protobuf-java-2.4.0a.jar在hbase安装目录中的lib下,此包是和hbase相关联时通信用。

1.4  配置数据库

一般都采用第三方数据库比如mysql等存储元数据信息,而不用hive自带的derby数据库。安装mysql数据库可采用如下命令:

yum install mysql-server

安装完成后,利用如下命令启动:

/etc/init.d/mysqld start

现在要创建我们前面在hive-site.xml文件中用到的数据库和用户名了。

以root用户登录mysql之后执行:

CREATE USER ‘hive’@'localhost’ IDENTIFIED BY ‘hive’;

或者在数据库mysql的user表中插入:

insert into mysql.user(Host,User,Password) values(‘%’,'hive’,password(‘hive’));

执行上述命令之后都需要执行:

flush privileges;

使命令之生效。之所以host键的值填“%”,这是因为我们要从别的机器连接mysql,如果设置为localhost,就被会本机拒绝连接。除了设置为“%”之外,还可以设置为需要连接mysql的主机的ip地址。

有了相应的hive用户,下面就创建可以被hive用户操作的数据库了。在root用户下创建数据库hiveTestDB:

create database hiveTestDB;

此时的hiveTestDB数据库时属于root的,现在利用命令将hiveTestDB的使用权限给hive用户:

grant all privileges on hiveTestDB.* to hive identified by ‘hive’ with grant option;

还是要使用命令:

flush privileges;

使之生效。

1.5  Hive的lib配置

将hadoop目录下的hadoop-core-0.20.2-cdh3u3.jar包、mysql数据库的mysql-connector-java-5.1.21-bin.jar包和

mysql-connector-java-5.1.6.jar包放入Hive的lib目录下。

1.6 Hive的启动

Hive启动的时候像Hadoop一样,也是在bin目录下,bin的目录结构如下:

目录结构比较简单,在启动的时候需要运行hive脚本,可以直接ctrl+c组合键退出。启动Hive

在Hive的bin的目录下输入命令:

hive

即可进入hive的环境。