hive 2.1.1 mysql_hive2.1.1安装部署

本文档详述了Hive 2.1.1的三种运行模式,并重点介绍了从内嵌模式转为使用远程MySQL作为元数据存储的过程,包括配置系统环境变量、修改Hive配置文件、创建必要的HDFS目录、解决安装过程中的报错,以及最终成功连接MySQL并创建、加载与查询数据的步骤。
摘要由CSDN通过智能技术生成

一、Hive 运行模式

与 Hadoop 类似,Hive 也有 3 种运行模式:

1. 内嵌模式

将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显,因为一个内嵌的 Derby 数据库每次只能访问一个数据文件,这也就意味着它不支持多会话连接。

2. 本地模式

这种模式是将元数据保存在本地独立的数据库中(一般是 MySQL),这用就可以支持多会话和多用户连接了。

3. 远程模式

此模式应用于 Hive 客户端较多的情况。把 MySQL 数据库独立出来,将元数据保存在远端独立的 MySQL 服务中,避免了在每个客户端都安装 MySQL 服务从而造成冗余浪费的情况。

二、下载安装 Hive

http://hive.apache.org/downloads.html

tar -xzvf apache-hive-2.1.1-bin.tar.gz    ##解压

三、配置系统环境变量

修改 /etc/profile 文件  vi /etc/profile 来修改(root用户操作):

设置 Hive环境变量

# Hive environment

export HIVE_HOME=/home/hadoop/cloud/apache-hive-2.1.1-bin

export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH

使环境变量生效:

source /etc/profile

四、内嵌模式

(1)修改 Hive 配置文件

$HIVE_HOME/conf 对应的是 Hive 的配置文件路径,类似于之前学习的Hbase, 该路径下的 hive-site.xml 是 Hive 工程的配置文件。默认情况下,该文件并不存在,我们需要拷贝它的模版来实现:

cp hive-default.xml.template hive-site.xml

hive-site.xml 的主要配置有:

userid46108labid766time1427423801808

userid46108labid766time1427423813828

hive.metastore.warehouse.dir

该参数指定了 Hive 的数据存储目录,默认位置在 HDFS 上面的 /user/hive/warehouse 路径下。

hive.exec.scratchdir

该参数指定了 Hive 的数据临时文件目录,默认位置为 HDFS 上面的 /tmp/hive 路径下。

同时我们还要修改 Hive 目录下 /conf/hive-env.sh 文件(请根据自己的实际路径修改),该文件默认也不存在,同样是拷贝它的模版来修改:

cp hive-env.sh.template  hive-env.sh

# Set HADOOP_HOME to point to a specific hadoop install directory

HADOOP_HOME=/home/hadoop/cloud/hadoop-2.7.3

# Hive Configuration Directory can be controlled by:

export HIVE_CONF_DIR=/home/hadoop/cloud/apache-hive-2.1.1-bin/conf

# Folder containing extra ibraries required for hive compilation/execution can be controlled by:

export HIVE_AUX_JARS_PATH=/home/hadoop/cloud/apache-hive-2.1.1-bin/lib

(2)创建必要目录

前面我们看到 hive-site.xml 文件中有两个重要的路径,切换到 hadoop 用户下查看 HDFS 是否有这些路径:

hadoop fs -ls /

没有发现上面提到的路径,因此我们需要自己新建这些目录,并且给它们赋予用户写(W)权限。

$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse

$HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/

hadoop fs -chmod 777 /user/hive/warehouse

hadoop fs -chmod 777 /tmp/hive

检查是否新建成功 hadoop fs -ls / 以及 hadoop fs -ls /user/hive/ :

(3)修改 io.tmpdir 路径

同时,要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路径(vim下 / 表示搜索,后面跟你的关键词,比如搜索 hello,则为 /hello , 再回车即可),你可以自己新建一个目录来替换它,例如 /home/Hadoop/cloud/apache-hive-2.1.1-bin/iotmp

mkdir /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp

chmod 777 /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp

把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp

全局替换命令 先按Esc键  再同时按shift+:把以下替换命令粘贴按回车即可全局替换

%s#${system:java.io.tmpdir}#/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp#g

(4)运行 Hive

./bin/hive

报错

1d963dc8e3e8ab0a79003abaef2ad159.png

解决办法:./bin/schematool -initSchema -dbType derby

报错

b87a861307a93f1e1f416b4557a038e8.png

解决方法:删除/home/hadoop/cloud/apache-hive-2.1.1-bin目录下 rm -rf metastore_db/ 在初始化:./bin/schematool -initSchema -dbType derby

重新运行

./bin/hive

报错

b241a3a8e7a295a104f0e8cd08607d6b.png

/tem/hive 没写的权限

Hive本身自带一个数据库,但是有弊端,hive本身数据库,每次只允许一个用户登录

mysql安装:http://blog.csdn.net/u014695188/article/details/51532410

设置mysql关联hive

修改配置文件

### 创建hive-site.xml文件

在hive/conf/目录下创建hive-site.xml文件

javax.jdo.option.ConnectionURL

jdbc:mysql://192.168.169.134:3306/hive?createDatabaseIfNotExist=true

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName

root

javax.jdo.option.ConnectionPassword

123456

hive.metastore.schema.verification

false

Enforce metastore schema version consistency.

True: Verify that version information stored in metastore matches with one from Hive jars.  Also disable automatic

schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures

proper metastore schema migration. (Default)

False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.

报错:Caused by: MetaException(message:Version information not found in metastore. )

解决:hive-site.xml加入

hive.metastore.schema.verification

false

Enforce metastore schema version consistency.

True: Verify that version information stored in metastore matches with one from Hive jars.  Also disable automatic

schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures

proper metastore schema migration. (Default)

False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.

报错:缺少mysql jar包

解决:将其(如mysql-connector-Java-5.1.15-bin.jar)拷贝到$HIVE_HOME/lib下即可。

报错:

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)

解决:

#数据库的初始化。

bin/schematool -initSchema -dbType mysql

启动:

bin/hive

启动后mysql 多了hive 数据库

fe6aef0c35f5bb24d82f40aa2f086f3e.png

创建数据库

create database db_hive_test;

57ddd1a344f53d307d740ec9577488d6.png

创建测试表

use db_hive_test;

create table student(id int,name string) row format delimited fields terminated by '\t';

dbd7153eaab9374b06462a72c8a6c804.png

4f0c4d54004c0daa2d9887df5d7ebdd2.png

加载数据到表中

新建student.txt 文件写入数据(id,name 按tab键分隔)

vi student.txt

1001    zhangsan

1002    lisi

1003    wangwu

1004    zhaoli

load data local inpath '/home/hadoop/student.txt' into table  db_hive_test.student

b3a8d5f8bf9f853ac22e578195c37faa.png

查询表信息

select * from student;

查看表的详细信息

desc formatted student;

通过ui页面查看创建的数据位置

http://192.168.169.132:50070/explorer.html#/user/hive/warehouse/db_hive_test.db

e65a11863f96ecdc67a17f80551f9777.png

通过Mysql查看创建的表

6457f3d97b184195229fcb94231c6816.png

查看hive的函数

show functions;

查看函数详细信息

desc function sum;

desc function extended

385c4f3c62a8c3b246c8672b181bba0f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值