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