`

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

阅读更多

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

在HBASE中建立一张表结构如下:

{NAME => 'USER_TEST_TABLE', 
MEMSTORE_FLUSHSIZE => '67108864', 
MAX_FILESIZE => '1073741824', 
FAMILIES => [
{NAME => 'info', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', 
COMPRESSION => 'NONE', VERSIONS => '1', TTL => '2147483647', 
BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'
}, 
{NAME => 'info2', BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', 
COMPRESSION => 'NONE', VERSIONS => '1', TTL => '2147483647', 
BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'
}
]
}

结构图如下, 往下表插入测试数据, 下面查看此表在HDFS中文件的存储方式.

HBase测试表

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

hdfs://HADOOPCLUS01:端口/hbase

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

1. 查看Hbase根目录. 

[hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls hadoop fs -ls /hbase
Found 37 items
drwxr-xr-x   - hadoop cug-admin          0 2013-03-27 09:29 /hbase/-ROOT-
drwxr-xr-x   - hadoop cug-admin          0 2013-03-27 09:29 /hbase/.META.
drwxr-xr-x   - hadoop cug-admin          0 2013-03-26 13:15 /hbase/.corrupt
drwxr-xr-x   - hadoop cug-admin          0 2013-03-27 09:48 /hbase/.logs
drwxr-xr-x   - hadoop cug-admin          0 2013-03-30 17:49 /hbase/.oldlogs
drwxr-xr-x   - hadoop cug-admin          0 2013-03-30 17:49 /hbase/splitlog
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目录内容:

[hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls /hbase/USER_TEST_TABLE
Found 2 items
drwxr-xr-x   - hadoop cug-admin          0 2013-03-28 10:18 /hbase/USER_TEST_TABLE/03d99a89a256f0e09d0222709b1d0cbe
drwxr-xr-x   - hadoop cug-admin          0 2013-03-28 10:18 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce

 有两个目录, 说明此表已经分裂成两个HRegion.

3. 在查看其中一个HRegion的文件目录.

[hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce
Found 4 items
-rw-r--r--   3 hadoop cug-admin       1454 2013-03-28 10:18 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/.regioninfo
drwxr-xr-x   - hadoop cug-admin          0 2013-03-29 15:21 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/.tmp
drwxr-xr-x   - hadoop cug-admin          0 2013-03-29 15:21 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info
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查看内容:

乱码已经过滤, 存储的信息整理:

[hadoop@HADOOPCLUS01 bin]$ hadoop fs -cat /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/.regioninfo
USER_TEST_TABLE,AAA-AAA11110UC1,1364437081331.68b8ad74920040ba9f39141e908c67ce.
AA-AAA11110UC1
USER_TEST_TABLE

IS_ROOT false
IS_META false
MAX_FILESIZE 1073741824
MEMSTORE_FLUSHSIZ 6710886

info
BLOOMFILTER NONE 
REPLICATION_SCOPEVERSIONS 1
COMPRESSION NONE
TTL 2147483647
BLOCKSIZE 65536  
IN_MEMORY false
BLOCKCACHE true

info2
BLOOMFILTER NONE 
REPLICATION_SCOPEVERSIONS 1
COMPRESSION NONE
TTL 2147483647
BLOCKSIZE 65536
IN_MEMORY false
BLOCKCACHE true

REGION => {NAME => 'USER_TEST_TABLE,\x00\x00\x00\x0A\x00\x00\x00\x09AAA-AAA11110UC1\x00\x00\x00\x00,
1364437081331.68b8ad74920040ba9f39141e908c67ce.', 
STARTKEY => '\x00\x00\x00\x0A\x00\x00\x00\x09AAA-AAA11110UC1\x00\x00\x00\x00', 
ENDKEY => '', 
ENCODED => 68b8ad74920040ba9f39141e908c67ce, 
TABLE => {{NAME => 'USER_TEST_TABLE', MAX_FILESIZE => '1073741824', 
MEMSTORE_FLUSHSIZE => '67108864', 
FAMILIES => [{NAME => 'info', BLOOMFILTER => 'NONE', 
REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', 
TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', 
BLOCKCACHE => 'true'}, 
{NAME => 'info2', BLOOMFILTER => 'NONE', 
REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', 
TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'false', 
BLOCKCACHE => 'true'}]}}
VT102VT102VT102VT102VT102VT102VT102VT102

 5. 查看info ColumnFamily中信息文件和目录:

[hadoop@HADOOPCLUS01 bin]$ hadoop fs -ls /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info
Found 4 items
-rw-r--r--   3 hadoop cug-admin  547290902 2013-03-28 10:18 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/4024386696476133625
-rw-r--r--   3 hadoop cug-admin  115507832 2013-03-29 15:20 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/5184431447574744531
-rw-r--r--   3 hadoop cug-admin  220368457 2013-03-29 15:13 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/6150330155463854827
-rw-r--r--   3 hadoop cug-admin   24207459 2013-03-29 15:21 /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/7480382738108050697

6. 查看具体保存HBase数据的HDFS文件信息:

[hadoop@HADOOPCLUS01 bin]$ hadoop fs -cat /hbase/USER_TEST_TABLE/68b8ad74920040ba9f39141e908c67ce/info/4024386696476133625
AA-AAA11110UDFinfoChangeType=2 13560596974000
AA-AAA11110UDFinfoCountry=1 13560596974000
AA-AAA11110UDFinfoUpdateTime=13560596974105 13560596974000

AA-AAA11110UDGinfoChangeType=2 13560596974000
AA-AAA11110UDGinfoCountry=1 13560596974000
AA-AAA11110UDGinfoUpdateTime=13560334347205 13560596974000

AA-AAA11110UDHinfoChangeType=2 13560596974000
AA-AAA11110UDHinfoCountry=1 13560596974000
AA-AAA11110UDHinfoUpdateTime=13560281517235 13560596974000

  即是上面图片中插入的其中一部分数据.

在HBase中存储时, 对于每个Qualifer有如下5个属性RowKey, ColumnFamily, Qualifer, TimeStamp, Value.

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下面配置:

<property>
<name>dfs.datanode.http.address</name>
<value>0.0.0.0:62075</value>
</property>

所以访问HDFS的HTTP的URL为:

http://HADOOPCLUS02:62075/browseDirectory.jsp?namenodeInfoPort=62070&dir=/

 

15
1
分享到:
评论
3 楼 dazeman 2014-03-12  
您好,在hdfs上对应我的表的ColumnFamily目录下没有任何文件。但是在hbase shell下scan是有数据的。请问是请什么情况。
2 楼 greatwqs 2014-01-11  
wangxf314 写道
您好,在看到的文件内容都是乱码,请问需要修改什么吗?

肯定有一些乱码的, 这个跟HFile的格式有关,还有就是你查看的工具要支持UTF-8编码,可以解决局部的乱码.
1 楼 wangxf314 2014-01-10  
您好,在看到的文件内容都是乱码,请问需要修改什么吗?

相关推荐

    hadoop的mapreduce把oracle/mysq导入到hbase和hdfs中的程序

    标题中的“hadoop的mapreduce把oracle/mysq导入到hbase和hdfs中的程序”指的是一项数据处理任务,利用Hadoop的MapReduce框架,将关系型数据库(如Oracle和MySQL)中的数据高效地迁移至分布式存储系统HDFS(Hadoop ...

    将hdfs上的文件导入hbase的源代码

    本主题将详细讲解如何将HDFS(Hadoop Distributed File System)上的文件导入到HBase中,并以在Cloudera SCM的CDH 4.8.1产品环境中的源代码实现为例进行阐述。 首先,理解HDFS和HBase的基本原理至关重要。HDFS是...

    hdfs,hbase命令原理介绍

    1. **小文件存储**:对于非常小的文件(小于 HDFS 默认的 block 大小,默认为 128MB),HDFS 不是最优选择,因为每个文件的元数据都需要存储在 NameNode 的内存中,这会占用大量资源。 2. **并发写入和随机修改限制*...

    HDFS 通过mapreduce 进行 HBase 导入导出

    - **Map阶段**:在 MapReduce 任务中,Map 函数读取 HDFS 上的数据文件,将每条记录拆分成键值对,其中键可以是 HBase 表的行键和列族信息,值为对应的字段值。 - **Reduce阶段**:Reduce 函数接收来自 Map 的键值...

    Hadoop数据迁移--从Hadoop向HBase

    这样的数据结构可以直接映射到HBase的表结构中,其中`rowkey`作为唯一标识,`f1`表示列族名称,`f1c1`是列限定符,而`f1c1values`则是具体的值。 为了正确解析和处理这些数据,Mapper类扮演了关键角色。在提供的...

    Hbase 表设计与操作

    HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable...

    JAVA将HDFS中的文件导入HBase

    HBase是构建在HDFS之上,基于列族的分布式数据库,适合处理结构化和半结构化的海量数据,支持快速随机读取。 要实现从HDFS到HBase的数据导入,我们需要以下步骤: 1. **配置环境**:确保你的开发环境中已经安装了...

    HDFS_HBaseShell的常用命令

    7. 查看表结构:describe ‘表名’ 8. 删除列族:alter ‘表名’,{NAME=’列名’,METHOD=’delete’} 9. 删除表:drop ‘表名’ 10. 检查一个表是否存在:exists ‘表名’ 11. 判断表是否enable或disable:is_...

    [案例]从冷备份的hdfs数据中恢复到原来的hbase表

    本文档详细介绍了一种从HDFS中的冷备份数据恢复至HBase表的方法。此过程适用于使用了HBase 1.1.x 和 Hadoop 2.7.x版本的环境。通过以下步骤,可以有效地将数据恢复到其原始状态,确保业务连续性和数据完整性。 ####...

    scala API 操作hbase表

    此外,为了连接到HBase,还需要在项目的`src/main/resources`目录下放置`core-site.xml`、`hdfs-site.xml`和`hbase-site.xml`配置文件。 以下是一些关键的Scala API操作HBase的基本步骤: 1. 引入必要的库: 首先...

    hbase-1.4.9-bin.tar.gz

    HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。 它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的...

    HDFS与HBASE程序关键点个性化开发.doc

    - 查看HDFS信息:通过执行`./bin/hadoop fs`命令,可以查看HDFS的常用操作和文件系统结构。 - 目录操作:创建用户目录,如`./bin/hdfs dfs -mkdir -p /user/hadoop`,并使用`-ls`命令查看目录。 - 文件操作:将...

    2-1-HBase.pdf

    HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。 它是Hadoop的生态系统,提供对数据的随机实时读/写访问,是Hadoop文件系统的...

    【HBase企业应用开发】工作中自己总结的Hbase文档,非常全面!

    HBase是一种分布式的、面向列的数据库管理系统,它利用Hadoop HDFS作为其文件存储系统,使用Hadoop MapReduce来处理HBase中的海量数据,并且使用Zookeeper作为其协同服务。HBase以表的形式存储数据,表由行和列组成...

    大数据 hdfs hadoop hbase jmeter

    在IT行业中,大数据处理是当前的关键技术之一,而Hadoop、HDFS和HBase则是其中的核心组件。Hadoop是一个开源框架,主要用于存储和处理大规模数据,而HDFS(Hadoop Distributed File System)是Hadoop的核心部分,是...

    Hbase 官方中文文档

    - 讲解了在MapReduce作业中如何访问其他HBase表,以及关于推测执行的相关内容。 8. HBase安全部分: - 阐述了HBase的安全机制,包括如何安全地访问HBase,以及HBase的访问控制机制。 - 提到了如何进行安全批量...

    Facebook开发HDFS和HBase的新进展

    1. **层次存储体系**:通过建立多级缓存体系,包括应用程序缓存、HBase的HBlock缓存以及操作系统层面的HDFS文件缓存,Facebook极大提高了数据访问速度,减少了磁盘I/O,增强了系统的响应能力。 2. **容错机制改进**...

    4.抽取mysql数据到hbase表中.docx

    ### 知识点详解 #### 一、HBase与MySQL数据抽取概述 1. **HBase简介**:HBase是...通过以上步骤,我们可以成功地将MySQL中的数据抽取到HBase表中,从而利用HBase的高性能和大数据处理能力来优化数据访问和分析流程。

    HBase详细讲解

    它采用了Google的Bigtable论文中提到的数据模型,并且与Hadoop的HDFS文件系统紧密集成,适合存储大量非结构化数据。 HBase的历史可以追溯到2006年,当时作为一个项目发起,后于2010年升级成为Apache的顶级项目。...

    hbase备份和数据恢复

    1. HBase到HDFS:可以通过HBase的Export工具,将HBase表的数据导出到HDFS文件,然后进行进一步处理或备份。 2. HDFS到HBase:可以使用HBase的Import工具,将HDFS上的数据文件加载到HBase表中。此过程通常包括预处理...

Global site tag (gtag.js) - Google Analytics