Apache HBase【从无到有从有到无】【AH7】HBase和架构设计

 

HBase和架构设计

可以在Ian Varley的硕士论文“ No Relation: The Mixed Blessings of Non-Relational Databases”中找到有关各种非rdbms数据存储的优缺点建模的很好的介绍。 如果您有一点时间了解HBase模式建模与RDBMS中的建模方法有何不同,那么现在它有点过时了,但是请阅读大量的背景知识。 另外,请阅读有关HBase如何在内部存储数据的keyvalue,以及有关schema.casestudies的部分。

Cloud Bigtable网站上的文档“ Designing Your Schema”是相关的,并且做得很好,并且在那里获得的经验教训同样适用于HBase。 只需将所有引用的值除以〜10即可获得适用于HBase的内容: 它表示单个值的大小约为10MB,HBase可以做类似的事情-如果可能的话,最好减小它-并指出Cloud Bigtable中最多100个列族,在HBase上建模时认为约为10个。

另请参阅Robert Yokota的HBase应用程序原型(其他HBasers完成的工作的更新),以对在HBase模型基础上表现出色的用例进行有用的分类。

1.模式创建(Schema Creation)

可以使用The Apache HBase Shell或Java API中的Admin创建或更新HBase模式。

进行ColumnFamily修改时,必须禁用表,例如:

Configuration config = HBaseConfiguration.create();
Admin admin = new Admin(conf);
TableName table = TableName.valueOf("myTable");

admin.disableTable(table);

HColumnDescriptor cf1 = ...;
admin.addColumn(table, cf1);      // adding new ColumnFamily
HColumnDescriptor cf2 = ...;
admin.modifyColumn(table, cf2);    // modifying existing ColumnFamily

admin.enableTable(table);

有关配置客户端连接的更多信息,请参见client dependencies

0.92.x代码库支持联机模式更改,但是0.90.x代码库要求禁用该表。

1.1.架构更新(Schema Updates)

当对Tables或ColumnFamilies进行更改(例如,区域大小,块大小)时,这些更改将在下次进行重大压缩时生效,并且StoreFiles将被重写。

有关StoreFiles的更多信息,请参见store

2.表架构的经验法则(Table Schema Rules Of Thumb)

有许多不同的数据集,具有不同的访问模式和服务级别期望。 因此,这些经验法则只是一个概述。 阅读完此列表后,请阅读本章的其余部分以获取更多详细信息。

  • 目标区域的大小在10到50 GB之间。
  • 旨在使单元格不超过10 MB,如果使用 mob,则不超过50 MB。否则,请考虑将单元数据存储在HDFS中,并将指向数据的指针存储在HBase中。
  • 典型的架构每个表具有1到3个列族。 HBase表不应设计为模仿RDBMS表。
  • 对于具有1或2个列族的表,大约50-100个区域是一个不错的数字。请记住,区域是列族的连续段。
  • 列的姓氏应尽可能短。将为每个值存储列族名称(忽略前缀编码)。它们不应像典型的RDBMS中那样具有自我说明性和描述性。
  • 如果要存储基于时间的机器数据或日志记录信息,并且行键是基于设备ID或服务ID加上时间的,则您可能会遇到一种模式,即较旧的数据区域在特定时间范围内永远不会进行其他写入。在这种情况下,最终会出现少量活动区域和大量较旧的区域,而这些区域没有新的写入操作。对于这些情况,您可以容忍更多区域,因为资源消耗仅由活动区域驱动。
  • 如果只有一个列族忙于写操作,则只有该列族会占用内存。分配资源时要注意写模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值