一、Apache Hive 概述
Hive是一个SQL转化转化工具,将SQL的计算转为MapReduce的计算,让开发人员更加方便进行大数据开发
select count(*) from stu
二、 模拟实现Hive功能
hive如何将hdfs上的数据转为结构化的表数据?
一张表的数据构成
1-表的元数据 描述表的基本信息
表名字,字段名,字段类型,字段约束
2-表的行数据
表中每一行的数据内容
表名:tb_stu
id int | name varchar(20) | gander varchar(20) |
---|---|---|
1 | 张三 | 男 |
2 | 李四 | 男 |
3 | 王五 | 男 |
在mysql,oracle等数据库中,表的元数据和行数是数据库统一管理
在hive中表的元数据和行数据由metastore和hdfs共同管理
表的元数据由metastore管理存储
行数据由hdfs管理存储
三、 Hive基础架构
三种客户端模式:
命令行模式 hive
第三方服务(要遵循jdbc协议) : java database connection datagrip beeline
web页面: 几乎不用
帮助我们查询元数据
HiveDriver hive驱动
解析sql语句
制定执行任务
提交mr任务
优化执行方案
执行计算任务
向yarn申请资源
从hdfs中提取数据
注意: hivedriver支持多种计算引擎, 例如 MapReduce Tez Spark
四、Hive部署(了解)
前提 : hadoop 服务 和 mysql 服务可以正常使用.
Hive的三种安装模式
-
==内嵌模式==(体验)
1、元数据存储在内置的derby 2、不需要单独配置metastore 也不需要单独启动metastore服务 适合测试体验。
本地模式
1、元数据使用外置的RDBMS,常见使用最多的是MySQL。
2、不需要单独配置metastore 也不需要单独启动metastore服务
缺点:
如果使用多个客户端进行访问,就需要有多个Hiveserver服务,此时会启动多个Metastore
有可能出现资源竞争现象
远程模式
1、元数据使用外置的RDBMS,常见使用最多的是MySQL。
2、metastore服务单独配置 单独手动启动 全局唯一。
这样的话各个客户端只能通过这一个metastore服务访问Hive.
-
对比
metadata存储在哪 metastore服务如何 内嵌模式 Derby 不需要配置启动 本地模式 MySQL 不需要配置启动 ==远程模式== ==MySQL== ==单独配置、单独启动==
在公共服务中已经将hive部署完成
Hive服务是单机服务,但是,可以进行分布式存储和分布式计算 (基于hdfs和MapReduce)
hive部署完成后,只有node1可以启动服务,但是node2,node3....都可以使用hive服务,因为其可以使用客户端远程链接node1上的服务.
五.Hive客户端
5-1 本地使用
使用一代客户端在本地服务器上连接hive完成sql操作
需要先把metastore的元数据管理服务启动起来
-
启动metastore服务
hive --service metastore
实际开发中让服务后台运行
nohup hive --service metastore &
hive使用java开发,服务运行后可以jps查看java运行的程序
使用一代客户端连接,不需要输入账号密码
hive
5-2 远程使用
可以在其他服务器中连接hive进行相关操作
可以使用二代客户端进行连接,二代客户端支持jdbc,并且需要使用账号进行登录
-
1-启动metastore服务
-
管理元数据
-
-
2-启动hiveserver2服务
-
底层调用thriftserver
-
运行服务支持jdbc连接
-
nohup hive --service hiveserver2 &
注意不要重复启动
hiveserver2的启动时间
会比较长
,可以通过端口查看确认hiveserver2是否真的启动hiveserver2运行时会绑定10000端口
lsof -i:10000
使用hive自带的二代客户端,通过jdbc方式连接hive
beeline