首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Hadoop Hbase适合存储哪类数据?

最适合使用Hbase存储的数据是非常稀疏的数据(非结构化或者半结构化的数据)。Hbase之所以擅长存储这类数据,是因为Hbase是column-oriented列导向的存储机制,而我们熟知的RDBMS都是row- oriented行导向的存储机制(郁闷的是我看过N本关于关系数据库的介绍从来没有提到过row- oriented行导向存储这个概念)。在列导向的存储机制下对于Null值得存储是不占用任何空间的。比如,如果某个表 UserTable有10列,但在存储时只有一列有数据,那么其他空值的9列是不占用存储空间的(普通的数据库MySql是如何占用存储空间的呢?)。         Hbase适合存储非结构化的稀疏数据的另一原因是他对列集合 column families 处理机制。 打个比方,ruby和python这样的动态语言和c++、java类的编译语言有什么不同? 对于我来说,最显然的不同就是你不需要为变量预先指定一个类型。Ok ,现在Hbase为未来的DBA也带来了这个激动人心的特性,你只需要告诉你的数据存储到Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。         Hbase还有很多特性,比如不支持join查询,但你存储时可以用:parent-child tuple 的方式来变相解决。         由于它是Google BigTable的 Java 实现,你可以参考一下:google bigtable 。         下面3副图是Hbase的架构、数据模型和一个表格例子,你也可以从:Hadoop summit 上 获取更多的信息。

04

HBase面试题总结1「建议收藏」

hbase的特点是什么?? 1)hbase是一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper管理。 2)hbase适合存储半结构化和非结构化数据,对于结构化数据字段不够确定或者杂乱无章很难按一个概念去抽取数据; 3)hbase为空的纪录不会被存储; 4)基于的表包含rowkey,时间戳,列族,新写入数据时,时间戳更新,同时可以查询到以前的版本; 5)hbase是主从架构,hmaster作为主节点,hregionserver作为从节点。 描述一下hbase的rowkey的设计原则 1)rowkey的长度原则 rowkey是一个二进制码流,rowkey的长度被很多开发者 建议设计在10-100字节,不过建议越短越好,不要超过16字节。 原因如下: a、数据的持久化文件hfile中是按照keyvalue存储的,如果rowkey过长比如100个字节,1000万列数据光rowkey就要占用100*100万=10亿字节,将近1G数据,着就会极大的影响hfile的存储效率。 b、menstore将缓存部分数据到内存,如果rowkey字段过长内存的有效利用效率会降低,系统将无法缓存更多的数据,这会降低检索效率,因此rowkey的长度越短越好,; c、目前操作系统都是64位系统,内存8字节对齐,控制在16字节,8字节的整数倍利用操作系统的最佳特性。

01

Hbase(四):Hbase原理

hbase表中的数据按照行键的字典顺序排序 hbase表中的数据按照行的的方向切分为多个region 最开始只有一个region 随着数据量的增加 产生分裂 这个过程不停的进行 一个表可能对应一个或多个region region是hbase表分布式存储和负载均衡的基本单元 一个表的多个region可能分布在多台HRegionServer上 region是分布式存储的基本单元 但不是存储的基本单元 内部还具有结构 一个region由多个Store来组成 有几个store取决于表的列族的数量 一个列族对应一个store 之所以这么设计 是因为 一个列族中的数据往往数据很类似 方便与进行压缩 节省存储空间 表的一个列族对应一个store store的数量由表中列族的数量来决定 一个store由一个memstore 和零个或多个storefile组成 storefile其实就是hdfs中的hfile 只能写入不能修改 所以hbase写入数据到hdfs的过程其实是不断追加hfile的过程

01
领券