CentOS下安装Hive2.1.0详解
本文所需环境如下:
操作系统:CentOS 6.5 64位
Hive版本:2.1.0
JDK版本:1.7.0_79
Hadoop版本:2.5.2
0.官网地址
1.三种模式
2.安装过程
2.1下载、解压hive安装包
- 我将hive等工具都安装到了/iwisdom目录下
wget http://www-eu.apache.org/dist/hive/hive-2.1.0/apache-hive-2.1.0-bin.tar.gz
tar -xzvf apache-hive-2.1.0-bin.tar.gz -C /iwisdom
2.2配置环境变量(可选)
将apache-hive-2.1.0-bin/bin添加到path,以方便访问
vi /etc/profile
在文档的最后添加
export HIVE_HOME=/iwisdom/apache-hive-2.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin
3.三种模式分别介绍
三种模式的不同之处就是体现在hive-site.xml里元数据的使用方式
3.1内嵌模式(元数据在derby数据库中)
3.1.1修改配置文件
也可以用hive-default.xml.template去改,不过这个文件中的配置项太多了
cd /iwisdom/apache-hive-2.1.0-bin/conf
vi hive-site.xml
输入以下内容后保存:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.Metastore.warehouse.dir</name>
<value>/iwisdom/apache-hive-2.1.0-bin/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:/iwisdom/apache-hive-2.1.0-bin/Metastore_db;create=true</value>
<description>JDBC connect string for a JDBC Metastore</description>
</property>
</configuration>
3.1.2初始化数据库
hive2.0以后的版本必须要依据hive-site.xml中配置的元数据存储方式来初始化数据库。
schematool -initSchema -dbType derby
出现以下几行说明初始化成功:
Starting Metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.derby.sql
Initialization script completed
schemaTool completed
3.1.3启动程序
mkdir -p /iwisdom/apache-hive-2.1.0-bin//warehouse // 创建元数据存储文件夹
chmod a+rwx /iwisdom/apache-hive-2.1.0-bin//warehouse // 修改文件权限
hive //启动hive
如果出现hive>提示符则说明启动成功
3.1.4常见错误
运行hive时出现
Exception in thread "main" java.lang.RuntimeException: Hive Metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed,don't forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for MysqL)
使用schematool初始化数据库时出现
Initialization script hive-schema-2.1.0.derby.sql
Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000) org.apache.hadoop.hive.Metastore.HiveMetaException: Schema initialization Failed! Metastore state would be inconsistent !!
*** schemaTool Failed ***
错误原因:数据库文件夹中已经存在一些文件,解决方法就是清空数据库文件夹(也就是前面配置的/iwisdom/apache-hive-2.1.0-bin/Metastore_db文件夹)
3.2远程模式(元数据在远程MysqL数据库)
3.2.1修改配置文件
cd /iwisdom/apache-hive-2.1.0-bin/conf
mv hive-log4j.properties.template hive-log4j.properties
mv hive-exec-log4j.properties.template hive-exec-log4j.properties
也可以用hive-default.xml.template去改,不过这个文件中的配置项太多了
cd /iwisdom/apache-hive-2.1.0-bin/conf
vi hive-site.xml
输入以下内容后保存:
注意下面配置的是:数据库连接串、驱动、用户和密码
···
3.2.2拷贝MysqL驱动
将MysqL-connector-java-5.1.30-bin.jar 放入 $HIVE_HOME/lib下
3.2.3初始化Hive
schematool -initSchema -dbType MysqL
3.2.4启动、测试hive
hive
出现以下是正常:
Metastore connection URL: jdbc:MysqL://192.168.0.100:3306/wfbhive?createDatabaseIfNotExist=true
Metastore Connection Driver : com.MysqL.jdbc.Driver
Metastore connection User: root
Starting Metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.MysqL.sql
Initialization script completed
schemaTool completed
查看hdfs上是否有hive的目录
hdfs dfs -ls /usr/hive
Found 1 items
drwxr-xr-x - root supergroup 0 2016-08-16 21:44 /user/hive/warehouse
create database test;
use test;
create table test_table(id int,name string) row format delimited fields terminated by '\t';
show tables;
OK
test_table
Time taken: 0.717 seconds,Fetched: 1 row(s)