Region 切分是一個事務(wù)過程,分成三個階段
Prepare 階段:
在內(nèi)存中初始化兩個子 Region,具體是生成兩個 HRegionInfo 對象,包含TableName、RegionName、startkey、endkey 等信息。同時會生成一個用來記錄 Split 進(jìn)展的對象。
Execute 階段:
* 首先更改當(dāng)前 Region 在 Zookeeper 中的狀態(tài)為 SPLITING。master 也會同步這個狀態(tài)。 * 生成兩個子文件,只存儲切分點(diǎn) splitkey 和一個 Boolen 類型變量(用來標(biāo)記這個文件是上半部分還是下半部分)。 * 為避免數(shù)據(jù)的頻繁讀寫,只有在子Region執(zhí)行 Major Compact 后才會將父Region中屬于該子Region的所有數(shù)據(jù)讀出來并寫入數(shù)據(jù)文件中。
Rollback 階段:
如果 execute 階段出現(xiàn)異常,則執(zhí)行 rollback 操作。為了實(shí)現(xiàn)回滾,整個切分過程被分為很多子階段,回滾程序會根據(jù)當(dāng)前進(jìn)展到哪個子階段來清理對應(yīng)的垃圾數(shù)據(jù),根據(jù)切分進(jìn)展來做不同的回滾操作
更多關(guān)于“大數(shù)據(jù)培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。