分享

如何查看HBase表在HDFS中的文件结构

pig2 2014-3-13 01:50:28 发表于 实操演练 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 10736
hbase是基于hadoop,我们产生问题如下:
1.hbase在hdfs上具体是什么形式
2.使用hadoop命令查看Hbase根目录
3.如何查看建立表hdfs目录内容
4.如何查看其中一个HRegion的文件目录
5.如何查看info ColumnFamily中信息文件和目录
6.如何查看保存HBase数据的HDFS文件信息?


已有(3)人评论

跳转到指定楼层
pig2 发表于 2014-3-13 01:55:52
本帖最后由 pig2 于 2014-3-13 01:57 编辑



为了查看HBASE表在HDFS中的文件结构.

在HBASE中建立一张表结构如下:
  1. {NAME => 'USER_TEST_TABLE',
  2. MEMSTORE_FLUSHSIZE => '67108864',
  3. MAX_FILESIZE => '1073741824',
  4. FAMILIES => [
  5. {NAME => 'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0',
  6. COMPRESSION => 'NONE', VERSIONS => '1', TTL => '2147483647',
  7. BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'
  8. },
  9. {NAME => 'info2', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0',
  10. COMPRESSION => 'NONE', VERSIONS => '1', TTL => '2147483647',
  11. BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'
  12. }
  13. ]
  14. }
复制代码
结构图如下, 往下表插入测试数据, 下面查看此表在HDFS中文件的存储方式.

e6d4a7a9-97e0-3d93-af2c-8bd97d033eaa.jpg


由于在HBase服务器配置文件中指定的存储HBase文件的HDFS地址为:

hdfs://HADOOPCLUS01:端口/hbase

登录到namenode服务器,这里为HADOOPCLUS01, 用hadoop命令查看hbase在hdfs中此表的文件.


