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的环境。