hbase问题总结【转】

转载地址: http://www.cnblogs.com/shenguanpu/archive/2012/06/12/2546309.html

1 java.io.IOException: java.io.IOException: java.lang.IllegalArgumentException: offset (0) + length (8) exceed the capacity of the array: 4

做简单的incr操作时出现,原因是之前put时放入的是int  长度为 vlen=4 ,不适用增加操作,只能改为long型 vlen=8

 

2 写数据到column时 org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NotServingRegionException: 1 time, servers with issues: 10.xx.xx.37:60020,    或是 org.apache.hadoop.hbase.NotServingRegionException: Region is not online:   这两种出错,master-status中出现Regions in Transition 长达十几分钟,一直处于PENDING_OPEN状态,导致请求阻塞。目前把10.xx.xx.37这台机器下线,运行一夜稳定,没有出现因split造成的阻塞。怀疑是机器问题。Hmaster的日志显示这台region server 不停的open close,不做任何split 或flush

RIT 的全称是region in transcation. 每次hbase master 对region 的一个open 或一个close 操作都会向Master 的RIT中插入一条记录,因为master 对region 的操作要保持原子性,region 的 open 和 close 是通过Hmaster 和 region server 协助来完成的. 所以为了满足这些操作的协调,回滚,和一致性.Hmaster 采用了 RIT 机制并结合Zookeeper 中Node的状态来保证操作的安全和一致性.

复制代码
OFFLINE, // region is in an offline state
PENDING_OPEN, // sent rpc to server to open but has not begun
OPENING, // server has begun to open but not yet done
OPEN, // server opened region and updated meta
PENDING_CLOSE, // sent rpc to server to close but has not begun
CLOSING, // server has begun to close but not yet done
CLOSED, // server closed region and updated meta
SPLITTING, // server started split of a region
SPLIT // server completed split of a region
复制代码

 进一步发现是load balance的问题 region server不停重复的被open close,参考http://abloz.com/hbase/book.html#regions.arch.assignment  重启了region server正常

后来的代码运行中又出现region not on line ,是NotServingRegionException抛出的,原因是“Thrown by a region server if it is sent a request for a region it is not serving.”

 为什么会不断请求一个离线的region?且这种错误集中在150个中的3个region,追踪服务器端log,region 会被CloseRegionHandler关掉,过了20分钟左右才重新打开,关掉后客户端请求的region仍然是这个关闭的region?

 

 

3 设置开关不写入hbase并不生效

代码初上线,增加了开关,万一hbase有问题则关闭掉开关。但是出现问题了发现程序卡死,目前认为原因是不断加长的retry机制,60秒超时,1-32秒的10次retry,万一出问题,切换开关也没有用。

需要配置rpc超时参数和retry time解决它

 

4 flush、split、compact导致stop-the-world

出现长时间的flush split操作导致hbase服务器端无法响应请求。需要调整region大小,并测试获取flush次数

 

5 hbase参数设置

hbase.regionserver.handler.count

考虑到sas盘的io能力,设置为50

hbase.hregion.memstore.block.multiplier

当memstore的大小为hbase.hregion.memstore.flush.size的multiplier倍数时,阻塞读写进行flush,默认为2

 

6 region server crush

Regionserver crash的原因是因为GC时间过久导致Regionserver和zookeeper之间的连接timeout。

Zookeeper内部的timeout如下:

minSessionTimeout 单位毫秒,默认2倍tickTime。

maxSessionTimeout 单位毫秒,默认20倍tickTime。

(tickTime也是一个配置项。是Server内部控制时间逻辑的最小时间单位)

如果客户端发来的sessionTimeout超过min-max这个范围,server会自动截取为min或max,然后为这个Client新建一个Session对象。

默认的tickTime是2s,也就是客户端最大的timeout为40s,及时regionserver的zookeeper.session.timeout设置为60s也没用。

 

