Hive简介、架构、数据组织

什么是HIVE

  • 由Facebook实现并开源的,基于Hadoop的数据仓库工具,适用于离线的批量数据计算;
  • 底层数据存储在HDFS上,Hive可以将结构化的数据映射为一张数据库表;
  • 提供HQL(Hive SQL)查询功能
  • **Hive的本质:**将SQL语句转换为MapReduce任务运行,进而使用户方便的利用HQL处理和计算存储于HDFS上的结构化数据。

HIVE特点

优点:

  • 可扩展性,横向扩展
  • 延展性:支持自定义函数
  • 良好的容错性:保障及时个别节点出现问题,SQL语句仍可完成执行

缺点:

  1. 不支持记录级别的增删改操作
  2. 查询延迟较严重
  3. 不支持事务:主要用于OLAP(联机分析处理)
    ,而非OLTP(联机事务处理)

Hive VS RDBMS

在这里插入图片描述

Hive架构

在这里插入图片描述

  1. 用户接口:shell/CLI, jdbc/odbc, Web UI
    • shell终端/CLI(Command Line Interface):交互形式使用Hive命令行对Hive进行交互
    • jdbc/odbc:Hive基于JDBC操作提供的客户端,开发及运维人员用此链接Hive Server服务器
    • Web UI:浏览器访问Hive
  2. 跨语言服务: Thrift server是Facebook开发的软件框架,用于可扩展且跨语言的服务开发,提供了让用户使用多种语言操纵Hive的能力
  3. Driver:驱动器Driver,编译器Compiler,优化器Optimizer,执行器Executor 该部分完成HQL查询语句从语法分析、编译、优化、生成逻辑执行计划的部分。生成的逻辑执行计划存储在HDFS中,随后由MapReduce调用执行
    • 驱动器Driver:将HQL语句转换为抽象语法树(AST)
    • 编译器Compiler:将抽象语法树(AST)编译为逻辑执行计划
    • 优化器Optimizer:对逻辑执行计划进行优化
    • 执行器Executor:调用底层运行框架(MapReduce)运行逻辑执行计划
  4. 元数据存储系统:RDBMS MySQL
    元数据:表名、列、分区及其属性、表的属性(内部表&外部表)、表数据所在目录 等。
    因Hive中的元数据默认存储在自带的Derby数据库中,不适合多用户操作,且存储目录不固定,不方便管理,因此常将元数据存储在位于本地货远程的MySQL库中,MySQL库和Hive通过MetaStrore服务进行交互

Hive的数据组织

数据存储格式

TextFile、SequenceFile、ParquetFile\RCFile
解析时,仅需在创建表时数据中的列分隔符和行分隔符

数据模型

  1. 数据库Database:在HDFS中表现为 ${hive.metastore.warehouse.dir}目录下的一个文件夹
  2. 表 Table:在HDFS中表现为上述数据库文件夹目录下的一个文件夹
    2.1 外部表 External Table:存储位置可以在任意指定HDFS目录路径
    2.2 表分为:内部表、外部表、分区表、Bucket表
  3. 视图 View:只读,基于基本表创建
  4. 分区 Partition:在HDFS中表现为表文件夹目录下的子目录
  5. 分桶 Bucket:在HDFS中表现为同一个表目录下,根据哈希值(Hash)散列后的多个文件

内表 VS 外表

在这里插入图片描述

分区表 VS 分桶表

在这里插入图片描述

本文内容来源自“扎心了,老铁”的博文,并进行部分整理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值