1. 准备工作
操作系统 | hive版本 | jdk版本 | hadoop版本 | MySQL |
---|---|---|---|---|
centos7 | 2.3.0 | 1.8+ | 2.7.3 | mysql5.7 |
ps:Hive 2.3.0需要以下运行环境:
Java 1.7以上(强烈建议使用Java 1.8)
Hadoop 2.X
1.Hive和Hadoop一样,有3种启动模式,分别是单机模式,伪分布模式,分布模式。这里说一下伪分布模式(集群模式)的安装部署方案。
2.Hive默认使用derby数据库存储元数据,但是该数据库不适用于生产环境,这边使用MySQL作为元数据的存储数据库。
所以需要先安装好MySQL。
3.Hive依赖Hadoop,所以需要先安装并启动好Hadoop。
1.3 Hadoop
2.hadoop伪分布式的搭建
详细请参照此博客:http://blog.csdn.net/qq_38799155/article/details/77748831
3. 下载、解压安装包 ##
1.hive
1.1Hive官网地址:http://apache.fayea.com/hive/hive-2.3.0/
1.2通过xftp上传到hadoop用户的根目录下,解压安装包
//解压安装包
tar -zvxf apache-hive-2.3.0-bin.tar.gz
//移动解压后的hive到hive包中
mv apache-hive-2.3.0-bin hive
1.3配置环境变量(可选)
将hive-2.3.0/bin添加到path,以方便访问
vi .bashrc
在末尾添加:
# Hive Environment Variables
export HIVE_HOME=/home/hadoop/hive
export PATH=$PATH:$HIVE_HOME/bin
1.4修改hive配置文件
cd hive/conf
vi hive-site.xml #也可以用hive-default.xml.template去改,不过这个文件中的配置项太多了
输入以下内容后保存:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.150.1:3306/hive_metadata?createDatabaseIfNotExsit=true&characterEncoding=UTF-8 </value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
1.5加载驱动
下载地址:http://dev.mysql.com/downloads/connector/j/ ,解压后拷贝其中的mysql-connector-java-5.1.38-bin.jar到hive的lib文件夹下。
cd hive/lib
通过xftp,将下载的MySQL驱动上传至hive/lib文件夹下
2.MySQL数据库
2.1在windown下安装mysql,mysql开启远程访问权限
//登录数据库
mysql -u root -p
//会提示输入数据库密码
>use mysql;
//%为所有ip都可以远程访问
mysql>update user set host = '%' where user = 'root';
//或直接添加一条语句也行
mysql>insert into user (host,user,password) values('192.168.0.51','root',password('123'));
//查看一下修改
mysql>select host, user from user;
//推送设置到内存或重启服务器也行
mysql>FLUSH PRIVILEGES
ps:mysql的远程访问权限参考地址:http://www.cnblogs.com/hfdp/p/6088288.html
3. 初始化数据库
在这之前,先在Navicat Premium
的数据库创建hive_metadata
库,之后初始化库:
schematool -initSchema -dbType derby
出现以下几行说明初始化成功:
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.derby.sql
Initialization script completed
schemaTool completed
4. 启动hive
hive
如果出现hive>
提示符则说明启动成功
4.hive常见的问题
4.1运行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 -initSchema -dbType derby
Exception in thread "main" java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1550)
at org