一.SQL,Hive和MapReduce的关系
二.Hive架构映射流程
三.MetaStore元数据管理三种模式
metastore服务配置有3中模式:内嵌模式、本地模式、远程模式
推荐使用:远程模式
四.hive服务操作[重点]
启动hive服务
[root@node1 /]# nohup hive --service metastore &
[1] 10693
[root@node1 /]nohup: 忽略输入并把输出追加到"nohup.out"
[root@node1 /]# nohup hive --service hiveserver2 &
[2] 10829
您在 /var/spool/mail/root 中有新邮件
[root@node1 /]nohup: 忽略输入并把输出追加到"nohup.out"
[root@node1 /]# jps
2704 NodeManager
2209 DataNode
10946 Jps
10693 RunJar
3208 JobHistoryServer
2075 NameNode
2557 ResourceManager
10829 RunJar
[root@node1 /]# lsof -i:10000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 10829 root 522u IPv6 244847 0t0 TCP *:ndmp (LISTEN)
关闭hive服务
[root@node1 /]# jps
2704 NodeManager
2209 DataNode
10946 Jps
10693 RunJar
3208 JobHistoryServer
2075 NameNode
2557 ResourceManager
10829 RunJar
您在 /var/spool/mail/root 中有新邮件
[root@node1 /]# kill -9 10693 10829
[root@node1 /]# jps
2704 NodeManager
2209 DataNode
10946 Jps
3208 JobHistoryServer
2075 NameNode
2557 ResourceManager
[1]- 已杀死 nohup hive --service metastore
[2]+ 已杀死 nohup hive --service hiveserver2
五.客户端连接[重点]
datagrip连接hive服务
创建datagrip项目
连接hive
配置驱动jar包
datagrip连接MySQL
六.数据仓库和数据库
数据仓库和数据库的区别
数据仓库基础三层结构
ETL和ELT
七.hive数据库操作
基本操作[掌握]
-- hive库的核心操作
-- 创建数据库
-- 注意: 默认location路径是/user/hive/warehouse/库名.db
-- 库路径: /user/hive/warehouse/hive1.db
create database hive1;
-- 库路径: /user/hive/warehouse/test.db
create database test;
-- 使用库
use hive1;
-- 注意: 建库的时候可以使用location修改数据库路径
-- 库路径: /test1
create database test1 location '/test1';
-- 为了方便演示location效果,可以先去分别创建一个简单的表
-- 表路径:/user/hive/warehouse/hive1.db/stu
create table hive1.stu(id int,name string);
-- 表路径:/test1/stu
create table test1.stu(id int,name string);
-- 演示删除空数据库
drop database test;
-- 盐水删除非空数据库
drop database test1; -- 报错,hive比较特殊,drop不能直接删除有表的库
-- drop+cascade能够删除有表的库
drop database test1 cascade ;
其他操作[了解]
-- hive库的其他操作
-- schema在hive/mysql中相当于database关键字
create schema demo1;
-- comment: 建库的时候可以添加注释,建议不要中文,因为乱码
-- location: 建表的时候可以指定hdfs上库目录路径,建议使用默认路径/user/hive/warehouse/库名.db
-- with dbproperties: 建表的时候可以设置属性,格式是k=v,了解即可
create database demo2
comment 'database'
location '/user/hive/warehouse/demo2.db'
with dbproperties ('name' = 'bz666');
create database demo3;
-- 查看指定库的建库语句
show create database demo2;
show create database demo3;
-- 查看所有的数据库
show databases;
-- 查看当前使用数据库
select current_database();
-- 查看指定库的基本信息
desc database demo2;
-- 查看指定库的扩展信息
desc database extended demo2;
-- 修改location路径
-- 注意: 必须是绝对路径,而且修改后的路径如果不存在,不会直接创建
alter database demo2 set location 'hdfs://node1.itcast.cn:8020/demo2.db';
-- 以后建表的时候自动创建
create table demo2.stu(id int,name string);
-- 再次查看指定库的扩展信息
desc database extended demo2;
-- 修改dbproperties
alter database demo2 set dbproperties('name'='binzi');
-- 再次查看指定库的扩展信息
desc database extended demo2;
八.Hive表概述
建表语法
数据类型
表分类
-- 内部表(又叫管理表或者托管表)
create table stu1(
id int,
name string
);
-- 外部表(又叫非管理表,非托管表)
create external table stu2(
id int,
name string
);
-- 查看表结构
desc stu1;
desc stu2;
-- 查看表格式化信息
desc formatted stu1; -- 内部表类型: managed_table
desc formatted stu2; -- 外部表类型: external_table
-- 演示内外部表的重点区别
-- 删除内部表(管理表/托管表),会删除表相关的所有数据
insert into stu1 values(1,'张三');
drop table stu1;
-- 删除外部表,只删除了元数据,hdfs中业务数据保留
insert into stu2 values(1,'张三');
drop table stu2;
-- 再次建表后,可以使用location重新关联原来hdfs保留的业务数据
create external table stu22(
id int,
name string
)location '/user/hive/warehouse/hive1.db/stu2';
-- 验证数据
select * from stu22 limit 10;