一篇文章彻底明白Hive数据存储的各种模式

Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据;而元数据是用来存储表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。下面分别来介绍。

一、Hive的数据存储

在让你真正明白什么是hive 博文中我们提到Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中。Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。所以往Hive表里面导入数据只是简单的将数据移动到表所在的目录中(如果数据是在HDFS上;但如果数据是在本地文件系统中,那么是将数据复制到表所在的目录中)。

Hive中主要包含以下几种数据模型:Table(表),External Table(外部表),Partition(分区),Bucket(桶)(本博客会专门写几篇博文来介绍分区和桶)。

1、表:Hive中的表和关系型数据库中的表在概念上很类似,每个表在HDFS中都有相应的目录用来存储表的数据,这个目录可以通过${HIVE_HOME}/conf/hive-site.xml配置文件中的 hive.metastore.warehouse.dir属性来配置,这个属性默认的值是/user/hive/warehouse(这个目录在 HDFS上),我们可以根据实际的情况来修改这个配置。如果我有一个表wyp,那么在HDFS中会创建/user/hive/warehouse/wyp 目录(这里假定hive.metastore.warehouse.dir配置为/user/hive/warehouse);wyp表所有的数据都存放在这个目录中。这个例外是外部表。

2、外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该外部表所指向的数据是不会被删除的,它只会删除外部表对应的元数据;而如果你要删除表,该表对应的所有数据包括元数据都会被删除。

3、分区:在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。比如wyp 表有dt和city两个分区,则对应dt=20131218,city=BJ对应表的目录为/user/hive/warehouse /dt=20131218/city=BJ,所有属于这个分区的数据都存放在这个目录中。

4、桶:对指定的列计算其hash,根据hash值切分数据,目的是为了并行,每一个桶对应一个文件(注意和分区的区别)。比如将wyp表id列分散至16个桶中,首先对id列的值计算hash,对应hash值为0和16的数据存储的HDFS目录为:/user /hive/warehouse/wyp/part-00000;而hash值为2的数据存储的HDFS 目录为:/user/hive/warehouse/wyp/part-00002。

来看下Hive数据抽象结构图

从上图可以看出,表是在数据库下面,而表里面又要分区、桶、倾斜的数据和正常的数据等;分区下面也是可以建立桶的。

二、Hive的元数据

Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 由于Hive的元数据需要不断的更新、修改,而HDFS系统中的文件是多读少改的,这显然不能将Hive的元数据存储在HDFS中。目前Hive将元数据存储在数据库中,如Mysql、Derby中。我们可以通过以下的配置来修改Hive元数据的存储方式


  1. <property> 
  2.   <name>javax.jdo.option.ConnectionURL</name> 
  3.   <value>jdbc:mysql://localhost:3306/hive_hdp?characterEncoding=UTF-8 
  4.                     &createDatabaseIfNotExist=true</value> 
  5.   <description>JDBC connect string for a JDBC metastore</description> 
  6. </property> 
  7.   
  8. <property> 
  9.   <name>javax.jdo.option.ConnectionDriverName</name> 
  10.   <value>com.mysql.jdbc.Driver</value> 
  11.   <description>Driver class name for a JDBC metastore</description> 
  12. </property> 
  13.   
  14. <property> 
  15.   <name>javax.jdo.option.ConnectionUserName</name> 
  16.   <value>root</value> 
  17.   <description>username to use against metastore database</description> 
  18. </property> 
  19.   
  20. <property> 
  21.   <name>javax.jdo.option.ConnectionPassword</name> 
  22.   <value>123456</value> 
  23.   <description>password to use against metastore database</description> 
  24. </property> 

当然,你还需要将相应数据库的启动复制到${HIVE_HOME}/lib目录中,这样才能将元数据存储在对应的数据库中。

本文作者:佚名

来源:51CTO

时间: 2025-01-21 08:52:43

一篇文章彻底明白Hive数据存储的各种模式的相关文章

Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)

1.1 Hive简介 1.1.1   什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1.2   为什么使用Hive Ø  直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难度太大   Ø  为什么要使用Hive 操作接口采用类SQL语法,提供快速开发的能力. 避免了去写MapReduce,减少开发人员的学习成本. 功能扩展很方便. 1.1.3   H

Avere:颠覆数据存储的新模式

如果所谓的"大数据"正在经历演变,那么下一阶段将是这样的:有一家公司,它不仅可以储存大量的复杂数据文件,还可以提供快速检索和数据处理,以帮助了解那些信息. "所有人都在讨论大数据,而一提到大数据,他们立刻就会想到储存这些信息所需要的容量,"罗恩·比安基尼(Ron Bianchini)如是说,"他们不会想,一旦你获得所有数据,你该如何处理?如何保持性能?"简而言之,这正是比安基尼在2008年创立数据存储和处理公司Avere时的真正用意.在担任Ave

