Hive是一个客户端工具,需要在哪台机器上运行就将其安装在哪台机器上,根据metastore的位置可以将hive的运行模式分为三种:内嵌模式、本地模式、远程模式。
远程模式的安装
1. 安装mysql
[root@MyLinux~]# yum --enablerepo=remi install mysql-server
2. 创建用户、数据库,并进行授权
n 创建数据库
mysql>create database hivedb;
Query OK, 1 row affected (0.00 sec)
n 创建hive用户
mysql>create user 'hive' IDENTIFIED BY 'hive';
Query OK, 0 rows affected (0.04 sec)
n 将hivedb授权给hive用户
mysql>grant all privileges on hivedb.* to 'hive'@'%' with grant option;
Query OK, 0 rows affected (0.01 sec)
mysql>flush privileges;
Query OK, 0 rows affected (0.01 sec)
3. 解压hive
[grid@MyLinux~]$ tar -xzvf hive-0.10.0.tar.gz
4. 导入mysql的jdbc驱动包
将mysql-connector-java-5.1.25-bin.jar拷贝到hive目录下的lib文件夹中
[grid@MyLinux ~]$ mv mysql-connector-java-5.1.26.tar.gzhive-0.10.0/lib/
5. 修改hive配置文件
n 修改bin/hive-config.sh,加入如下行:
[grid@MyLinuxhive-0.10.0]$ vim bin/hive-config.sh
export JAVA_HOME=/usr/java/jdk1.7.0_25/
export HIVE_HOME=/home/grid/hive-0.10.0
export HADOOP_HOME=/home/grid/hadoop-0.20.2
n 在conf目录下hive-site.xml,加入以下内容
[grid@MyLinux conf]$ cp hive-default.xml.templatehive-site.xml
[grid@MyLinuxhive-0.10.0]$ vim conf/hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/var/hive/warehouse </value>
<description>location of default database for thewarehouse</description>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/var/hive/temp </value>
<description>Scratch space for Hive jobs</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://MyLinux:3306/hivedb?characterEncoding=UTF-8</value>
<description>JDBC connect string for a JDBCmetastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver </value>
<description>Driver class name for a JDBCmetastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastoredatabase</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastoredatabase</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
<description>Thrift uri for the remote metastore.Used by metastore client to connect to remote metastore.</description>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
</configuration>
参数:
hive.metastore.warehouse.dir为hive的数据目录;
hive.exec.scratchdir为临时目录,需要将当前用户设置为上当的owner.
hive.metastore.local表示元数据是存储在本地还是远端,为true表示存储在本地,为false表示存储在远端,同时,false也指hive服务与metastore元数据存储服务不在一个进程中,两个各自独立它们可以放在不同的机器上。
6. 修改mysql字符集
[grid@MyLinux ~]$ mysql -h MyLinux -u hive –p
mysql> alter database hivedb character set latin1;
7. 启动metastore服务
[grid@MyLinux~]$ hive --service metastore &
8. 以debug模式启动hive
[grid@MyLinuxconf]$ hive --hiveconf hive.root.logger=debug,console
9. 注意
当安装模式是本地模式时,直接进入hive命令行shell,后台会自动启动metastore与hive服务,而且这两个服务还是在同一个进程中,不用手工启动,这点和远程模式是不同的。
当安装模式是远程模式时,首先需要到运行metastore的主机上启动metastore服务[grid@MyLinux~]$ hive --service metastore &;其次在运行hive shell的主机上启动shell时,会同时启动hiveserver进程。