Hive环境搭建

Hive

1.安装

(1)安装要求:Java1.6;Hadoop0.20.x

(2)安装步骤

l  解压

$ tar -xzvf hive-x.y.z.tar.gz

l  环境变量HIVE_HOME,PATH,JAVA_HOME,HADOOP_HOME

$ cd hive-x.y.z
$ export HIVE_HOME={{pwd}}
$ export PATH=$HIVE_HOME/bin:$PATH
$ export JAVA_HOME=/usr/java/jdk1.7.0_01

$ export HADOOP_HOME=<hadoop-install-dir>

l 创建目录/tmp和 /user/hive/warehouse;目录权限修改成g+w

$ $HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

 

注:0.8.1的hive版本忽略hive-default.xml,因此需要将hive/conf下的hive-default.xml.template复制并改名为hive-site.xml。

 

(3)存储元数据:mysql数据库。

Hive 将元数据存储在 RDBMS 中,有三种模式可以连接到数据库: 

lingle User Mode:此模式连接到一个 In-memory 的数据库 Derby,一般用于 Unit Test。

l  Multi User Mode:通过网络连接到一个数据库中,是最经常使用到的模式。 

l  Remote Server Mode:用于非 Java 客户端访问元数据库,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库。

Hive默认是采用Derby来存储其Meta信息的,现在我们需要修改为mysql。 

²  使用root用户登录之后,创建用户hive,其中hivedb.acme.com指的是mysqlserver所在的主机名,dbpasswd指密码。

²  创建数据库,默认编码是latin1。如果不设置,可能会出现异常 "com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:Specified key was too long; max key length is 767 bytes"。

²  授权给hive用户。

mysql -u root
mysql> CREATE USER 'hive'@'hivedb.acme.com' IDENTIFIED BY 'dbpassword';
mysql> CREATE DATABASE hivemetastoredb DEFAULT CHARACTER SET latin1 DEFAULT COLLATE latin1_swedish_ci;
mysql> GRANT ALL PRIVILEGES ON hivemetastoredb.* TO 'hive'@'hivedb.acme.com' WITH GRANT OPTION;
mysql> flush privileges;
mysql> quit;

²  下载mysql-connector-java-5.1-18-bin.jar,放入$HIVE_HOME/lib下;

²  修改Hive的配置文件conf/hive-site.xml如下:

<property>    
        <name>hive.metastore.local</name>    
        <value>true</value>    
        <description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>  
</property>  
<property>    
        <name>javax.jdo.option.ConnectionURL</name>    
        <value>jdbc:mysql://hive-mysql:3306/hive?createDatabaseIfNotExist=true</value>    
        <description>JDBC connect string for a JDBC metastore</description>  
</property>  
<property>    
        <name>javax.jdo.option.ConnectionDriverName</name>    
        <value>com.mysql.jdbc.Driver</value>    
        <description>Driver class name for a JDBC metastore</description>  
</property>  
<property>    
        <name>javax.jdo.option.ConnectionUserName</name>    
        <value>hive</value>    
        <description>username to use against metastore database</description>  
</property>  
<property>    
        <name>javax.jdo.option.ConnectionPassword</name>    
        <value>hivepasswd</value>    
        <description>password to use against metastore database</description>  
</property>

 

Thrift安装:

1.    安装boost库

$ sudo apt-get install libboost-dev automake libtool flex bison pkg-config g++

 

2.    下载Thrift包,安装

$ wget http://apache.freelamp.com/incubator/thrift/0.2.0-incubating/thrift-0.2.0-incubating.tar.gz
$ tar -zxvf thrift-0.2.0-incubating.tar.gz
$ cd thrift-0.2.0
$ ./bootstrap.sh
$ ./configure
$ sudo make
$ sudo make install

 

(4)使用thrift来连接Hive

需要修改Hive的配置文件conf/hive-site.xml中的hive.metastore.uris参数,一般端口号是10000.

hive.metastore.uris

thrift://hostname:portnum 

【where hostname is the name of the machine hosting the Thrift server, and portnum is the port number used above in the installation script.】

 

 启动hive的Thrift Server,即可使用Hive了。

hive --service hiveserver

 

 

 

 

相关推荐