分享

详细了解HBase zookeeper和-Root-/.MET表

问题导读
1.如何查看HBase的安装等信息?
2.如何查看ROOT-表?
3.如何查看.META.表?





1 探究Zookeeper


   安装过HBase的开发者一定知道,HBase本身就嵌入了Zookeeper,你可以选择安装嵌入的Zookeeper,也可以安装一个分布式的Zookeeper集群。具体的安装步骤,可以到我的博客里查找。

   我们可以手工与Zookeeper交互的方式就是使用HBaseshell命令。使用zk_dump来查看HBase的安装等信息。

  1. hbase(main):002:0>zk_dump  
  2.    HBaseis rooted at /hbase  
  3. Active master address:hadoop-master,60000,1390921674646  
  4. Backup master addresses:  
  5. Region server holding ROOT:machine-0,60020,1390921686697  
  6. Region servers:  
  7. machine-1,60020,1390921690387  
  8. machine-2,60020,1390921767658  
  9. machine-0,60020,1390921686697  
  10. Quorum Server Statistics:  
  11. machine-1:2222  
  12. Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT  
  13. Clients:  
  14.   /192.168.177.158:55294[1](queued=0,recved=121,sent=135)  
  15.   /192.168.177.172:54763[0](queued=0,recved=1,sent=0)  
  16.   /192.168.177.168:59896[1](queued=0,recved=48,sent=48)  
  17.   /192.168.177.158:55299[1](queued=0,recved=47,sent=47)  
  18.    
  19. Latency min/avg/max: 0/2/42  
  20. Received: 217  
  21. Sent: 230  
  22. Connections: 4  
  23.   Outstanding:0  
  24. Zxid: 0x3300000047  
  25. Mode: follower  
  26. Node count: 29  
  27. machine-0:2222  
  28. Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT  
  29. Clients:  
  30.   /192.168.177.172:38860[1](queued=0,recved=75,sent=77)  
  31.   /192.168.177.172:38855[1](queued=0,recved=322,sent=369)  
  32.   /192.168.177.167:52643[1](queued=0,recved=78,sent=90)  
  33.   /192.168.177.172:38900[0](queued=0,recved=1,sent=0)  
  34.    
  35. Latency min/avg/max: 0/2/291  
  36. Received: 476  
  37. Sent: 536  
  38. Connections: 4  
  39. Outstanding: 0  
  40. Zxid: 0x3300000047  
  41. Mode: follower  
  42. Node count: 29  
  43. machine-2:2222  
  44. Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT  
  45. Clients:  
  46.   /192.168.177.172:45693[0](queued=0,recved=1,sent=0)  
  47.   /192.168.177.172:45687[1](queued=0,recved=13,sent=13)  
  48.   /192.168.177.167:36053[1](queued=0,recved=43,sent=43)  
  49.    
  50. Latency min/avg/max: 0/0/21  
  51. Received: 57  
  52. Sent: 56  
  53. Connections: 3  
  54. Outstanding: 0  
  55. Zxid: 0x3300000047  
  56. Mode: leader  
  57. Node count: 29
复制代码

根据显示的信息,我们可以查阅到HDFS中的HBase根路径,激活的主机地址域名和端口,root表的主机地址和端口。
  1. HBase is rooted at /hbase  
  2. Active master address:hadoop-master,60000,1390921674646  
  3. Backup master addresses:  
  4. Region server holding ROOT:machine-0,60020,1390921686697
复制代码

区域服务器地址信息
  1. Region servers:  
  2. machine-1,60020,1390921690387  
  3. machine-2,60020,1390921767658  
  4. machine-0,60020,1390921686697
复制代码

  Zookeeper法定服务器的统计信息,当前的法定服务名称以及Zookeeper版本信息,客户端信息等

  1. Quorum Server Statistics:  
  2. machine-1:2222  
  3. Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT  
  4. Clients:  
  5.   /192.168.177.158:55294[1](queued=0,recved=121,sent=135)  
  6.   /192.168.177.172:54763[0](queued=0,recved=1,sent=0)  
  7.   /192.168.177.168:59896[1](queued=0,recved=48,sent=48)  
  8.   /192.168.177.158:55299[1](queued=0,recved=47,sent=47)  
  9. Latency min/avg/max: 0/2/291  
  10. Received: 476  
  11. Sent: 536  
  12. Connections: 4  
  13. Outstanding: 0  
  14. Zxid: 0x3300000047  
  15. Mode: follower  
  16. Node count: 29  
  17. machine-2:2222  
  18. Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT  
  19. Clients:  
  20.   /192.168.177.172:45693[0](queued=0,recved=1,sent=0)  
  21.   /192.168.177.172:45687[1](queued=0,recved=13,sent=13)  
  22.   /192.168.177.167:36053[1](queued=0,recved=43,sent=43)  
  23.   
  24. Latency min/avg/max: 0/0/21  
  25. Received: 57  
  26. Sent: 56  
  27. Connections: 3  
  28. Outstanding: 0  
  29. Zxid: 0x3300000047  
  30. Mode: leader  
  31. Node count: 29
