`
bupt04406
  • 浏览: 347439 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hbase 0.90->0.92升级

 
阅读更多

0.90->0.92版本之间在hdfs上面存储文件的一些区别:
(1)0.92在hbase.rootdir下面多了文件hbase.id,用来存储集群的ClusterId
(2)每个Table目录下面了个文件.tableinfo.0000000001(默认从
0000000001开始,修改表的属性这个值会增加),用来存储Table的HTableDescriptor

(2)0.90使用HFileV1存储Region数据,0.92使用HFileV2存储数据,读取时根据文件里面存储的version信息来使用那个HFile
相同的地方:
HLog都是一样的用的SequenceFile格式存储
.logs
.oldlogs
.corrupt
.tmp
.regioninfo
hbase.rootdir/hbase.version

 

 

 

HMaster启动
0.92.x 相比0.90.x不同的地方:
(1)如果hbase.rootdir/hbase.id不存在,那么创建这个文件,写入集群的clusterId
(2)-ROOT- 表下面有没有.tableinfo开头的HTD(HTableDescriptor)文件,没有就创建,写入HTD
(3)扫描一下-ROOT- 表,看下.META. Region对应的row 的 info:v是否有值,有,这个值是否>=HConstants.META_VERSION (常量0),如果没有或者<0那么说明没有迁移过,需要迁移,执行下面的操作:
    (3.1)迁移root表到新的版本,扫描全表,看下info:regioninfo是否是0.92前的版本,HRegionInfo.VERSION_PRE_092(常量0),如果是执行:(1)HTD是否写到FS上面,没有就写到FS上面。(2)创建新版本的HRegionInfo,写入到相应的info:regioninfo中,如果有info:splitA and info:splitB也会更新到新版本。
    (3.2)迁移meta表到新的版本,扫描全表,看下info:regioninfo是否是0.92前的版本,HRegionInfo.VERSION_PRE_092(常量0),如果是执行:(1)HTD是否写到FS上面,没有就写到FS上面。(2)创建新版本的HRegionInfo,写入到相应的info:regioninfo中,如果有info:splitA and info:splitB也会更新到新版本。
    (3.3)更新-ROOT-的Version标志,也就是.META.表对应的row写入info:v  HConstants.META_VERSION

说明:info:regioninfo 对应的value 前一个byte是VERSION字段,根据这个VERSION来定位是0.92前的版本还是0.92后面的版本


0.92.x里面默认写的HFile文件格式是HFile V2版本,通过配置中的hfile.format.version来决定,hbase-default.xml里面默认是2,也就是HFile V2。 
文件结尾的4 byte是VERSION信息,HFile V1是1,HFile V2是2,读取时根据文件最后的4 byte来决定使用相应的Reader来解析数据。



.META. 表里面的信息:
  0.90.x系列
  info:regioninfo 对应的value是:VERSION,endKey,offLine,regionId,regionName,split,startKey,tableDesc,hashCode
  0.92.x系列
  info:regioninfo 对应的value是:VERSION,endKey,offLine,regionId,regionName,split,startKey,tableName,hashCode
区别是:
  (1) VERSION,0.90.x是0,0.92.x是1 
  (2) tableDesc 0.90.x存储的是HTableDescriptor,tableName 0.92.x存储的是TableName
0.92.x读取的时候先读一个byte的VERSION,然后根据相应的VERSION来解析相应的info:regioninfo数据。

 

 

 

0.90.x Server返回给ClientResponse格式是:call.idInt+ error flagBoolean+value

0.92.xServer返回给ClientResponse格式是:call.idInt+ flagByte+lengthInt+ StatusInt+value

所以0.90.x0.92.x不兼容不能互读数据。

 

zk的目录不能复用,需要换个新的目录,配置项是hbase.zookeeper.property.dataDir。0.90.x使用的是zookeeper-3.3.3,0.92.x使用的是zookeeper-3.4.3

分享到:
评论

相关推荐

    HBase 官方文档

    - **从 0.90.x 升级到 0.92.x**:提供从早期版本到 0.92.x 的升级指南。 - **从 0.20x 或 0.89x 升级到 0.90.x**:针对更早期版本向 0.90.x 升级的建议。 #### 五、HBase Shell 使用 - **使用脚本**:介绍如何使用...

    HBase performance and robustness enhancement,(Zhihong Yu).pdf

    从HBase 0.92版本开始,HRegionInfo仅存储表名,不再包含HTableDescriptor,而表的模式文件(.tableinfo)则存储在HDFS下的表目录中。这一改变通过HBASE-451提案得以实现,显著降低了内存消耗,提升了系统对大量...

    Hbase中文文档

    3.1. 从HBase 0.20.x or 0.89.x 升级到 HBase 0.90.x 3.2. 从 0.90.x 到 0.92.x 4. The HBase Shell 4.1. 使用脚本 4.2. Shell 技巧 5. 数据模型 5.1. 概念视图 5.2. 物理视图 5.3. 表 5.4. 行 5.5. 列族 5.6. Cells...

    HBase权威指南中文版+官方文档

    - **从0.90.x到0.92.x**:提供升级路径与建议。 #### 四、HBase Shell操作 - **使用脚本**:通过Shell执行SQL命令。 - **Shell技巧**:介绍提高Shell使用效率的方法。 #### 五、HBase数据模型详解 - **概念视图*...

    hbase权威指南

    - **从0.90.x到0.92.x**: 指导用户如何平滑地完成版本升级。 #### 五、HBase Shell - **使用脚本**: 如何通过脚本来操作HBase。 - **Shell技巧**: 分享提高效率的小技巧。 #### 六、数据模型 - **概念视图**: ...

    HBase官方文档中文版

    - **升级步骤**:提供了从不同版本(如0.94.x、0.92.x、0.90.x等)升级到0.97的具体步骤和注意事项。 #### 四、HBase Shell使用指南 - **脚本使用**:介绍了如何使用HBase Shell执行脚本,包括常用命令和示例。 -...

    Hbase 官方中文文档

    - 分别介绍了从0.94.x升级到0.96.x、0.92.x升级到0.94.x、0.90.x升级到0.92.x、以及从0.20x或0.89x升级到0.90.x的详细步骤。 4. HBaseShell部分: - 介绍了如何使用HBase的命令行界面进行操作。 - 提供了一些...

    HBase在淘宝的应用和优化

    尽管当时0.92版本的HBase还未成熟,淘宝团队通过自行开发Coprocessor来实现这些复杂功能。 ##### 2. 技术选型与版本选择 - **0.90.x版本**:2011年1月发布的0.90.0版本成为HBase应用的一个重要里程碑,该版本加入...

    hadoop,hbase,hive版本整合兼容性最全,最详细说明【适用于任何版本】

    早期的Hive版本(如Hive 0.90)与HBase 0.92是兼容的。Hive 1.x版本与HBase 0.98.x或更低版本兼容,而Hive 2.x版本则兼容HBase 1.x及更高版本。用户应确保选择兼容的HBase和Hive版本进行部署,以避免潜在的集成问题...

    HBase 官方文档 中文版0.97.pdf

    文档中还提到了修订历史,指出文档经历了几个版本的升级,例如从0.94.x升级到0.96.x、0.92.x升级到0.94.x等。 HBase的数据模型设计包括表、行、列族(Column Families)、单元格(Cells)以及与之相关的操作和版本...

Global site tag (gtag.js) - Google Analytics