we have a cluster about 25 nodes,which are installed hbase-0.94.2,yeah it is find for over second weeks.but last two weeks i upgaded to 0.94.16,there are some bad network showed in ganglia.as below:
in the middle while,some strange things are occured:
2014-03-07 00:01:59,782 DEBUG [IPC Server handler 8 on 60000] FSTableDescriptors.java:169 Exception during readTableDecriptor. Current table name = .archive org.apache.hadoop.hbase.TableInfoMissingException: No .tableinfo file under hdfs://hd03:54310/hbase/.archive at org.apache.hadoop.hbase.util.FSTableDescriptors.getTableDescriptor(FSTableDescriptors.java:411)
after review the hbase's source and hbase-default.xml,i got it:
first ,this is ONLY a tip that it 's 'DEBUG' level in log to tell you this is not important ,
second,what is it?
ok,in hbase 0.94.16,it will create '.archive','.tmp' dirs under hbase.root dir,the former is used for archiving the hfiles,you can see in
<property> <name>hbase.table.archive.directory</name> <value>.archive</value> <description>Per-table directory name under which to backup files for a table. Files are moved to the same directories as they would be under the table directory, but instead are just one level lower (under table/.archive/... rather than table/...). Currently only applies to HFiles.</description> </property>
but i want to tell you,this property is not used in code.actually ,look at the HMaster#startServicethreads(),
//start the hfile archive cleaner thread Path archiveDir = HFileArchiveUtil.getArchivePath(conf); this.hfileCleaner = new HFileCleaner(cleanerInterval, this, conf, getMasterFileSystem() .getFileSystem(), archiveDir); Threads.setDaemonThreadRunning(hfileCleaner.getThread(), n + ".archivedHFileCleaner");
and the archiveDir is just the '.archive' dir in hdfs.
go to HFileArchiver.java,you will get more clear about it 's details:
/** * Resolve any conflict with an existing archive file via timestamp-append * renaming of the existing file and then archive the passed in files. * @param fs {@link FileSystem} on which to archive the files * @param baseArchiveDir base archive directory to store the files. If any of * the files to archive are directories, will append the name of the * directory to the base archive directory name, creating a parallel * structure. * @param toArchive files/directories that need to be archvied * @param start time the archiving started - used for resolving archive * conflicts. * @return the list of failed to archive files. * @throws IOException if an unexpected file operation exception occured */ private static List<File> resolveAndArchive(FileSystem fs, Path baseArchiveDir, Collection<File> toArchive, long start) throws IOException { // short circuit if no files to move if (toArchive.size() == 0) return Collections.emptyList(); LOG.debug("moving files to the archive directory: " + baseArchiveDir); // make sure the archive directory exists if (!fs.exists(baseArchiveDir)) { if (!HBaseFileSystem.makeDirOnFileSystem(fs, baseArchiveDir)) { throw new IOException("Failed to create the archive directory:" + baseArchiveDir + ", quitting archive attempt."); } LOG.debug("Created archive directory:" + baseArchiveDir); } List<File> failures = new ArrayList<File>(); String startTime = Long.toString(start); for (File file : toArchive) { // if its a file archive it try { LOG.debug("Archiving:" + file); if (file.isFile()) { // attempt to archive the file if (!resolveAndArchiveFile(baseArchiveDir, file, startTime)) { LOG.warn("Couldn't archive " + file + " into backup directory: " + baseArchiveDir); failures.add(file); } } else { // otherwise its a directory and we need to archive all files LOG.debug(file + " is a directory, archiving children files"); // so we add the directory name to the one base archive Path parentArchiveDir = new Path(baseArchiveDir, file.getName()); // and then get all the files from that directory and attempt to // archive those too Collection<File> children = file.getChildren(); failures.addAll(resolveAndArchive(fs, parentArchiveDir, children, start)); } } catch (IOException e) { LOG.warn("Failed to archive file: " + file, e); failures.add(file); } } return failures; }
and the class function description:
/** * Utility class to handle the removal of HFiles (or the respective {@link StoreFile StoreFiles}) * for a HRegion from the {@link FileSystem}. The hfiles will be archived or deleted, depending on * the state of the system. */ public class HFileArchiver {
but in 94.2 ,hbase doesn't know this a other verions's one undr hbase.root.so it complained these.
after remove it by manually,the cluster is ruuning fine!
so if you dont necessary to fix some critial bugs ,not to do useless upgrade.
here is a perf-evaluation at both these versions:
hbase PerformanceEvaluation benchmark - 0.94.2 VS 0.94.16 VS 0.96
相关推荐
惠普7730固件降级到1851A,理论上也适应7720.我的打印机是7730的,已经可以用连供了,升级后要关掉自动升级的。我的连供是在淘上面的中瑞买的
惠普7730降级固件,使用非原装墨盒的,我的7730连供OK。理论上是通用7720的
5.7.28 inplace downgrade to 5.7.10
Printer Pro 8710&Pro 8715&Pro 8718 downgrade to 1848A version.exe
SQL Server Downgrade是我公司开发的一款针对MS SQL数据库降级的工具,可将高版本的MDF文件降级为低版本MDF文件。如SQL2012MDF降级到2008R2的MDF。使用方便、自动化执行脚本等特点,无需专业开发即可完成相应工作。
HC5661-9005-downgrade-ssh.zip
Downgrade the protobuf package to 3.20.x or lower. 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower). 使用pip3 install即可
MySQL 8 from previous stable releases, and also downgrade from MySQL 8. Chapter 2, Using MySQL, takes you through the basic uses of MySQL, such as creating databases and tables; inserting, updating, ...
futurerestore for mac os x downgrade your idevices
安装$ npm install downgrade-root用法import downgradeRoot from 'downgrade-root' ;try {downgradeRoot ( ) ;} catch {console . error ( 'Couldn\'t downgrade permissions' ) ;}小费在使用您的应用程序作为root...
Downgrade Clover r4658.RM-4903.ca9576f3 because Rehabman's version is more reliable Update WhateverGreen, AppleALC, Lilu, CPUFriend, and HibernationFixup by using official release Update ...
芯邦CBM2090E2091最新版量产工具V1.8.3.2(支持黑片及downgrade)
Script to downgrade any device that has iOS 10.3.3 OTA signed. Please read this before doing ANYTHING Yes, this may not work out of the box for everyone. Please note, if you are experienced with ...
降级步骤 1) Downgrade device to 6.0.6 beta 2) Downgrade to 6.0.4 (beta) 3) Downgrade to regular 5.6.6 4) Install elevate firmware (3.5 it's the most updated as of now)
How to Upgrade and Downgrade Dependencies How to Prepare for a Release (All Versions) How to Prepare for a Release (v2 or Higher) Publishing a Release Migrating to Modules Additional Resources Changes...
语音识别方面的论文从cnki上下载的,用于研究生学习模式识别方向
**FLASH:** Upload the firmware file to the device and begin the upgrade/downgrade. **BACKUP:** Will make a flashable firmware backup of the currently connected device if applicable. It will save the ...
安装从npm命令npm install @weex-project/downgrade --save : npm install @weex-project/downgrade --save样本import Downgrade from '@weex-project/downgrade'// force downgradeDowngrade . force ( )/* check ...
This document will go over how to update a SuperMUTT Super Speed compliance device including how to downgrade it and recover it from a corrupted state.