问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Hbase 故障恢复

发布网友 发布时间:2023-05-13 20:53

我来回答

1个回答

热心网友 时间:2023-05-13 23:13

MasterFileSystem.splitLog

hregion 的LOGDIR

hdfs上的region Hlog

如果任务没有重复发布过,将 task entry 发布到 SplitLogManagerCoordinatio(ZKSplitLogManagerCoordination)

/如果像master 报告成功,做初始化. 方法内调用startServiceThreads();
其中包括 SplitLogWorker

在/hbase/splitlog zknode上等待任务可用。一次只处理一个任务。这
策略对在集群中可能发生同时日志拆分数量设置了上限在

尝试获取任务zk节点上的“锁”,以拥有并执行任务。

1.1 假设Master当前发布了4个任务,即当前需要回放4个日志文件,分别为hlog1、hlog2、hlog3和hlog4

1.2 RegionServer1抢占到了hlog1和hlog2日志,RegionServer2抢占到了hlog3日志,RegionServer3抢占到了hlog4日志

1.3 以RegionServer1为例,其抢占到hlog1和hlog2日志之后会分别分发给两个HLogSplitter线程进行处理,HLogSplitter负责对日志文件执行具体的切分,切分思路还是首先读出日志中每一个<HLogKey, WALEdit>数据对,根据HLogKey所属Region写入不同的Region Buffer

1.4 每个Region Buffer都会有一个对应的写线程,将buffer中的日志数据写入hdfs中,写入路径为/hbase/table/region2/seqenceid.temp,其中seqenceid是一个日志中某个region对应的最大sequenceid

LogRecoveredEditsOutputSink的工作是直接按照region,把相对应的log写到hdfs的 hbase.rootdir/data/namespace(比如test)/table_name/region_encoded_name/recovered.edits下。后续region被其他region server open时,会来这看是不是有需要回放的hlog.

1.5 后续region被其他region server open时,针对某一region回放日志只需要将该region对应的所有文件按照sequenceid由小到大依次进行回放即可

这种Distributed Log Splitting方式可以很大程度上加快整个故障恢复的进程,正常故障恢复时间可以降低到分钟级别。然而,这种方式会产生很多日志小文件,产生的文件数将会是M * N,其中M是待切分的总hlog数量,N是一个宕机RegionServer上的Region个数。假如一个RegionServer上有200个Region,并且有90个hlog日志,一旦该RegionServer宕机,那这种方式的恢复过程将会创建 90 * 200 = 18000个小文件。这还只是一个RegionServer宕机的情况,如果是整个集群宕机小文件将会更多!!!

znode : splitWAL
znode :recovering-regions

在region打开的时候,我们从HRegionServer的openRegion方法一路跟踪,中间历经OpenMetaHandler,再到HRegion.openHRegion方法,终于在initializeRegionStores方法里面找到了那么一句话。

打开region

HRegion.initialize
HRegion.initializeRegionInternals
ServerRegionReplicaUtil.shouldReplayRecoveredEdits

读取recovered.edits下面的日志,符合条件的就加到MemStore里面去,完成之后,就把这些文件删掉。大家也看到了,这里通篇讲到一个logSeqNum,哪里都有它的身影,它实际上是FSHLog当中的一个递增的AtomicLong,每当往FSLog里面写入一条日志的时候,它都会加一,然后MemStore请求flush的时候,会调用FSLog的startCacheFlush方法,获取(logSeqNum+1)回来,然后写入到StoreFile的sequenceid字段,再次拿出来的时候,就遍历这个HStore下面的StoreFile的logSeqNum,取出来最大的跟它比较,小于它的都已经写过了,没必要再写了。

参考自: https://zhuanlan.hu.com/p/27885715
https://blog.csdn.net/qq_26803795/article/details/79152808?utm_source=blogxgwz6
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 请问水低于0度会结冰吗? 如何防止脱发严重 hbase安装一直卡在正在激活 华夏福(加倍3.0版)重疾险2021的利弊是什么?保障到几岁? 怎么样把QQ空间的空间大小向下扩大啊? 黄金钻戒如何保养和清理 机动车信息查询单是书证还是物证? 向水中通no2的离子方程式 中外合作项目大学值得读吗 合作办学的大学好不好 如何将圆柱裁剪成长条 我想问一下ZTEU807这款手机用哪个地图软件定位比较准确(用过的朋友都... 淄博联通外包公司的宽带装维这个工作怎么样? 联通宽带不是很出名吗?为什么还要业务员啊?那些要装的直接去营业厅或者... 部落冲突11本护资源护黑阵型怎么样 部落冲突11本迷宫阵图怎么样 部落冲突十一城原创阵多头塔或将回归王座 联通宽带承包有赚钱吗 部落冲突11本三星阵型及打法分享 部落冲突11本冲杯和部落战阵型攻略 部落冲突11本八卦阵怎么样 Python自学要多长时间? 五一出游哪里最好玩? 有没有什么地方好玩的呀? 抖音门店地址怎么添加 抖音怎么添加店铺位置 顺丰客服培训单标是什么意思 心理学+ad意思是什么? 真社会性和社会性的区别 什么叫你真社会???求解答 什么叫真正的社会? 乡镇政府体检政审全部通过就等于录取了吗 真社会性的介绍 痰湿的意思痰湿的意思是什么 痰湿简介 苹果手机为什么显示3g? 诺基亚fastlane是什么 ...描述就是手机类型前面有一句自定义的来自什么 后面三自己的型号求... 诺基亚N96的英文介绍 口语考试 帮帮忙啊。。。简单点 什么是法治素养 已经生成邮政单号什么意思 怎样让凉的卤猪皮不硬