- 问题1:由于HIVE依赖于hdfs和yarn所以在启动hive前,请确保hdfs和yarn已经启动,否则会报以下错误:
1 | java.lang.RuntimeException: java.net.ConnectException: Call From hadoopcswfb/192.168.0.140 to hadoopcswfb:9000 failed on connection exception: java.net.ConnectException: Connection refused; |
本文所需环境如下:
操作系统:CentOS 6.5 64位
Hive版本:2.1.0
JDK版本:1.7.0_79
Hadoop版本:2.5.2
0.官网地址
1.三种模式
- 内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话链接
- 本地独立模式:在本地安装Mysql,把元数据存放到MySQL内
- 远程模式:元数据存放在远程的MySQL数据库
2.安装过程
2.1下载、解压hive安装包
- 我将hive等工具都安装到了/iwisdom目录下
1
2wget 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 /iwisdom2.2配置环境变量(可选)
将apache-hive-2.1.0-bin/bin添加到path,以方便访问在文档的最后添加1
vi /etc/profile
1
2export HIVE_HOME=/iwisdom/apache-hive-2.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin3.三种模式分别介绍
三种模式的不同之处就是体现在hive-site.xml里元数据的使用方式3.1内嵌模式(元数据在derby数据库中)
3.1.1修改配置文件
也可以用hive-default.xml.template去改,不过这个文件中的配置项太多了输入以下内容后保存:1
2cd /iwisdom/apache-hive-2.1.0-bin/conf
vi hive-site.xml1
2
3
4
5
6
7
8
9
10
11
12
13
14<?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中配置的元数据存储方式来初始化数据库。出现以下几行说明初始化成功:1
schematool -initSchema -dbType derby
1
2
3
4Starting metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.derby.sql
Initialization script completed
schemaTool completed3.1.3启动程序
如果出现hive>提示符则说明启动成功1
2
3mkdir -p /iwisdom/apache-hive-2.1.0-bin//warehouse // 创建元数据存储文件夹
chmod a+rwx /iwisdom/apache-hive-2.1.0-bin//warehouse // 修改文件权限
hive //启动hive3.1.4常见错误
- *运行hive时出现**
1
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)
- *错误原因:数据库没有初始化,请参照3.1.2**
使用schematool初始化数据库时出现
1 | Initialization script hive-schema-2.1.0.derby.sql |
错误原因:数据库文件夹中已经存在一些文件,解决方法就是清空数据库文件夹(也就是前面配置的/iwisdom/apache-hive-2.1.0-bin/metastore_db文件夹)
3.2远程模式(元数据在远程MySQL数据库)
3.2.1修改配置文件
将以下两个文件重命名,日志配置文件
1 | cd /iwisdom/apache-hive-2.1.0-bin/conf |
也可以用hive-default.xml.template去改,不过这个文件中的配置项太多了
1 | cd /iwisdom/apache-hive-2.1.0-bin/conf |
输入以下内容后保存:
注意下面配置的是:数据库连接串、驱动、用户和密码
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
3.2.2拷贝MySQL驱动
将mysql-connector-java-5.1.30-bin.jar
放入$HIVE_HOME/lib
下
3.2.3初始化Hive
1 | schematool -initSchema -dbType mysql |
3.2.4启动、测试hive
出现以下是正常:
1 | Metastore connection URL: jdbc:mysql://192.168.0.100:3306/wfbhive?createDatabaseIfNotExist=true |
查看hdfs上是否有hive的目录
1 | hdfs dfs -ls /usr/hive |
创建数据、创建表、查询数据库中的表。
1 | create database test; |