Hive简单介绍

背景及体系结构

1背景

应用于工业的商务智能收集分析所需的数据集正在大量增长,使得传统的数据仓库解决方案变得过于昂贵。Hadoop 是一个流行的开源map-reduce实现,用于像yahoo, Facebook一类的公司。来存储和处理商用硬件上的大范围数据集。然而map-reduce程序模型还是处于很低级别,即需要开发者来书写客户程序,这些程序往往难于维护与重用。

hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面的hql查询。hive也叫做数据仓库。

2定义

Hive是基于Hadoop(HDFS, MapReduce)的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

本质是将SQL转换为MapReduce程序。

3体系结构

Hive本身建立在Hadoop的体系结构上,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行。并按照该计划生成MapReduce任务后交给Hadoop集群处理,Hive的体系结构如图1-1所示:

1-1 Hive的体系结构

4Hive的数据存储

Hive的存储是建立在Hadoop文件系统之上的。Hive本身没有专门的数据存储格式,也不能为数据建立索引,用户可以自由地组织Hive中的表,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符就可以解析数据了。

Hive中主要包含四类数据模型:表(Table)、外部表(External Table)、分区(Partition)和桶(Bucket)。

Hive中的表和数据库中的表在概念上是类似的,每个表在Hive中都有一个对应的存储目录。例如一个表pokesHDFS中的路径为/warehouse/pokes,其中/warehousehive-site.xml配置文件中由${hive.metastore.warehouse.dir}指定的数据仓库的目录。

Hive中每个分区都对应数据库中相应分区列的一个索引,但是分区的组织方式和传统关系型数据库不同。在Hive中,表中的一个分区对应表下的一个目录,所有分区的数据都存储在对应的目录中。例如,图1-2htable表中包含yearmonthday三个分区,分别对应三个目录:对于year=2012month=01day=01HDFS子目录为:/warehouse/htable/year=2012/ month=01/ day=01;对于year=2012month=02day=14HDFS子目录为:/warehouse/htable/year=2012/ month=02/ day=14;

桶对指定列进行哈希计算时,根据哈希值切分数据,每个桶对应一个文件。例如,将图1-2htable表中属性列Uniqueid列分散到32个桶中,首先要对Uniqueid进行hash计算,对应哈希值为0的桶写入HDFS的目录为:/warehouse/htable/year=2012/ month=01/ day=01/part-0;对应哈希值为1的桶写入HDFS的目录为:/warehouse/htable/year=2012/ month=01/ day=01/part-1

 
1-2 Hive数据存储

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值