复制代码


当我们尝试去理解系统当前的状态时,这些信息显得尤为重要。那些主机加入到集群中了,那个主机扮演什么角色。更重要的是,个主机充当HBase的-root-表服务。HBase客户端需要这些信息来实现读写操作,而Zookeeper正好可以提供这些信息。
     客户端能够制动化地与Zookeeper进行操作交流以及找到区域服务器
(RegisionServer)。为了更好的理解这些信息,我们将探究一下HBase中两个特殊的表-root-和.meta.。

2 探究-ROOT-表

   扫描-root-表,查看具体的信息。

20140129170450203.png


从输出的信息可以知道,-root-表包含.meta.表信息。-root-表中仅有一行数据,并且所有的信息是关于region, 这就意味着,整个系统由-root-表管理。这我目前的实例中,一个单一的.meta.表中的region能够包含所有信息。从-root-表中,我们可以知道有4列(regioninfo, server,serverstartcode, v.)数据,.meta.的数据在RegionServer 服务机的machine-0上。由于只有一个region,regioninfo字段中的开始字段startkey和结束字段endkey都为空。

3 探究.META.表
        从上一节中,我们知道,regioninfo中包含region的名称,开始关键字startkey,结束关键字endkey,编码过的名称(编码过的名称是系统内部使用的)。如果.meta.表中没有表单定义,会有下列的显示:
hbase(main):030:0> scan '.META.'
ROW COLUMN+CELL
0 row(s) in 5.4180 seconds

一旦有表定义在HBase中,呈现效果会是这样:
  1. hbase(main):012:0>scan '.META.'  
  2. ROW                           COLUMN+CELL                                                                          
  3. car,,1389254794373.41b48a453column=info:regioninfo, timestamp=1389254795518, value={NAME =>'car,,1389254794373.  
  4. 79036ed6a28620f95bc3e73.     41b48a45379036ed6a28620f95bc3e73.',STARTKEY => '', ENDKEY => '', ENCODED => 41b48a4  
  5.                              5379036ed6a28620f95bc3e73,}                                                           
  6. car,,1389254794373.41b48a453column=info:server, timestamp=1390982716032, value=machine-1:60020                  
  7. 79036ed6a28620f95bc3e73.                                                                                          
  8. car,,1389254794373.41b48a453column=info:serverstartcode, timestamp=1390982716032, value=1390982688688            
  9. 79036ed6a28620f95bc3e73.                                                                                          
  10. pentaho_mappings,,1389456264column=info:regioninfo, timestamp=1389456267362, value={NAME =>'pentaho_mappings,,1  
  11. 784.1fa2cc86c50ced5fa39630da389456264784.1fa2cc86c50ced5fa39630dae76fb1a2.', STARTKEY => '', ENDKEY=> '', ENCOD  
  12. e76fb1a2.                    ED =>1fa2cc86c50ced5fa39630dae76fb1a2,}                                             
  13. pentaho_mappings,,1389456264column=info:server, timestamp=1390982716247, value=machine-0:60020                  
  14. 784.1fa2cc86c50ced5fa39630da                                                                                      
  15. e76fb1a2.                                                                                                         
  16. pentaho_mappings,,1389456264column=info:serverstartcode, timestamp=1390982716247, value=1390982687824            
  17. 784.1fa2cc86c50ced5fa39630da                                                                                      
  18. e76fb1a2.                                                                                                         
  19. users,,1389925800801.6a5a2b0column=info:regioninfo, timestamp=1389925809127, value={NAME =>'users,,138992580080  
  20. 170dfd0e19df13849706ec035.   1.6a5a2b0170dfd0e19df13849706ec035.',STARTKEY => '', ENDKEY => '', ENCODED => 6a5a2  
  21.                               b0170dfd0e19df13849706ec035,}                                                        
  22. users,,1389925800801.6a5a2b0column=info:server, timestamp=1390982718429, value=machine-1:60020                  
  23. 170dfd0e19df13849706ec035.                                                                                         
  24. users,,1389925800801.6a5a2b0column=info:serverstartcode, timestamp=1390982718429, value=1390982688688            
  25. 170dfd0e19df13849706ec035.                                                                                       
  26. weblogs,,1389255303284.d2973column=info:regioninfo, timestamp=1389255304879, value={NAME =>'weblogs,,1389255303  
  27. dcc1b1ff64cc56a197fdd83ec5e.284.d2973dcc1b1ff64cc56a197fdd83ec5e.', STARTKEY => '', ENDKEY => '',ENCODED => d29  
  28.                              73dcc1b1ff64cc56a197fdd83ec5e,}                                                      
  29. weblogs,,1389255303284.d2973column=info:server, timestamp=1390982716256, value=machine-0:60020                  
  30. dcc1b1ff64cc56a197fdd83ec5e.                                                                                      
  31. weblogs,,1389255303284.d2973column=info:serverstartcode, timestamp=1390982716256, value=1390982687824            
  32. dcc1b1ff64cc56a197fdd83ec5e.                                                                                       
  33. 4 row(s) in0.3280 seconds
