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