Hive架构与数据模型

1. 架构与组成

Hive架构

Hive的核心组件:

  • 用户接口模块:包括CLI、HWI、JDBC、ODBC、Thrift Server
  • 驱动模块(Driver):包括编译器、优化器、执行器等,负责把HiveSQL语句转换成一系列MapReduce作业
  • 元数据存储模块(Metastore)是一个独立的关系型数据库(自带derby数据库,或MySQL数据库),该数据库存储着与数据库,表,列,数据类型以及在HDFS中的位置的所有相关元数据.
hive系统架构

2. Hive数据模型

2.1 数据模型

  1. Hive元数据信息存储在关系数据库中
  2. 实际数据存储依赖HDFS
  3. Hive通过以下模型来组织HDFS上的数据


    Hive数据模型
  • 数据库: 命名空间将数据将表与其它数据单元分离开来,防止命名冲突.
  • 表: 组织具有相同结构的记录集合.
  • 分区: 分区是基于特定属性分类给定信息的数据的逻辑隔离.
  • 桶 (或 集群): 与分区相似,但是用哈希函数来分离数据 和 确定记录应该到达的集群或桶

分区和分桶是可选的,只是为了提高性能并使数据更易于管理

数据管理和存储方式

2.2 Database

  1. Database是Hive数据模型的最上层,跟关系数据库中的Database意义相似
  2. 通过Database来逻辑划分Hive表的命名空间,避免表同名冲突
  3. Hive默认自带的Database名为default
  4. HDFS存储路径由配置决定,一个Database一个子目录
<property> 
    <name>hive.metastore.warehouse.dir</name> 
    <value>/user/hive/warehouse</value> 
</property></pre>

2.3 Table

2.3.1 管理表和外部表

  1. Hive中的表和关系型数据库中的表在概念上很类似

  2. 每个表在HDFS中都有相应的目录用来存储表的数据

  3. 根据数据是否受Hive管理,分为:

    • Managed Table(管理表)
    • External Table(外表)
  4. 区别:

    • Managed Table:

      • HDFS存储数据受Hive管理,在统一的路径下: ${hive.metastore.warehouse.dir}/{database_name}.db/{tablename}
      • Hive对表的删除操作影响实际数据的删除
    • External Table:

      • HDFS存储路径不受Hive管理,叧是Hive元数据不HDFS数据路径的一个映射
      • Hive对表的删除操作仅仅删除元数据,实际数据不受影响

内部表转换为外部表

ALTER TABLE T_NAME SET TBLPROPERTIES ('EXTERNAL'='TRUE')

2.3.2 永久表和临时表

  1. Permanent Table是指永久存储在HDFS之上的表,默认创建表为永久表
  2. Temporary Table是指仅当前Session有效的表,数据临时存放在用户的临时目录下,当前session退出后即删除
  3. 临时表比较适合于比较复杂的SQL逻辑中拆分逻辑块,或者临时测试

注意:

  • 如果创建临时表时,存在不之同名的永久表,则临时表的可见性高于永久表,即对表的操作是临时表的,用永久表无效
  • 临时表不支持分区

2.4 Partition

  1. 基于用户指定的分区列的值对数据表进行分区

  2. 表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中

    • ${hive.metastore.warehouse.dir}/{database_name}.db/{tablename}/{partitionkey}={value}
  3. 分区的优点

    • 分区从物理上分目录划分不同列的数据
    • 用于查询的剪枝,提升查询的效率
  4. 可以多级Partition,即指定多个Partition字段,但所有Partition的数据不可无限扩展(多级目录造成HDFS小文件过多影响性能)

2.5 Bucket

  1. 桶作为另一种数据组织方式,弥补Partition的短板(不是所有的列都可以作为Partition Key)
  2. 通过Bucket列的值进行Hash散列到相应的文件中,重新组织数据,每一个桶对应一个文件
  3. 桶的优点:
    • 有利于查询优化,比如SMB Join
    • 对于抽样非常有效
  4. 桶的数量一旦定义后,如果更改,只会修改Hive元数据,实际数据不会重新组织

参考链接:
[1] : Hive官网
[2] : Hive设计与架构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335