2024Procedure V2应用实例介绍_第1页
2024Procedure V2应用实例介绍_第2页
2024Procedure V2应用实例介绍_第3页
2024Procedure V2应用实例介绍_第4页
2024Procedure V2应用实例介绍_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ProcedureV2ProcedureHBaseregionRATMasterAssignmentManagerScheduler就是提交到Executor的任务不会直接跑,会pushProcedureScheduler持一致如何恢复,进入的任何一个Procedure先进行log,记录下来还能保证能取出来,writeaheadlogInsertpushProcedureScheduler,每跑完一步都会update,直到最后完全执行完delete。ProcedureExecutorsubmit进来,会有一个MapProcedureid,还pushProcedureSchedulerProcedureSchedulerWorker,16workerCompleted。TimeoutExecutor有些Worker不能处理的内容,在过一段时间继续执行,例如过5秒将任务塞回去,其他Worker继续执行,还有些就是定时任务,比如Completed不再需要的东西。因为有些任务是completed发请求,会过一段时查看是否执行完,如果已经被查询过就不再需要了。scheduler)Acquirelock,后续会讲解,然后去跑procedure(Executetheprocedure)UpdateprocedureStoreHMasterlistprocedure删除该procedure。由于存在子procedure需要判断当前procedure是否有parentprocedure10subprocedure,跑完一个掉,就这就是Worker的大致流程。接下来讲一下ProcedureLock的作用。其最主要的作用就是保证procedure执行时不被parentprocedureProcedure有一个holdlocktruenullreleaselockfalse(默认)则在被suspend时会释放锁,下次执行重新拿锁。当AssignProcedure/UnassignProceduretruenamespacetableregion写锁,因为操作的时候你不能修改。还有就是ModifyTableProcedure,它的作用就是如在table上修改属性,需要需要拿着namespace的读锁,以及对应table的写锁,但是holdlock值是false。其实ModifyTableProcedure也不应该一直是false,前面好几步都是在改table属性,这段时间是不能被打断的。其原因是AssignProcedure/UnassignProcedure,需要拿着namespace和table的读锁,如果ModifyTableProcedure的holdLocktruenamespacetableAssignProcedure/UnassignProcedureholdlock与proceduretableregionreopenloadreleaselock,另一方面就算重启也是按照procedure的id顺序去执行,大部分时候不会ProcedureScheduler主要就是一个实现,其他实现主要是写UT时测试一下逻辑,真正在代码中要用的只有MasterProcedureScheduler。它有几个概念,首先是Queue,里面元素就是Procedure,针对相同目标的Procedure会放到一个Queue,比如针对一个table的modifydeleteQueue没有region类型只有tableQueue,同一个table的region操作也会放到一个Queue里面。还有一个是RunQueue(代码中叫FairQueue),元素就是Queue只有在RunQueue中的Queue中的procedure才能被ProcedureExecutor取出并执行Procedure在拿到写锁时会把Queue从RunQueue中拿掉释放时再放回。四种类型的Queue: ServerQueue,TableQueue, PeerQueue,MetaQueue(Deprecated),procedure要么拿Queue上面的读锁要么拿上面的写锁,拿到写锁其他就不会在执行,把Queue从RunQueue中拿掉,减轻负担。RunQueue是很多Queue串在一起,挨个拿,当发现自己无法再执行就自己去掉。ProcedureStoreWALProcedureStore,ProcedureStoreTracker两个类是理解它最关键的地方。会有WAL但是不是LSMTree的模式,所有procedure都会放进内存,启动时把所有WAL都replay一遍来恢复数据。如何避免跑的时间越来越WALprocedureTrackerProcedureIDWALID最小ID小,就会删除。ProcedureV2AssignmentManagerV2,bug。LockdoubleassignregionMasterregionserverzk,AMRSRegion状态迁移分为四个状态,还有个offline状态是为了兼容以前版本,Closed,OpeningOpenedClosingOpened,如果你要删除一个状态就进入Closing,Closed,之后就可以删除。主要分为 (Opened-Closing-Closed),这两个Procedure都是RegionTransitionProcedure的子类,都无法回滚,会一直重试到执行完成。有两个异常,AssignProcedure会进入设置一个最大尝试次数,超过就会将其放入FAlLED_OPEN,需要手动恢复。还有就是RegionServercrash,后续会讲到。会什么会出现FAlLED_OPEN呢,就是region告诉RSRSdoubleassignRPC调用重试逻辑要非常注意。RegionServercrashregion种情况才能打断。还有一个MoveRegionProcedure,实际上比较复杂,但其实逻辑比较简单,就是先Unassign,再Assign。ServerCrashProceduresplit_log然后再assignmetaregion,如有有的话先进行split_meta_log,因为metaregion的wal是单独写到一个文件的,然assign_mata,get_regionssplit_logregionassignassignunassignmetametaonlineHandleRITRScrash,RITRegionInTransitionSCPAssignProcdure/UnassignProcedureRSAMregionRegionTransitionProcedureregionUnassignProcedureUnassignProcedure就是将其转化为Closed状态现在RS挂了,直接就进入CLOSED状态了,然后分配一个AssignProcedure。如果是AssignProcedure,将状态退回初始状态重新开始。MoveRegionProcedureRegionTransitionProcedureHandleRITAMMRPMRPschedule一个UnassignProcedure再schedule一个AssignProcedure。打断AssignProcedure是没有问题的。而打断UnassignProcedure之后,MRP不会释放锁,会直接schedule一个AssignProcedure。因此HandleRIT时机很重要,必须在splitlog完成之后才能打Unassign退出时,regionrecovered.editsMerge/SplitlinkHFilerecovered.editsUnassignregion是否有recovered.edits,如果有则让Merge/Splitprocedure失败回滚。接下来讲一下在2.1版本Master启动流程也会有些改动,原来启动流程是AssignmentManager需要扫描meta恢复regionRecoverMetaProceduremaster启动时,先跑这个procedure确保meta都online,再执行后续的启动流程。但在执行完RMP之后,meta所在的RSRMPmeta一定onlineSCPmetaonline,这种方式存在一个问题就是通过SCP来确保meta最终能够online需要知道哪些RScrashSCP。HBASEzkRSAMmetaregionRSregionSCP来确保meta最终能够online来帮它扫,要schedule这个scp需要先让其扫描完,就会形成死锁,解决方案:通过扫描WAL目录来获得RS列表,再和zk上的列表比对。新的启动流程会先初始化ProcedureExecutor,然后loadprocedures,再将其放到scheduleworkermetaregionregionfamilymetaregionserveronline这个工作就完成了,InitMetaProcedure就是schedule一个assignprocedure然后RSSCPProcedureExecutorWorker,meta最终会online。ProcedureLockProcedureLock不会恢复。ProcedureStore没

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论