改动:

  1. 将zookeeper集群的tickTime修改为9s,最大的timeout为180s,同时修改zookeeper.session.timeout为120s,这样可以避免GC引发timeout。
  2. 添加参数hbase.regionserver.restart.on.zk.expire为true,改参数的作用是当regionserver和zookeeper之间timeout之后重启regionserver,而不是关掉regionserver。

 

7 代码问题导致死锁

master慢查询日志中一个查询达到了2小时,最终导致服务器响应变慢,无法应对大写入。追究原因是getColumns操作一下取出十几万的数据,没有做分页;更改程序分页500条左右,目前没有出现问题

 

8 operation too slow

2012-07-26 05:30:39,141 WARN org.apache.hadoop.ipc.HBaseServer: (operationTooSlow): {"processingtimems":69315,"ts":9223372036854775807,"client":"10.75.0.109:34780","starttimems":1343251769825,"queuetimems":0,"class":"HRegionServer","responsesize":0,"method":"delete","totalColumns":1,"table":"trackurl_status_list","families":{"sl":[{"timestamp":1343251769825,"qualifier":"zzzn1VlyG","vlen":0}]},"row":""}
删除一行数据用了69315s

而且神奇的是row为"",row无法设置null进去,但可以增加空串。做了一轮测试
空row-key  删除不存在的column  耗时 700ms

空row-key  删除存在的column  耗时 5ms
非空row-key  删除任意的column  耗时 3ms
不清楚是否是个bug,也还不知道怎么就传了个空row-key进去,目前策略为在代码端避免对空row-key做操作。

9 responseTooSlow
2012-07-31 17:52:06,619 WARN org.apache.hadoop.ipc.HBaseServer: (responseTooSlow): {"processingtimems":1156438,"call":"multi(org.apache.hadoop.hbase.client.MultiAction@3dbb29e5), rpc version=1, client version=29, methodsFingerPrint=-1508511443","client":"10.75.0.109:35245","starttimems":1343727170177,"queuetimems":0,"class":"HRegionServer","responsesize":0,"method":"multi"}
引用hbase说明:The output is tagged with operation e.g. (operationTooSlow) if the call was a client operation, such as a Put, Get, or Delete, which we expose detailed fingerprint information for. If not, it is tagged (responseTooSlow) and still produces parseable JSON output, but with less verbose information solely regarding its duration and size in the RPC itself.

目前做法是取消了对某个key多个column的批量delete操作避免阻塞,没有发现新问题

