- 浏览: 348419 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
lvyuan1234:
你好,你那个sample.txt文件可以分享给我吗
hive insert overwrite into -
107x:
不错,谢谢!
hive 表的一些默认值 -
on_way_:
赞
Hadoop相关书籍 -
bupt04406:
dengkanghua 写道出来这个问题该怎么解决?hbase ...
Unexpected state导致HMaster abort -
dengkanghua:
出来这个问题该怎么解决?hbase master启动不起来。
Unexpected state导致HMaster abort
最近测试94版本时,出现过多次 HRegionInfo was null or empty in Meta 的异常
WARN org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation: Encountered problems when prefetch META table:
java.io.IOException: HRegionInfo was null or empty in Meta for writetest, row=writetest,MNI07EGK9EOW7L7VG8TK,99999999999999
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:170)
at org.apache.hadoop.hbase.client.MetaScanner.access$1(MetaScanner.java:143)
at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:133)
at org.apache.hadoop.hbase.client.MetaScanner$1.connect(MetaScanner.java:1)
at org.apache.hadoop.hbase.client.HConnectionManager.execute(HConnectionManager.java:360)
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:130)
at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:105)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:895)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:949)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:837)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:802)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionLocation(HConnectionManager.java:726)
at org.apache.hadoop.hbase.client.ServerCallable.connect(ServerCallable.java:82)
at org.apache.hadoop.hbase.client.ServerCallable.withRetries(ServerCallable.java:162)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getRegionServerWithRetries(HConnectionManager.java:1326)
客户端偶然捕获到metascan时regioninfo为空的情况,此时region正在split过程中。代码上看应该不会有空的情况,是什么原因呢?
Client 端:
metaTable = new HTable(configuration, HConstants.META_TABLE_NAME);
Result startRowResult = metaTable.getRowOrBefore(searchRow,
HConstants.CATALOG_FAMILY);
if (startRowResult == null) { throw new TableNotFoundException("Cannot find row in .META. for table: " + Bytes.toString(tableName) + ", row=" + Bytes.toStringBinary(searchRow)); }
byte[] value = startRowResult.getValue(HConstants.CATALOG_FAMILY,
HConstants.REGIONINFO_QUALIFIER);
if (value == null || value.length == 0) { throw new IOException("HRegionInfo was null or empty in Meta for " + Bytes.toString(tableName) + ", row=" + Bytes.toStringBinary(searchRow)); }
Server端:
HRegionServer
public Result getClosestRowBefore(final byte[] regionName, final byte[] row,
final byte[] family) throws IOException { // locate the region we're operating on HRegion region = getRegion(regionName); // ask the region for all the data Result r = region.getClosestRowBefore(row, family); return r; }
HRegion
public Result getClosestRowBefore(final byte [] row, final byte [] family)
throws IOException {
try {
Store store = getStore(family);
// get the closest key. (HStore.getRowKeyAtOrBefore can return null)
KeyValue key = store.getRowKeyAtOrBefore(row);
Result result = null;
if (key != null) { Get get = new Get(key.getRow()); get.addFamily(family); result = get(get, null); }
return result;
} finally { closeRegionOperation(); }
}
HRegion.getClosestRowBefore 里面有两块:
(1)KeyValue key = store.getRowKeyAtOrBefore(row);获取到最近的KeyValue
(2)get(get, null),也就是scan的逻辑
在store.getRowKeyAtOrBefore时不考虑readPoint,所以memstore中任何信息都可以读取到
在scan逻辑中会考虑readPoint,只有小于等于readPoint才会被读取出来
在Region split时有一定概率会出现在查找一个key对应的region时,getRowKeyAtOrBefore可以找到新的region的keyvalue,但是scan时由于readPoint比较小,所以这个region的keyvalue都被过滤了,导致返回null,所以会出现上面的异常信息
90中不出现,主要是由于90中是先写hlog,后写memstore,然后更新mvcc,后两步很快,而94中顺序变为了先写memstore, 再写hlog,最后更新mvcc,当发生split时,如果正在写hlog的时候,客户端去访问,就会出现从memstore里面取出来的记录,在meta表里面因为mvcc的问题读取不到,从而报上述警告日志。
由于出现这个警告日志是在prefetch location中报出,实际在写的时候会再次去获取location,这时候发生问题的概率会变小,该问题对正常功能影响不是很大,先不改进。
发表评论
-
hbase flush前提: 等待相关事务都完成
2016-07-04 16:40 1072DefaultMemStore: @Override ... -
turn log on/off
2015-10-21 10:06 0wget -q "http://hostna ... -
hbase的一些语义
2014-06-04 16:39 1123hbase里面对一行操作前会加锁。 http://had ... -
Unexpected state导致HMaster abort
2014-01-09 11:44 2722线上和开发集群都遇到过master abort的情况,而且 ... -
hbase build Too many unapproved licenses
2013-12-30 16:02 2365[ERROR] Failed to execute ... -
hbase hbck 导致的multi assign
2013-12-25 18:03 1677http://hbase.apache.org/book. ... -
HBase Log Split 配置相关
2013-12-15 16:54 1577(1)HMaster SplitLogManager ... -
hbase jmx
2013-12-11 20:42 2947conf/hbase-env.sh 里面配了 JMX后就可 ... -
hbase bulk多family,锁住region
2013-10-29 15:14 1235HBase在bulk 多family的数据时,会获得整个r ... -
Phoneix
2013-10-22 11:42 1512https://github.com/forcedotco ... -
hbase RowCounter 使用
2013-10-15 16:48 5930hbase org.apache.hadoop.hb ... -
hbase add table
2013-09-26 21:49 1346把table数据从一个集群移动到另外一个集群 (1) ... -
hbase shell
2013-09-26 11:18 1672hbase shell 命令 mvn cle ... -
hbase snapshot
2013-06-06 16:40 2184Snapshot: (1) take a sn ... -
hbase split 导致compact abort的日志
2013-06-06 16:37 34862013-06-06 14:58:43,131 INF ... -
HBase maxIdleTime
2013-03-29 18:01 1681HBaseClient端会建立跟HRegionServer ... -
HBase Create Table
2013-01-10 15:50 2160基于HBase trunk代码http ... -
facebook hbase版本目前做的一些重要特性,提升性能
2012-11-22 19:36 2149(1)每个regionserver多个HLog,提升写。 社区 ... -
Server端处理时间很长,Client发生SocketTimeoutException
2012-11-22 11:37 33467Client端只有一个put请求,往server端写数据,se ... -
RPC HBaseServer
2012-11-12 20:28 1098HBaseServer: 一个请求发送的数据是:数据的长 ...
相关推荐
HBase 二级索引实现方案的主要思路是,为每个 DataTable 创建一个与之对应的 IndexTable,通过各种途径,保证 IndexTable Region 与 DataTable Region 一一对应,并且存储在同一个 RegionServer 上。这样,每个 ...
NULL 博文链接:https://bnmnba.iteye.com/blog/2322332
使用System.IO命名空间下的StreamReader类,初始化时指定QQ纯真IP数据库的路径。例如: ```csharp using System.IO; ... StreamReader reader = new StreamReader("path_to_database.txt"); ``` 2. **读取...
同时,HDFS支持校验和来确保数据完整性,防止在传输过程中出现错误。 总结来说,HDFS的读写流程涉及客户端、NameNode和DataNode之间的复杂交互,包括元数据查询、数据流的处理、故障恢复和数据冗余策略。理解这一...
学习MySQL时,掌握如何创建、查询、更新和删除数据表至关重要。 1. **创建数据表**:使用`CREATE TABLE`语句可以创建新的数据表。例如,你可以定义表名、字段名、数据类型以及可能的约束条件,如非空约束、唯一性...
String regionInfo = ip2region.search(ip); ``` `search`方法会返回一个包含地区信息的字符串,然后你可以将这些信息展示在JSP页面上。 在部署方面,这个应用被设计为一个标准的Web应用,可以直接部署到Tomcat...
HBCK的常用命令包括基本检查、详细检查以及修复命令,如`-fixAssignments`用于修复region分配问题,`-fixMeta`则用于修正.regioninfo文件和hbase:meta元数据表的不一致。 RIT(Regions In Transition)指的是在...
3. **处理结果**:调用查询方法后,会返回一个包含归属地信息的对象,比如 `RegionInfo`,包含省份、城市、运营商等信息。开发者需要解析这个对象,提取出所需的数据。 4. **异常处理**:考虑到可能会有无效的电话...
CFI,全称为Control Flow Integrity(控制流完整性),是一种安全技术,旨在保护程序免受诸如跳跃指令注入等攻击。在IT行业中,CFI是防御代码注入攻击的重要手段,特别是针对那些无法通过其他方式(如DEP、ASLR)...
开发者可以利用丰富的工具和类库来实现无障碍和国际化功能,如System.Windows.Forms.AccessibleObject类提供的属性和方法,以及System.Globalization命名空间下的类,如CultureInfo和RegionInfo,它们为创建全球化和...
在.NET开发中,获取IP地址并进行地理位置定位是一项常见的需求,尤其当涉及到用户行为分析、安全防护或个性化服务时。"纯真数据库"(通常指的是"纯真IP库")是一个广泛使用的IP地址库,它包含了全球范围内的IP地址与...
这段代码首先判断当前系统是否使用公制单位,如果是,则将对话框中设置的页边距从公制单位转换为.NET所用的英制单位(这里以`Point`为例),从而确保在再次打开页面设置对话框时,显示的值与用户输入的值一致。...
RegionInfo currentRegion = RegionInfo.CurrentRegion; Console.WriteLine($"当前区域名称:{currentRegion.EnglishName}"); Console.WriteLine($"当前货币符号:{currentRegion.CurrencySymbol}"); // 显示...
### .NET Framework 复习知识点总结 #### 一、系统类型的分类 ...- `RegionInfo`:提供区域信息。 - `DateTimeFormatInfo`:日期时间格式化。 - `NumberFormatInfo`:数字格式化。 - `CompareInfo`:字符串比较规则。
CountryInfo-LanguageInfo-CurrencyInfo CountryInfo、LanguageInfo 和 CurrencyInfo 类 此代码复制自。 CountryInfo 和 RegionInfo 有什么区别?
- **HttpRuntime**:提供了 ASP.NET 运行时环境的信息。 - **HttpServerUtility**:提供了一系列服务器实用工具方法。 - **System.Web.ApplicationServices**:提供了一些新的服务,如认证、配置和角色管理。 - ...