1. 查看Hbase根目录.
  1. [hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls hadoop fs -ls /hbase
  2. Found 37 items
  3. drwxr-xr-x   - hadoop cug-admin          0 2013-03-27 09:29 /hbase/-ROOT-
  4. drwxr-xr-x   - hadoop cug-admin          0 2013-03-27 09:29 /hbase/.META.
  5. drwxr-xr-x   - hadoop cug-admin          0 2013-03-26 13:15 /hbase/.corrupt
  6. drwxr-xr-x   - hadoop cug-admin          0 2013-03-27 09:48 /hbase/.logs
  7. drwxr-xr-x   - hadoop cug-admin          0 2013-03-30 17:49 /hbase/.oldlogs
  8. drwxr-xr-x   - hadoop cug-admin          0 2013-03-30 17:49 /hbase/splitlog
  9. drwxr-xr-x   - hadoop cug-admin          0 2013-03-30 17:49 /hbase/USER_TEST_TABLE
复制代码
可以看到所有表的信息. 在hdfs中的建立的目录. 一个表对应一个目录.

-ROOT-表和.META.表也不例外, -ROOT-表和.META.表都有同样的表结构, 关于两表的表结构和怎么对应HBase整个环境的表的HRegion, 可以查看上篇转载的文章.

splitlog和.corrupt目录分别是log split进程用来存储中间split文件的和损坏的日志文件的。

.logs和.oldlogs目录为HLog的存储.

.oldlogs为已经失效的HLog(Hlog对HBase数据库写Put已经全部完毕), 后面进行删除.

HLog File 是一个Sequence File,HLog File 由一条条的 HLog.Entry构成。可以说Entry是HLog的基本组成部分,也是Read 和Write的基本单位。

Entry由两个部分组成:HLogKey和WALEdit。

2. 查看建立表hdfs目录内容:
  1. [hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls /hbase/USER_TEST_TABLE
  2. Found 2 items
  3. drwxr-xr-x   - hadoop cug-admin          0 2013-03-28 10:18 /hbase/USER_TEST_TABLE/03d99a89a256f0e09d0222709b1d0cbe
  4. drwxr-xr-x   - hadoop cug-admin          0 2013-03-28 10:18 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce
复制代码
有两个目录, 说明此表已经分裂成两个HRegion.

3. 在查看其中一个HRegion的文件目录.
  1. [hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce
  2. Found 4 items
  3. -rw-r--r--   3 hadoop cug-admin       1454 2013-03-28 10:18 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/.regioninfo
  4. drwxr-xr-x   - hadoop cug-admin          0 2013-03-29 15:21 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/.tmp
  5. drwxr-xr-x   - hadoop cug-admin          0 2013-03-29 15:21 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info
  6. drwxr-xr-x   - hadoop cug-admin          0 2013-03-28 10:18 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info2
复制代码
.regioninfo 此HRegion的信息. StartRowKey, EndRowKey. 记录Region在表中的范围信息.

info, info2, 两个ColumnFamily.  为两个目录.

4. 再对.regioninfo文件用cat查看内容:

乱码已经过滤, 存储的信息整理:
  1. [hadoop@HADOOPCLUS01 bin]$ hadoop fs -cat /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/.regioninfo
  2. USER_TEST_TABLE,AAA-AAA11110UC1,1364437081331.68b8ad74920040ba9f39141e908c67ce.
  3. AA-AAA11110UC1
  4. USER_TEST_TABLE
  5. IS_ROOT false
  6. IS_META false
  7. MAX_FILESIZE 1073741824
  8. MEMSTORE_FLUSHSIZ 6710886
  9. info
  10. BLOOMFILTER NONE
  11. REPLICATION_SCOPEVERSIONS 1
  12. COMPRESSION NONE
  13. TTL 2147483647
  14. BLOCKSIZE 65536  
  15. IN_MEMORY false
  16. BLOCKCACHE true
  17. info2
  18. BLOOMFILTER NONE
  19. REPLICATION_SCOPEVERSIONS 1
  20. COMPRESSION NONE
  21. TTL 2147483647
  22. BLOCKSIZE 65536
  23. IN_MEMORY false
  24. BLOCKCACHE true
  25. REGION => {NAME => 'USER_TEST_TABLE,\x00\x00\x00\x0A\x00\x00\x00\x09AAA-AAA11110UC1\x00\x00\x00\x00,
  26. 1364437081331.68b8ad74920040ba9f39141e908c67ce.',
  27. STARTKEY => '\x00\x00\x00\x0A\x00\x00\x00\x09AAA-AAA11110UC1\x00\x00\x00\x00',
  28. ENDKEY => '',
  29. ENCODED => 68b8ad74920040ba9f39141e908c67ce,
  30. TABLE => {{NAME => 'USER_TEST_TABLE', MAX_FILESIZE => '1073741824',
  31. MEMSTORE_FLUSHSIZE => '67108864',
  32. FAMILIES => [{NAME => 'info', BLOOMFILTER => 'NONE',
  33. REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE',
  34. TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false',
  35. BLOCKCACHE => 'true'},
  36. {NAME => 'info2', BLOOMFILTER => 'NONE',
  37. REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE',
  38. TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false',
  39. BLOCKCACHE => 'true'}]}}
  40. VT102VT102VT102VT102VT102VT102VT102VT102
复制代码

5. 查看info ColumnFamily中信息文件和目录:
  1. [hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info
  2. Found 4 items
  3. -rw-r--r--   3 hadoop cug-admin  547290902 2013-03-28 10:18 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/4024386696476133625
  4. -rw-r--r--   3 hadoop cug-admin  115507832 2013-03-29 15:20 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/5184431447574744531
  5. -rw-r--r--   3 hadoop cug-admin  220368457 2013-03-29 15:13 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/6150330155463854827
  6. -rw-r--r--   3 hadoop cug-admin   24207459 2013-03-29 15:21 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/7480382738108050697
复制代码

6. 查看具体保存HBase数据的HDFS文件信息:
  1. [hadoop@HADOOPCLUS01 bin]$ hadoop fs -cat /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/4024386696476133625
  2. AA-AAA11110UDFinfoChangeType=2 13560596974000
  3. AA-AAA11110UDFinfoCountry=1 13560596974000
  4. AA-AAA11110UDFinfoUpdateTime=13560596974105 13560596974000
  5. AA-AAA11110UDGinfoChangeType=2 13560596974000
  6. AA-AAA11110UDGinfoCountry=1 13560596974000
  7. AA-AAA11110UDGinfoUpdateTime=13560334347205 13560596974000
  8. AA-AAA11110UDHinfoChangeType=2 13560596974000
  9. AA-AAA11110UDHinfoCountry=1 13560596974000
  10. AA-AAA11110UDHinfoUpdateTime=13560281517235 13560596974000
复制代码
即是上面图片中插入的其中一部分数据.
在HBase中存储时, 对于每个Qualifer有如下5个属性RowKey, ColumnFamily, Qualifer, TimeStamp, Value.
  1. AA-AAA11110UDFinfoCountry=1 13560596974000  
复制代码
# AA-AAA11110UDH 部分对应RowKey;
   # info对应了ColumnFamily;
   # Country对应Qualifer;
   # 1对用Value;
   # 13560596974000对应TimeStamp.
后面将分析RowKey与AA-AAA11110UDH的对应关系.

7. 使用HTTP查看文件:

在上面命令中, 也可以有Http查看Hdfs中的文件, 配置在hdfs-site.xml下面配置:
  1. <property>
  2. <name>dfs.datanode.http.address</name>
  3. <value>0.0.0.0:62075</value>
  4. </property>
复制代码
所以访问HDFS的HTTP的URL为:
  1. http://HADOOPCLUS02:62075/browseDirectory.jsp?namenodeInfoPort=62070&dir=/
复制代码
回复

使用道具 举报

匿名  发表于 2014-3-13 04:10:43
dsgehgeth
回复

使用道具

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

本版积分规则

关闭

推荐上一条 /2 下一条