Hbase基本结构 (四) hbase:meta表的基本结构

264 阅读4分钟

1. hbase:meta表结构描述

hbase(main):001:0\> describe 'hbase:meta'

2020-05-06 10:45:18,863 INFO [main] ipc.RpcClientImpl: RPC Server Kerberos
principal name for service=MasterService is hbase/hadoop.hadoop.com\@HADOOP.COM

Table hbase:meta is ENABLED

hbase:meta, {TABLE_ATTRIBUTES =\> {IS_META =\> 'true', REGION_REPLICATION =\>
'1', coprocessor\$1 =\>
'\|org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint\|536870911\|'}

COLUMN FAMILIES DESCRIPTION

{NAME =\> 'info', BLOOMFILTER =\> 'NONE', VERSIONS =\> '10', IN_MEMORY =\>
'true', KEEP_DELETED_CELLS =\> 'FALSE', DATA_BLOCK_ENCODING =\> 'NONE', TTL =\>
'FOREVER', COMPRESSION =\> 'NONE', CACHE_DATA_IN_L1 =\> 'true', M

IN_VERSIONS =\> '0', BLOCKCACHE =\> 'true', BLOCKSIZE =\> '8192',
REPLICATION_SCOPE =\> '0'}

1 row(s) in 0.2290 seconds
  • hbase:meta表只有一个名为info的ColumnFamily。

  • HBase保证hbase:meta表始终只有一个Region,这是为了确保meta表多次操作的原子性,因为HBase本质上只支持Region级别的事务。

  • 所谓Region级别事务,就是当多个操作落在同一个Region内时,HBase能保证这一批操作执行的原子性。如果多个操作分散在不同的Region,则无法保证这批操作的原子性。

  • 表结构中使用到MultiRowMutationEndpoint这个coprocessor就是为了实现Region级别的事务。

2. hbase:meta数据结构

2.1 数据样例


BIKE0047,\\x0213880149379\\x00\\x80\\x00\\x01n3\\xB6\\x10\\x
column=info:regioninfo, timestamp=1588087768604, value={ENCODED =\>
6df367601a650a56ac8ca08286dd56d8, NAME =\>
'BIKE0047,\\x0213880149379\\x00\\x80\\x00\\x01n3\\xB6\\

00786928580aaeea54fdddc936faf81de6,1581163580488.6df
x10\\x00786928580aaeea54fdddc936faf81de6,1581163580488.6df367601a650a56ac8ca08286dd56d8.',
STARTKEY =\> '\\x0213880149379\\x00\\x80\\x00\\x01n3\\xB6\\x10\\x00786928580

367601a650a56ac8ca08286dd56d8. aaeea54fdddc936faf81de6', ENDKEY =\>
'\\x0215189801521\\x00\\x80\\x00\\x01n\$B\\xFC\\x002a5662a175e75196e6c1c06edec35c83'}

BIKE0047,\\x0213880149379\\x00\\x80\\x00\\x01n3\\xB6\\x10\\x
column=info:seqnumDuringOpen, timestamp=1588087768604,
value=\\x00\\x00\\x00\\x00\\x00\\x00\\x05\\xE2

00786928580aaeea54fdddc936faf81de6,1581163580488.6df

367601a650a56ac8ca08286dd56d8.

BIKE0047,\\x0213880149379\\x00\\x80\\x00\\x01n3\\xB6\\x10\\x column=info:server,
timestamp=1588087768604, value=hdhbase68:21302

00786928580aaeea54fdddc936faf81de6,1581163580488.6df

367601a650a56ac8ca08286dd56d8.

BIKE0047,\\x0213880149379\\x00\\x80\\x00\\x01n3\\xB6\\x10\\x
column=info:serverstartcode, timestamp=1588087768604, value=1588061211738

00786928580aaeea54fdddc936faf81de6,1581163580488.6df

367601a650a56ac8ca08286dd56d8.

2.2 数据结构示意图

3. 根据rowkey查找业务表所在Region

STARTROW格式:tableName,rowkey,timestamp

REVERSED反向Scan:9999999999999是13位时间戳中最大值。

HBase在设计hbase:meta表的rowkey时,把业务表的StartRow而不是StopRow放在hbase:meta表的rowkey上。

如果某个Region对应的区间是[bbb,ccc),为了定位rowkey=bcx的Region,通过正向Scan只会找到[bbb,ccc)的下一个区间,因此使用反向查找。

hbase(main):002:0\> scan 'hbase:meta',
{STARTROW=\>'BIKE0047,\\x0213880149379\\x00\\x80\\x00\\x01n3\\xB6\\x10\\x00786928580aaeea54fdddc936faf81de6,9999999999999',REVERSED=\>true,LIMIT=\>1}

ROW COLUMN+CELL

BIKE0047,H18620092812\\x00\\x80\\x00\\x01o\\x1Bt\<\\x0045e5
column=info:regioninfo, timestamp=1588060131869, value={ENCODED =\>
60e6aab8b3b2aa2eb95d001fc0ab7bcf, NAME =\>
'BIKE0047,H18620092812\\x00\\x80\\x00\\x01o\\x1Bt\<\\x0

4b41c7e2ea52003293cf8a1e6281,1585538205800.60e6aab8b
045e54b41c7e2ea52003293cf8a1e6281,1585538205800.60e6aab8b3b2aa2eb95d001fc0ab7bcf.',
STARTKEY =\>
'H18620092812\\x00\\x80\\x00\\x01o\\x1Bt\<\\x0045e54b41c7e2ea5200329

3b2aa2eb95d001fc0ab7bcf. 3cf8a1e6281', ENDKEY =\> ''}

BIKE0047,H18620092812\\x00\\x80\\x00\\x01o\\x1Bt\<\\x0045e5
column=info:seqnumDuringOpen, timestamp=1588060131869,
value=\\x00\\x00\\x00\\x00\\x00\\x00\\x05\\xA8

4b41c7e2ea52003293cf8a1e6281,1585538205800.60e6aab8b

3b2aa2eb95d001fc0ab7bcf.

BIKE0047,H18620092812\\x00\\x80\\x00\\x01o\\x1Bt\<\\x0045e5 column=info:server,
timestamp=1588060131869, value=hdhbase48:21302

4b41c7e2ea52003293cf8a1e6281,1585538205800.60e6aab8b

3b2aa2eb95d001fc0ab7bcf.

BIKE0047,H18620092812\\x00\\x80\\x00\\x01o\\x1Bt\<\\x0045e5
column=info:serverstartcode, timestamp=1588060131869, value=1588060086519

4b41c7e2ea52003293cf8a1e6281,1585538205800.60e6aab8b

3b2aa2eb95d001fc0ab7bcf.

1 row(s) in 0.0110 seconds