一、 Hive 介绍
1. Hive 概念
Hive 是基于 Hadoop 的一种数据仓库工具,可以将结构化的数据文件映射为一张数据
库表,并提供类 SQL 的查询操作。Hive 的安装可以在集群中任何一台机器,本例子放在
hdp-nn-01 上机器上,我们选用 1.2.2 支持 MR,2.0 以后不再支持 MR job,只是支持 Spark
job 的。
2. 结构图
二、 Hive 安装
1. 安装 Hive
1) 安装包上传
2) 安装包解压
tar -zxvf apache-hive-1.2.2-bin.tar.gz
rm -rf apache-hive-1.2.2-bin.tar.gz
mv apache-hive-1.2.2-bin hive-1.2.2
3) 使用前提
使用 Hive,前提上本机器上必须有 Hadoop 的安装目录,因为 hive 要依赖 hadoop,需
要启动 mr 程序。
2. 错误处理
1) Jline 错误(2.6.x 版本)
解决办法:hive 的 lib 下的 jline-2.12.jar 版本比 Hadoop 下 jline-0.9.94.jar 版本高,删除
hadoop 下的 jline 对应 jar 包,拷贝 hive 下的到 hadoop 下即可。
2) Metastore 错误(metastore_db)
解决办法:进入到 metastore_db,执行 rm -rf *.lck
3) Myql 的 hive 库错误
解决办法,
a) 设置 hive 服务器 tmp 权限
hadoop dfs -chmod -R 777 /tmp
b) 进入 msql
mysql>drop database hive;
mysql>create database hive;
mysql>alter database hive character set latin1;
4) 内存分配错误
解决办法,在 yarn-site.xml 配置中,把 mr 所需资源根据机器配置下,例如请求中需要的
资源内存 1536,而只给了 1024 就报错了,改如下:
yarn.scheduler.maximum-allocation-mb
2000
yarn.nodemanager.resource.memory-mb
2000
3. 启动 Hive
1) 启动 Hadoop 集群
start-all.sh
2) 启动 hive(配置了 hive 的环境变量)
hive
3) 查看 yarn 节点
yarn node –list
4. 服务端、客户端
1) 服务端(10000 端口)
启动服务:hive --service hiveserver2 &
关闭服务:查询进程:ps -aux| grep hiveserver2
杀死进程:kill -9 20670
监听服务端:netstat –nltp
2) 客户端(安装了 hive 的机器 master-01:10000)
启动:beeline
beeline>!connect jdbc:hive2://master-01:10000
用户名:root 密码:空
三、 mysql 存储元数据
1. mysq 安装
1) 上传安装包
http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
2) 安装(保证虚拟机能上网)
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server
3) 重启 mysql
# service mysqld restart
4) 设置 root 帐号和密码
mysql -uroot(第一次进入,没有密码)
mysql> set password for 'root'@'localhost'=password('root');
5) 退出 exit
6) 重新登录
mysql -u root -proot
7) 远程 mysql 服务器
mysql> grant all privileges on *.* to root@'master-01' identified by 'root';
给来自 master-01 的用户 root 分配可对所有数据库的所有表进行所有操作的权限,
并设定口令为 root。
mysql> grant all privileges on *.* to root@localhost identified by 'root';
给本机用户 root 分配对所有表所有操作的权限,并设定口令为 root。
2. myql 元数据配置
1) hive 的 conf 中新建 hive-site.xml
vim hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://slave-01:3306/hive?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
root
2) Jar 包引入
Hive 的 lib 下拷贝 mysql-connector-java-5.1.7-bin.jar
3) 再次启动 Hive:可以看见 myql 中具备 hive 的数据库
四、 Hive 的 DDL 语法
客户端连接工具要设置 Linux 的键盘操作
1. 数据库
1) 查看数据库
show databases;
2) 创建数据库
create database db_1;
3) 删除空数据库
drop database if EXISTS db_1;
4) 删除带数据表的数据库
DROP DATABASE IF EXISTS db_1 CASCADE;
5) 使用数据库
use db_1;
2. 内部表
1) 查看数据表
show tables;
2) 创建默认表
create table t_1 (id int,name string,add string)
>row format delimited
>fields terminated by ',';
3) 创建 db_1 中表:
use db_1;
create table t_2 (id int,price double)
>row format delimited
>fields terminated by ' ';
4) 删除表
DROP TABLE IF EXISTS t_1;
5) 默认路径
默认表路径:/user/hive/warehouse
3. 外部表
create external table t_3 (id int,name string,add string)