10 output error
2012-07-31 17:52:06,812 WARN org.apache.hadoop.ipc.HBaseServer: IPC Server Responder, call get([B@61574be4, {"timeRange":[0,9223372036854775807],"totalColumns":1,"cacheBlocks":true,"families":{"c":["ALL"]},"maxVersions":1,"row":"zOuu6TK"}), rpc version=1, client version=29, methodsFingerPrint=-1508511443 from 10.75.0.151:52745: output error

11 rollbackMemstore问题
较频繁出现这样的log:
2012-08-07 10:21:49,887 DEBUG org.apache.hadoop.hbase.regionserver.HRegion: rollbackMemstore rolled back 0 keyvalues from start:0 to end:0

方法解释为:Remove all the keys listed in the map from the memstore. This method is called when a Put has updated memstore but subequently fails to update the wal. This method is then invoked to rollback the memstore.

很奇怪的是开始和结束的index都为0   

方法中循环: for (int i = start; i < end; i++) {  

因此是空数据,空回滚。需要进一步调查

 

12 新上线一个region server  导致region not on line

往错误的region server服务器请求region

 

13 请求不存在的region,重新建立tablepool也不起作用

请求的时间戳 1342510667

最新region rowkey相关时间戳 1344558957

最终发现维持region location表的属性是在HConnectionManager中

get Get,delete Delete,incr Increment 是在 ServerCallable类 withRetries处理

   情景1 若有出错(SocketTimeoutException ConnectException RetriesExhaustedExcetion),则清理regionServer location

   情景2 numRetries 若设置为1 ,则 循环只执行一次,connect(tries!=0) 为connect(false),即reload=false,不会进行location更新,当为numRetries>1的时候才会重新获取

get Gets List, put Put或Puts List,delete Deletes List 则调用HConnectionManager的 processBatch去处理,当发现批量get或者put、delete操作结果有问题,则刷新regionServer location

设置 numRetries为>1次, 我这里是3次,解决问题

14 zookeeper.RecoverableZooKeeper(195): Possibly transient ZooKeeper exception: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/master

这是在我单机做测试时出现的,无论是从ide或是bin启动hbase,从shell里可以正常连接,从测试程序中无法连接,zookeeper端口是2181,客户端端口应该与zookeeper无关才对,

最终更改配置21818端口换为2181 运行正常,应该是单机环境才要做这种更改。

复制代码
    hbase.zookeeper.property.clientPort
    2181
    Property from ZooKeeper's config zoo.cfg.
    The port at which the clients will connect.
    
  
复制代码
Hbase运行时出现的问题 ,hadoop适配hbase版本 问题1.Hbase 的Hmaster 在运行一段时间后自动关闭 问题2.HBase Shell 命令行界面中执行命令时报错,ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 问题3.HBase Shell 命令行界面中执行命令时出现error:KeeperErrorCode = NoNode for /hbase/master 阅读详情

相关推荐

HBASE 问题及理解

hbase 界面 http://master:16010/master-status 使用xshell 进入hbase命令行无法删除问题: 进入到XShell 文件 --&gt; 属性 --&gt; 终端 --&gt; 键盘 在 DELETE键序列 和 BACKSPACE键序列 中都选择 ASCII 127 HBASE常用操作命令 https://www....

FREEDOM 672

hbase问题总结

1 java.io.IOException: java.io.IOException: java.lang.IllegalArgumentException: offset (0) + length (8) exceed the capacity of the array: 4 做简单的incr操作时出现,原因是之前put时放入的是int 长度为vlen=4 ,不适用增加操作,只能改...

weixin_30701575的博客 445

OpenFOAM高效学习路线:如何用B站+东岳流体3个月掌握CFD仿真

本文分享了一套高效的OpenFOAM学习路线,结合B站视频、东岳流体教程和官方文档,帮助在职工程师在3个月内掌握CFD仿真技术。通过渐进式学习计划和案例训练,从基础到实战,快速提升独立建模能力。

weixin_29202213的博客 319

[未解决]Exception in thread "main" java.lang.IllegalArgumentException: offset (0) + length (8) exceed t...

调用这个方法 是报错,未解决 binfo.setTradeAmount(Double.parseDouble(new String(result.getValue(Bytes.toBytes(family), Bytes.toBytes(BaseInfo.H_TRADEAMOUNT))))); 转载于:https://www.cnblogs.com/rocky-AGE...

afei2530的博客 626

简单搭建 可视化日志+链路追踪

JAVA 可视化日志、链路追踪、plumeLog、Tlog、Logback

qq_39535439的博客 1204

INMP441麦克风与ESP32的I2S音频采集实战指南

本文提供了INMP441数字麦克风与ESP32开发板通过I2S接口进行高质量音频采集的完整实战指南。详细讲解了硬件连接、软件配置、数据读取及基础处理,并分享了常见的避坑技巧与性能优化建议,帮助开发者快速构建物联网音频应用。

weixin_28396629的博客 599

运用HBase操作API添加数据遇到的问题

运用HBase操作API添加数据遇到的问题 其代码实现: package com.study; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; impor...

weixin_39868387的博客 2370

HDRnet——双边滤波和仿射变换的摇身一变

layer层数越多,下采样得到的图越小,low-level features的好处是最后的grid会更coarser,最后的特征图的感受野也越多,非线性更好,表达力更强。所以最终grid是5维的[B,in*out,n,H,W],permute之后是[B,H,W,n,in*out],B是batchsize,n表示对guide的量化级数,in*out表示每个cell的变换系数。这部分的处理对象是低分辨率图,利用CNN进行特征提取(局部和全局),最后fuse得到grid,这里面包含了变换的系数。

zcg1942的博客 1578

java.lang.IllegalArgumentException: offset (0) + length (8) exceed the capacity of the array: 1

java.lang.IllegalArgumentException: offset (0) + length (8) exceed the capacity of the array: 1 at org.apache.hadoop.hbase.util.Bytes.explainWrongLengthOrOffset(Bytes.java:602) at org.apache.hadoop.hb...

gltncx11的博客 4494

历年北京理工大学复试专业综合题

。

A place to record sth. 2万+

西门子G120变频器在立体仓库堆垛机应用参数设置

本文详细介绍了G120 CU240E及CU250S变频器的参数设置流程。主要内容包括:1)快速调试步骤,从新建项目、扫描节点到设置电机类型、负载类型等参数;2)抱闸参数设置方法;3)参数下载异常时的处理方案。重点说明了通过STARTER软件进行向导式调试的完整过程,包括电机铭牌参数输入、识别方式选择等关键环节,并提示了通讯连接注意事项。当下载失败时,提供了通过导入导出项目文件解决问题的具体方法。

