分享

HBase数据到底是怎么存储的?

Riordon 发表于 2015-1-13 09:18:12 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 58087
查资料得:
1、HBase中表数据是以列簇存储在HDFS中的,其中每个列簇对应HDFS中的一个单独文件。
      其中还单独文件数据:
         (Row key1+时间戳+列簇A:列1 )
         (Row key1+时间戳+列簇A:列2 )
           ...
         (Row key2+时间戳+列簇A:列1 )
         (Row key2+时间戳+列簇A:列2 )

          ...
2、HBase中表数据是在Row key 方向分为多个Region,而Region是分布式存储的最小单位。
      数据存储和传统数据库相似,
      这不意味着数据是按行存储的吗?


这两点是不是有点矛盾呢?
   抑或是,真正存储是1
   2 只是方便调度呢?

已有(7)人评论

跳转到指定楼层
pengsuyun 发表于 2015-1-13 11:07:34
每个列簇对应HDFS中的一个单独文件  这句话已经能够说明,hbase不是按行存储,你想一行有多列族的情况下,就会把数据存在多个文件下,按行存储的意思,是会把行数据存在一个文件中,所以hbase是按列存储的。

应该说hbase和传统关系型数据库还是有些相似的地方,起码在hfile中hbase列族下一行的列是相邻存储的,这点跟传统关系型数据库应该是类似的。
回复

使用道具 举报

pengsuyun 发表于 2015-1-13 11:10:23
楼主也可以看看我整的一张图
http://www.aboutyun.com/thread-11101-1-1.html

希望对你有所帮助,然后再多看看hbase权威指南,你就更清楚了。
回复

使用道具 举报

stark_summer 发表于 2015-1-13 12:33:21
回复

使用道具 举报

nextuser 发表于 2015-1-13 18:07:01
hbase本质是hdfs文件。
HBase是基于BigTable的面向列的分布式存储系统,其存储设计是基于Memtable / SSTable设计的,
主要分为两部分
一部分为内存中的MemStore (Memtable)
另外一部分为磁盘(这里是HDFS)上的HFile (SSTable)。
还有就是存储WAL的log


不同的列族在HBase内部通常对应一个目录,这样不同的列值只会放到它所属的列族目录下。


回复

使用道具 举报

nextuser 发表于 2015-1-13 18:10:08
nextuser 发表于 2015-1-13 18:07
hbase本质是hdfs文件。
HBase是基于BigTable的面向列的分布式存储系统,其存储设计是基于Memtable / SSTab ...
HBase在逻辑上的存储最小单位是Region,物理上来说事HFile
回复

使用道具 举报

Riordon 发表于 2015-1-14 08:07:20
回复

使用道具 举报

Riordon 发表于 2015-1-14 08:07:59
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条