`
bit1129
  • 浏览: 1069664 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【HBase十二】HFile存储的是一个列族的数据

 
阅读更多

在HBase中,每个HFile存储的是一个表中一个列族的数据,也就是说,当一个表中有多个列簇时,针对每个列簇插入数据,最后产生的数据是多个HFile,每个对应一个列族,通过如下操作验证

 

1. 建立一个有两个列族的表

 

create 'members','colfam1','colfam2'

 

2. 在members表中的colfam1中插入50*50*50条数据,然后flush到磁盘,通过UI观察MemStore和HFile个数的变化

 

for i in '0'..'50' do for j in '0'..'50' do for k in '0'..'50' do put 'members', "row-colfam1-#{i}#{j}#{k}", "colfam1:#{j}#{k}", "#{j}#{k}" end end end

 

做完如上操作, members表的HFile数目不变,但是MemStore占用23.3M空间

 

4. 将members表数据flush到磁盘

 

 

flush 'members'

 

 

做完如上操作, members表的HFile数目增1,但是MemStore占用10几K空间,即MemStore的内存空间被释放

 

5.

5.1 在members表中的colfam1和colfam2中分别插入1条数据

for i in '100'..'100' do for j in '100'..'100' do for k in '100'..'100' do put 'members', "row-colfam1-#{i}#{j}#{k}", "colfam1:#{j}#{k}", "#{j}#{k}" end end end

for i in '100'..'100' do for j in '100'..'100' do for k in '100'..'100' do put 'members', "row-colfam2-#{i}#{j}#{k}", "colfam2:#{j}#{k}", "#{j}#{k}" end end end

 

做完如上操作, members表的HFile数目不变,因为数据量小,MemStore的变化也基本没有

 

5.2 将members表数据flush到磁盘

 

flush 'members'

 

做完如上操作,即使数据量很小,members表的HFile数目也是增加了两个,可见HBase为每个列簇创建了一个HFile文件

 

 

 

 

 Num.Store vs Num.Storefiles

 

在HBase的UI,有两个统计指标,Num.Store和Num.Storefiles,其中Num.Store表示Store的数目,一个Column Family对应一个Store;Num.Storefile对应着这个表的所有HFile的数目,每个Storefile根据其对应的ColumnFamily不同,分属于不同的Store,但是HBase UI上看不出来,每个Store有几个Storefiles

 

 

 http://hadoop.master:16301/rs-status?filter=all#memoryStats

 http://hadoop.master:16301/rs-status?filter=all#regionStoreStats

 

 

 

 

 

分享到:
评论

相关推荐

    Hadoop数据迁移--从Hadoop向HBase载入数据

    在HBase中,行键是唯一的,用于标识一行记录,而列族和列限定符共同确定一个单元格(cell),单元格中存储具体的值。 总结而言,Hadoop数据迁移到HBase的过程涵盖了数据格式的转换、表结构的创建以及数据的上传和...

    HBase详细讲解

    3. Store:每个HRegion由一个或多个Store组成,每个Store负责一个列族的数据存储。 4. HFile:HFile是HBase中存储的最底层数据文件格式,它存储在HDFS上。 5. HLog:HLog是HBase中用于记录所有对表的更新操作的...

    Hbase几种入库方式

    多线程入库是指同时使用多个线程将数据写入到 Hbase 中。这种方式的优点是可以提高写入速度,缺点是需要编写多线程程序,增加了程序的复杂度。 小结 Hbase 入库方式的选择取决于具体的业务需求和数据规模。预先...

    hadoop mr file2hfile2hbase

    2. **编写Mapper**:Map阶段,你需要编写一个Mapper类,这个类负责读取输入文件中的每一行数据,解析出行键、列族、列限定符和值,然后生成HBase的Put对象。Put对象表示对HBase表的一次写操作。 3. **编写Reducer**...

    MR程序Bulkload数据到hbase

    而HBase是一个分布式的、支持列族的NoSQL数据库,适合实时读写操作。 在大数据领域,当需要将大量数据导入到HBase时,直接通过客户端API逐条插入可能效率低下。因此,我们通常采用Bulkload机制,它允许将数据预先...

    HBase的详细简介

    2. 面向列:HBase以列簇(Column Family)为单位存储数据,每个列簇下可以有多个列(Column),每列存储的是一个数据列,数据是按列族存储,而不是像传统关系数据库那样按行存储,这种数据存储方式有利于对特定列族...

    hbase海量数据的全量导入方法

    HFileOutputFormat是一个重要的工具,用于直接将数据写入HFile格式,从而绕过HBase的常规写入路径,提高数据导入速度。具体而言,它可以接收按顺序排列的KeyValues,并将其写入到指定目录下的HFile中。这样做的好处...

    HBase源代码 hbase-0.98.23

    `org.apache.hadoop.hbase.regionserver.StoreFile`类管理每个列族的HFile,当一个Region的大小达到预设阈值时,`org.apache.hadoop.hbase.regionserver.HRegion`会触发分裂过程,这涉及到`org.apache.hadoop.hbase....

    栅格GIS系统的分布式存储方案

    HBase的物理模型将逻辑模型中的每个列簇分解成单独的表进行存储,而其架构则包括一个三级结构,确保了数据的高效存储和检索。 HBase的设计初衷和架构特点使其非常适合用作栅格GIS系统的分布式存储方案。通过搭建...

    hbase0.94java源代码

    3. 列族(Column Family):列族是数据的逻辑分组,每个列族可以包含任意数量的列(Column)。列由列族名加上列限定符(Qualifier)来唯一标识。 4. 时间戳(Timestamp):每个值都有一个时间戳,表示其创建或更新...

    hbase-2.4.11-src.tar.gz

    HBase,作为Apache软件基金会的一个开源项目,是构建在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,专为处理大规模数据而设计。这次我们关注的是HBase的2.4.11稳定版本的源码,这为我们提供了深入了解其...

    java解决hive快速导数据到Hbase代码

    5. **执行MapReduce作业**:编写一个MapReduce作业,该作业使用HFileOutputFormat作为输出格式,将上一步骤中写入HDFS的数据转化为HBase可读的HFile格式。 6. **加载HFiles**:最后,通过HBase的Admin API或者HBase...

    HBASE基础应用的介绍

    HBase是Apache Hadoop生态系统中的一个重要的组件,它提供了一种分布式、可扩展的大规模数据存储解决方案。HBase基于Google Bigtable论文的思想实现,旨在为海量结构化或半结构化数据提供高效的随机读写访问能力。...

    HBase实现批量存取

    HBase是一种分布式、高性能、基于列族的NoSQL数据库,由Apache基金会开发并维护,它在大规模数据存储和实时查询方面表现出色。本项目实现了在Eclipse环境下对HBase的批量存取操作,这对于理解HBase的工作原理以及...

    hbase 1.2.0源码

    3. Column Family:列族是表内的逻辑数据组织,每个列族包含一组相关的列(Column),列族在表定义时确定,列可以在运行时动态添加。 4. KeyValue:HBase中的数据存储在KeyValue对象中,每个KeyValue包含行键、列族...

    HBase key design

    值得注意的是,如果一个列没有被显式设置值,则该列在存储中不会被保存,空值(Nulls)是不会被存储的。每个单元格的数据都有其坐标,这些坐标和数据值一起被持久化存储。这种模型的存储单元是行(Row),其中包含一...

    尚硅谷大数据技术之 Hbase1

    - **Store**:包含一个或多个HFile,对应于HBase表的一个列族。 - **MemStore**:在内存中存储当前的数据操作,是临时存储键值对的地方,直到被持久化到磁盘。 - **Region**:HBase表被分割成多个region,根据...

    HBase大数据.zip

    HBase,作为Apache软件基金会的一个顶级项目,是构建在Hadoop文件系统(HDFS)之上的非关系型数据库,专门设计用于处理大规模数据集。它的主要特点是列式存储、分布式、可扩展性以及实时读写能力,使其成为大数据...

    hbase导入测试数据集

    表是由行组成的,行由列族中的列组成,而列族又包含多个列,每个列都有一个特定的时间戳。在导入数据时,我们需要将数据格式化为这种结构。 博客文档链接中提到的内容可能包括使用HBase的命令行接口(HBase Shell)...

Global site tag (gtag.js) - Google Analytics