xdpcxq的专栏 864

【转】hbase 无法启动问题 时间设置

hbase启动时,有些regionserver起不来, 看了日志发现,应该是系统时间不同步导致。 于是把所有机器时间以master为标准同步。 之后启动正常。 时间校准的方法。 由于集群无法访问外网,不能internet,又因为懒得弄时间服务器, 机器不多,手工设置了下时间。 date --set "11/19/11 10:00:00"   (月/日/年

xcc的博客 626

一文搞懂LDO !

Start-up 时间是 IC 做死的,如果想要延时启动,最简单的办法是在 EN 上接一个大一些的电容到地,构成一个简单的 RC 电路。电容太小,电压跌落大,响应快。输出电流高,功率大;外围器件少,电路简单,成本低,负载响应快,输出纹波小;将采集的电压输入到比较器反向输入端,与正向输入端的基准电压(期望输出的电压)进行比较,再将比较结果进行放大;是指在给定负载变化下的输出电压的变化,这里的负载变化通常是从无负载到满负载。芯片的静态电流大小与其他性能成反关系,如低噪声,高电源电压抑制比,静态电流大。

weixin_46969363的博客 4385

【转】一次HBase问题的解决过程(Status: INCONSISTENT)

【From】https://www.cnblogs.com/quchunhui/p/9583746.html ==版本信息== HBase:2.7.1 Storm:1.0.1 RocketMQ:3.4.6(阿里版) ==问题描述== 2018年9月3号晚上23点左右,例行巡检系统运行状况时, 发现Storm消费RocketMQ入HBase的过程中,Rock...

weixin_30538029的博客 647

基于YOLOv8的植物生长阶段识别系统设计与实现

本文详细介绍了一个基于YOLOv8深度学习模型的植物生长阶段识别系统,包含完整的数据集构建、模型训练、评估以及基于PyQt5的用户界面开发过程。系统能够自动识别植物在不同生长阶段(如发芽期、生长期、开花期、结果期等)的形态特征,为精准农业和智能种植提供技术支持。文章提供了完整的代码实现,并讨论了模型优化策略和实际应用场景。关键词:植物生长阶段识别、YOLOv8、目标检测、PyQt5、深度学习。

YOLO 467

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

(转)HBase工程师线上工作经验总结----HBase常见问题及分析

阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端exception,一般原因是什么?5.系统越来越慢的原因是什么?6.Hbase数据写进去,为什么会没有了,可能的原因是什么?7. regionserver发生abort,遇到最多是什么情况?8.从哪些方面可以...

weixin_34240520的博客 91

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

hbase meta表修复

ionserver(根据meta表,将meta表上的region分给regionservere) hbase hbck -fixAssignments   meta表修复二   当出现漏洞 hbase hbck -fixHdfsHoles (新建一个region文件夹) hbase hbck -fixMeta (根据regioninfo生成meta表) hbase hbck -fixAssignments (分配region到regionserver上) meta表修

988

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

hbase启动后HMaster自动关闭

转自逸笔草草

热爱编程,热爱技术 739

Hbase启动没有HMaster进程问题解决

目录1.问题2.解决2.1 启动的报错2.2 NameNode 状态问题2.3 日志机架感知报错3.问题解决 1.问题 之前已在虚拟机安装好了zookeeper和hdfs2.3.6,并确认这两个东西能正常使用。安装好hbase1.4.1后启动找不到hmaster进程,已确认没有版本冲突。但能启动HRegionServer进程。然后ip:16010/master-status访问根本拒绝访问。 2.解决 2.1 启动的报错 启动报错 OpenJDK 64-Bit Server VM warning: ign

mizuhokaga的博客 2万+

Hbase超时问题揭秘

Lindorm是阿里开源的一个多模数据库,所谓多模,就是支持宽表、时序、对象、文本、队列、空间等多种数据模型,模型之间数据互融互通,具备数据接入、存储、检索、计算、分析等一体化融合处理与服务的能力,官方宣称:吞吐性能是开源HBase的3~7倍,P99时延为开源HBase的1/10,平均故障恢复时间相比开源HBase升10倍,支持冷热分离,压缩率比开源HBase提升一倍,综合存储成本为开源的1/2。需要注意的是,HBase的删除操作并不是实时的,而是通过Compaction过程逐步进行的。

qq_40023049的博客 1723

HBASE 安装后 hbase shell 启动失败问题

1, 安装HBASE, 并且启动成功 [root@MASTER opt]# jps 21920 SecondaryNameNode 2273 HMaster 21441 NameNode 5490 ResourceManager 1844 QuorumPeerMain 2501 HRegionServer 21653 DataNode 3532 Jps 22236 No

reylee的博客 1万+

HBase运维中遇到的问题

在hbase服务级别core-site.xml文件中自定义hadoop.proxyuser.sxappopt.hosts=*,hadoop.proxyuser. sxappopt.groups=*两个参数,保存后重启hbase,修改这两个参数后可能会引起其他的一些组件之间的认证问题。另外提醒大家使用大数据集群的服务器就配上所有的节点。该问题的原因是从源集群复制过来的文件在目标集群上不存在,检查目标集群,可发现目标集群的NameNode上有出现未找到的文件,也就是说文件原来是存在的,但过程中又被删除了。

h952520296的博客 8981

【HBase入门】10. HBase高可用、HBase架构、常见问题汇总

考虑关于HBase集群的一个问题,在当前的HBase集群中,只有一个Master,一旦Master出现故障,将会导致HBase不再可用。所以,在实际的生产环境中,是非常有必要搭建一个高可用的HBase集群的。

优快云GuoYuying的博客 1407

关于Hbase的一些问题

当MemStore中的数据达到一定大小阈值时,或者出发了一定的时间阈值,HBase会将该MemStore中的数据刷写到磁盘,生成一个新的Store文件。在HBase中,随着数据的写入和删除,会产生大量的小文件,这样对于查询操作会引入额外的磁盘寻址开销。Phoenix只是在HBase之上构建了SQL查询引擎,Phoenix可以使用SQl快速查询HBase中的数据,但是数据的底层必须符合HBase的存储结构,HBase结合Phoenix可以实现海量数据的快速随机读写。:在设计上要保持RowKey的唯一性。

diskindom的博客 2058
上一篇: 自我批评,记录工作错误
下一篇: Oracle获取序列的值 dual 表的功能
weixir123
博客等级 码龄16年 1粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值