终于有一篇文章讲明白了“仪表模拟网络环境流量”是怎么回事

通信技术自以太网和IP技术出现以来,针对网络设备以及网络,包括现在的虚拟网络,云平台的测试技术也在一直发展中.其工作原理,简单来说就是通过专用仪表模拟产生并发送网络数据包来对网络设备和网络架构进行性能,压力,以及安全型测试.在这里仪表起到的作用是模拟现实网络流量环境,用于网络设备的研发,网络性能和安全的验证,各种网络通信技术实验室评估,以及各种检测机构的日常测试工作.这种用仪表来模拟网络环境流量的方式,在成本,技术实现,和测试可重复性方面都有着巨大的优势. 流量仿真测试技术的发展 测试仪表往往是

一篇文章全面解析大数据批处理框架Spring Batch

如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架构设计给予支撑;但批处理领域的框架确凤毛麟角.是时候和我们一起来了解下批处理的世界哪些优秀的框架和设计了,今天我将以Spring Batch为例,和大家一起探秘批处理的世界. 如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有

快速入门 | 一篇文章带你掌握数据可视化方法

数据可视化可以帮助我们更好地去传递信息. 本篇要点: 数据可视化是什么 数据可视化的一般流程 常见的数据种类 通过可视化你想表达什么信息 选择具体的可视化形式 图表设计原则 常用的可视化工具 01|数据可视化是什么 数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息(来源于百度百科).也就是说可视化的存在是为了帮助我们更好地去传递信息. 02|数据可视化的一般流程 首先我们需要对我们现有的数据进行分析,得出自己的结论,明确要表达的信息和主题(即你通过图表要说明什么问题).然后根据这个目

一篇文读懂19款数据分析软件,解救选择困难症!

作者介绍 欧阳辰,超过15年的软件开发和设计经验,目前就职于小米公司,负责小米广告平台的架构研发.曾为微软公司工作10年,担任高级软件开发主管.热爱架构设计和高可用性系统,特别对于大规模互联网软件的开发,具有丰富的理论知识和实践经验.个人公众号:互联居.   数据分析(Data Analytics)从来都不是一个寂寞的领域,每一个时代都赋予其新的内容.在大数据盛行之时,各种大数据分析软件如雨后春笋一般涌现出来,整个市场一片繁花似锦.欣欣向荣.本篇文章主要介绍一些常用的大数据分析软件,帮助大家望尽

《虚拟数据中心构建指南》——3.6 数据存储

3.6 数据存储 在VMware中,存储空间被称作数据存储(datastore).数据存储是保存VM.模板或者ISO映像的存储资源的虚拟表现形式.数据存储隐藏了不同技术和存储解决方案的复杂性,为ESX服务器提供一个统一的模型,无须考虑实现的存储类型.数据存储的类型有VMFS和NFS. 注意:VMware的最佳实践建议适当地将用于存储模板或者ISO映像的数据存储与用于VM的数据存储分离.我们还建议监控数据存储的可用空间.应该始终有至少25%至30%的可用空间.这些空间对快照或者备份操作以及VM交换

《Hadoop与大数据挖掘》——第2章 大数据存储与运算利器—Hadoop 2.1 Hadoop概述

第2章 大数据存储与运算利器-Hadoop 本章主要介绍了Hadoop框架的概念.架构.组件.生态系统以及Hadoop相关编程,特别是针对Hadoop组件HDFS.MapReduce.YARN,Hadoop MapReduce编程做了较详细的介绍.在介绍各个知识点的同时,结合动手实践章节,帮助读者理解对应的内容. 2.1 Hadoop概述 2.1.1 Hadoop简介 随着现代社会的发展,各种信息数据存量与增量都非常大,很多情况下需要我们能够对TB级,甚至PB级数据集进行存储和快速分析,然而单机

一篇文章为你解读大数据的现在和未来

大数据的发展前提 关于大数据的概念其实在1998年已经就有人提出了,但是到了现在才开始有所发展,这些其实都是和当下移动互联网的快速发展分不开的,移动互联网的高速发展,为大数据的产生提供了更多的产生大数据的硬件前提,比如说智能手机,智能硬件,车联网,pda等数据的产生终端.这些智能通过移动通信技术和人们的生活紧密的结合在一起,在人流.车流的背后产生了信息流,也就产生了大量的数据. 其次就是移动通信技术的快速发展,在2G时代,无线网速慢,数据产生也非常慢,数据体量也不够,所以还是无法形成大数据,而到