Hbase - 写操作

Posted

技术标签:

【中文标题】Hbase - 写操作【英文标题】:Hbase - Write operation 【发布时间】:2014-12-22 07:30:36 【问题描述】:

在 HBase 中,元数据存储在目录表中,即 META 表中。这些表在启动或区域拆分或区域负载平衡期间由 HMaster 更新。客户想要获取一些 ROW,从 META 表中获取区域信息。

我的问题是,当我们在特定表中插入新行时,如何更新此元表?比如我执行了一个put命令在现有表中插入一个新行,这行是如何反映在Meta表中的,以便另一个客户端想要获取该行可以拉取区域信息。

【问题讨论】:

【参考方案1】:

除非您添加新区域,否则不需要 META 更新。

META 只保留系统中的区域地图(区域名称 -> 机器)

一个区域包含一组行。假设您有一个包含 3 个区域的表

区域 1:[0, 3] 区域 2:[4, 6] 区域 3:[7, 9]

如果您插入以 0 到 3 之间的数字开头的键,您的数据将插入到区域 1。 如果您插入以 4 到 6 之间的数字开头的键,则您的数据将插入到区域 2 中。 如果您插入以 7 到 9 之间的数字开头的键,您的数据将被插入到区域 3。

当您要求特定键(放置或获取)时。咨询了 META,客户询问哪些区域包含密钥 X。负责处理该范围的区域将被返回,并且您的操作被发送到那里。

因此,您无需在每次插入时都更新 META。它是基于键范围的一切。 (如果您有一个区域,该区域将负责处理所有键,直到它变大并分成两部分。然后左侧区域将包含低于原始区域中存在的中间键的键和右侧区域将包含高于原始区域中存在的中间键的键)

【讨论】:

以上是关于Hbase - 写操作的主要内容,如果未能解决你的问题,请参考以下文章

大数据—— HBase 常见面试题整理

Spark操作HBase

HBase总结

HBase总结

HBase数据迁移实践操作篇

Hbase