复制代码


正如你看到的,.META.包含的是表的信息,这里就不详述了。看下列这个结构图便可以理解HBase中这两个表的关系。
   2.png






欢迎加入about云群9037177932227315139327136 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(9)人评论

跳转到指定楼层
Riordon 发表于 2015-9-15 14:16:50
1)-ROOT-表与.META.表结构相同
2)-ROOT-表记录.META.表Region信息,.META.表记录用户表Region信息
3)-ROOT-表只有一个Region,.META.表和用户表都可能由多个Region
4)-ROOT-表中每个Row记录.META.表的一个Region信息,.META.表中每个Row记录用户表的一个Region
5)由上可知,-ROOT-表只会记录.META.表信息,只有一张表,故基本不会Split Region,而.MEAT.表记录所有用户表Region信息,很可能很多很多
6)-ROOT-表对应RegionServer地址由Zookeeper给出
回复

使用道具 举报

小熊007 发表于 2014-9-11 15:37:40
学习了,不错,很好,领教
回复

使用道具 举报

yanzibuaa 发表于 2017-8-30 11:35:33
请教楼主,为什么我的hbase里scan -ROOT-表失败?
$ hbase shell
17/08/30 10:41:52 INFO Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.0-cdh5.4.0, rUnknown, Tue Apr 21 12:21:37 PDT 2015

hbase(main):001:0> scan '-ROOT-'

ERROR: -ROOT- has been deprecated.


请问这个表是被别的表代替了吗?
回复

使用道具 举报

qcbb001 发表于 2017-8-30 11:36:53
yanzibuaa 发表于 2017-8-30 11:35
请教楼主,为什么我的hbase里scan -ROOT-表失败?
$ hbase shell
17/08/30 10:41:52 INFO Configuration. ...

新版本已经没有root了
回复

使用道具 举报

yanzibuaa 发表于 2017-8-30 11:51:16
qcbb001 发表于 2017-8-30 11:36
新版本已经没有root了

只有.META.? 那如果.META.有多个region,这些region的信息放在哪里呢?直接放在Zookeeper中吗?有没有相关的参考文档?多谢啦
回复

使用道具 举报

qcbb001 发表于 2017-8-30 12:57:21
yanzibuaa 发表于 2017-8-30 11:51
只有.META.? 那如果.META.有多个region,这些region的信息放在哪里呢?直接放在Zookeeper中吗?有没有相 ...

hbase0.96版本后删除了root 表,因为觉的目的是根据rroot表获取meta地址,过程是通过zookeeper获取root表地址,在根据root表记录meta表地址进行访问,还不如和zookeeper通讯一次。新增了namespace,详细见patch设计(https://issues.apache.org/jira/browse/HBASE-8015
2.jpg
Meta的地址存放在zookeeper的(老版本是存放在root表里)如图:
    20141106125728796.jpg

http://blog.csdn.net/map_lixiupeng/article/details/40857825

回复

使用道具 举报

yanzibuaa 发表于 2017-8-30 14:49:25
qcbb001 发表于 2017-8-30 12:57
hbase0.96版本后删除了root 表,因为觉的目的是根据rroot表获取meta地址,过程是通过zookeeper获取root表 ...

谢过大神,膜拜了!
接着学习...
回复

使用道具 举报

yanzibuaa 发表于 2017-8-30 17:19:08
qcbb001 发表于 2017-8-30 12:57
hbase0.96版本后删除了root 表,因为觉的目的是根据rroot表获取meta地址,过程是通过zookeeper获取root表 ...

还想再请教个问题:存放region的目录名用region的name的hash值,那么每个目录只存放一个文件,对吗?
回复

使用道具 举报

老街的腔调 发表于 2017-12-26 15:04:40
不错不错,评论也学到不少东西
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条