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返回给Client的Response格式是:call.id(Int)+ error flag(Boolean)+value
0.92.x的Server返回给Client的Response格式是:call.id(Int)+ flag(Byte)+length(Int)+ Status(Int)+value
所以0.90.x和0.92.x不兼容不能互读数据。
zk的目录不能复用,需要换个新的目录,配置项是hbase.zookeeper.property.dataDir。0.90.x使用的是zookeeper-3.3.3,0.92.x使用的是zookeeper-3.4.3
分享到:
相关推荐
- **从 0.90.x 升级到 0.92.x**:提供从早期版本到 0.92.x 的升级指南。 - **从 0.20x 或 0.89x 升级到 0.90.x**:针对更早期版本向 0.90.x 升级的建议。 #### 五、HBase Shell 使用 - **使用脚本**:介绍如何使用...
从HBase 0.92版本开始,HRegionInfo仅存储表名,不再包含HTableDescriptor,而表的模式文件(.tableinfo)则存储在HDFS下的表目录中。这一改变通过HBASE-451提案得以实现,显著降低了内存消耗,提升了系统对大量...
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...
- **从0.90.x到0.92.x**:提供升级路径与建议。 #### 四、HBase Shell操作 - **使用脚本**:通过Shell执行SQL命令。 - **Shell技巧**:介绍提高Shell使用效率的方法。 #### 五、HBase数据模型详解 - **概念视图*...
- **从0.90.x到0.92.x**: 指导用户如何平滑地完成版本升级。 #### 五、HBase Shell - **使用脚本**: 如何通过脚本来操作HBase。 - **Shell技巧**: 分享提高效率的小技巧。 #### 六、数据模型 - **概念视图**: ...
- **升级步骤**:提供了从不同版本(如0.94.x、0.92.x、0.90.x等)升级到0.97的具体步骤和注意事项。 #### 四、HBase Shell使用指南 - **脚本使用**:介绍了如何使用HBase Shell执行脚本,包括常用命令和示例。 -...
- 分别介绍了从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的命令行界面进行操作。 - 提供了一些...
尽管当时0.92版本的HBase还未成熟,淘宝团队通过自行开发Coprocessor来实现这些复杂功能。 ##### 2. 技术选型与版本选择 - **0.90.x版本**:2011年1月发布的0.90.0版本成为HBase应用的一个重要里程碑,该版本加入...
早期的Hive版本(如Hive 0.90)与HBase 0.92是兼容的。Hive 1.x版本与HBase 0.98.x或更低版本兼容,而Hive 2.x版本则兼容HBase 1.x及更高版本。用户应确保选择兼容的HBase和Hive版本进行部署,以避免潜在的集成问题...
- **0.90.x至0.92.x**:进一步改进了性能和稳定性,引入新特性。 **注意事项**: - **数据兼容性**:确保新旧版本之间的数据兼容。 - **测试验证**:升级前进行全面的功能性和性能测试。 - **备份**:升级前备份...
文档中还提到了修订历史,指出文档经历了几个版本的升级,例如从0.94.x升级到0.96.x、0.92.x升级到0.94.x等。 HBase的数据模型设计包括表、行、列族(Column Families)、单元格(Cells)以及与之相关的操作和版本...