参考:http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_hive_install.html
一、安装Hive
1.安装hive包
1 |
yum install hive-metastore hive-server2 |
2.配置hive组件的堆大小及垃圾回收(暂时保持默认)
二、配置Hive元存储
Hive元数据服务使用关系型数据库存储Hive表及分区的信息。使用元数据服务API对外提供前述信息的客户端连接。接下来的部分介绍部署选项及推荐配置。
1.元数据部署模式
嵌入式模式
默认安装模式。将元数据存储在derby中。数据库及及元数据服务都嵌入在HiveServer进程中,随HiveServer一起启动。这种模式配置最简单,但同时仅支持一个活动用户,不能用于生产。
本地模式
Hive元数据服务内嵌在HiveServer中,但元数据数据库在单独进程中执行,并可以在分离的主机上。内嵌的元数据服务通过JDBC与元数据数据库通信。
远程模式(CDH推荐的生产环境部署方案)
元数据服务在独立的JVM进程中,HiveServer2, HCatalog, Cloudera Impala™,及其他进程与元数据服务通过网络API(通过 hive.metastore.uris 参数进行配置)通信。元数据服务通过JDBC与元数据数据库通信(通过 javax.jdo.option.ConnectionURL 参数进行配置)。元数据服务、元数据数据库及HiveServer可以在同一主机上运行,但是将HiveServer分离到单独的主机可以提供更好的可用性和扩展性。
远程模式较之本地模式先进之处在于:远程模式不需要管理员为每一个Hive用户共享JDBC登陆信息。HCatalog需要这种模式。
2.安装元数据数据库
(1)安装mysql
1 2 3 4 5 |
yum install mysql-server service mysqld start yum install mysql-connector-java ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar mysql_secure_installation |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[...] Enter current password for root (enter for none): OK, successfully used password, moving on... [...] Set root password? [Y/n] y New password: Re-enter new password: Remove anonymous users? [Y/n] Y [...] Disallow root login remotely? [Y/n] N [...] Remove test database and access to it [Y/n] Y [...] Reload privilege tables now? [Y/n] Y All done! |
1 |
chkconfig mysqld on |
(2)创建mysql实例及账号
1 2 3 4 5 6 7 8 9 10 11 12 |
$ mysql -u root -p Enter password: mysql> CREATE DATABASE metastore; mysql> USE metastore; mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.12.0.mysql.sql; mysql> CREATE USER 'hive'@'hadoop01' IDENTIFIED BY 'mypassword'; ... mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'hadoop01'; mysql> GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'hadoop01'; mysql> FLUSH PRIVILEGES; mysql> quit; |
3.配置元数据服务相关参数(hive-site.xml)
配置连接到mysql数据库的参数。可以将此配置文件传播到每一台hive主机上。每一台Hive的相关主机(client, metastore, HiveServer)都需要配置hive.metastore.uris。该文件中其他的参数仅用于配置metastore服务所在主机。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop01/metastore</value> <description>the URL of the MySQL database</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>mysql2015</value> </property> <property> <name>datanucleus.autoCreateSchema</name> <value>false</value> </property> <property> <name>datanucleus.fixedDatastore</name> <value>true</value> </property> <property> <name>datanucleus.autoStartMechanism</name> <value>SchemaTable</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop01:9083</value> <description>IP address (or fully-qualified domain name) and port of the metastore host</description> </property> <property> <name>hive.metastore.schema.verification</name> <value>true</value> </property> |
三、配置HiveServer2
1.向hive-site.xml添加参数
适当的配置Hive表锁管理器。这需要安装zookeeper。
1 2 3 4 5 6 7 8 9 10 11 |
<property> <name>hive.support.concurrency</name> <description>Enable Hive's Table Lock Manager Service</description> <value>true</value> </property> <property> <name>hive.zookeeper.quorum</name> <description>Zookeeper quorum used by Hive's Table Lock Manager</description> <value>hadoop01,hadoop02,hadoop03</value> </property> |
2.创建hive在hdfs上的工作目录
在hdfs上创建 /user/hive/warehouse目录,并将权限修改为1777。
1 2 |
hdfs dfs -mkdir -p /user/hive/warehouse hdfs dfs -chmod 1777 /user/hive/warehouse |
四、打开服务
1.启动元数据服务
在hadoop01上:
1 |
service hive-metastore start |
2.启动hive server2
在hadoop01~03上:
1 2 |
[root@hadoop01 ~]# service hive-server2 start Started Hive Server2 (hive-server2):[ OK ] |
3.检查启动日志(/etc/hive/conf/hive-site.xml),没有报错则可测试hive。
五、测试使用
1.测试连接
1 2 3 4 5 6 7 8 |
[root@hadoop01 hive]# beeline Beeline version 0.13.1-cdh5.3.1 by Apache Hive beeline> !connect jdbc:hive2://hadoop01:10000 hive yourpassword org.apache.hive.jdbc.HiveDriver Connecting to jdbc:hive2://hadoop01:10000 Connected to: Apache Hive (version 0.13.1-cdh5.3.1) Driver: Hive JDBC (version 0.13.1-cdh5.3.1) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://hadoop01:10000> |
2.测试执行
1 2 3 4 5 6 7 |
0: jdbc:hive2://hadoop01:10000> show tables; +-----------+--+ | tab_name | +-----------+--+ +-----------+--+ No rows selected (0.232 seconds) 0: jdbc:hive2://hadoop01:10000> |
大功告成。