如何将特定的行写入特定的 RegionServer?

How to write specific rows to specific RegionServer?

我有两个区域服务器,RS1RS2。我想确保所有键以小于 M 的字母开头的行都进入 RS1 中的区域,然后进入 RS2.

中的区域

怎么做?

你应该看看 http://hbase.apache.org/book/regions.arch.html,HBase 的书有很多关于区域和拆分的信息。


关于您的问题,您只需创建一个包含 2 个区域的 table 并将每个区域分配给每个区域服务器。要创建具有 2 个区域的 table,您只需提供一个分割点(默认情况下,只会创建 1 个区域)

$ hbase shell
hbase> create 'my_table', 'f1', SPLITS=> ['M']

完成后,前往您的主人检查您的 table 区域 http://my_master:60010/table.jsp?name=my_table

Name | Region Server | Start Key | End Key | Requests
my_table,,1420361349896.82ef0d5d63ecc37bc076f51f6a7d3074. | my_rs_1:60030 | | M | 0
my_table,M,1420361349897.9ce694c69f1b177a1db2dce224febb92. | my_rs_2:60030 | M | | 0

您可能会自动为每个区域服务器分配一个区域,但如果两个区域都在同一区域服务器上(即 my_rs_1),您可以将其中一个区域移动到另一个区域:

hbase> move '9ce694c69f1b177a1db2dce224febb92','my_rs_2,60020,1414964067589'

请注意,移动命令要求您提供经过编码的区域名称和完整的服务器 ID(您可以在此处找到您的区域服务器 ID 列表 http://my_master:60010/master-status

然后再次前往您的主人http://my_master:60010/table.jsp?name=my_table检查该区域是否已成功分配给其他区域服务器。