memstore在不同的條件下會觸發資料刷盤,那麼整個資料在刷盤過程中,對region的資料寫入等有什麼影響?memstore的資料刷盤,對region的直接影響就是:在資料刷盤開始到結束這段時間內,該region上的訪問都是被拒絕的,這裡主要是因為在資料刷盤結束時,rs會對改region做乙個snapshot,同時hlog做乙個checkpoint操作,通知zk哪些hlog可以被移到.oldlogs下。從前面圖上也可以看到,在memstore寫盤開始,相應region會被加上updatelock鎖,寫盤結束後該鎖被釋放。
(1)系統層級的合併必要
大量hfile的產生,會消耗更多的檔案控制代碼,同時會造成rs在資料查詢等的效率大幅度下降,hbase為解決這個問題,引入了compact操作,rs通過compact把大量小的hfile進行檔案合併,生成大的hfile檔案。
rs上的compact根據功能的不同,可以分為兩種不同型別,即:minor compact和major compact。
(1)minor compact
minor compact又叫small compact,在rs執行過程中會頻繁進行,主要通過引數hbase.hstore.compactionthreshold進行控制,該引數配置了hfile數量在滿足該值時,進行minor compact,minor compact只選取region下部分hfile進行compact操作,並且選取的hfile大小不能超過hbase.hregion.max.filesize引數設定。
(2)major compactcompact將多個hfile合併單個hfile檔案,隨著資料量的不斷寫入,單個hfile也會越來越大,大量小的hfile會影響資料查詢效能,大的hfile也會,hfile越大,相對的在hfile中搜尋的指定rowkey的資料花的時間也就越長,hbase同樣提供了region的split方案來解決大的hfile造成資料查詢時間過長問題。
其實,split只是簡單的把region從邏輯上劃分成兩個,並沒有涉及到底層資料的重組,split完成後,parent region並沒有被銷毀,只是被做下線處理,不再對外部提供服務。而新產生的region daughter a和daughter b,內部的資料只是簡單的到parent region資料的索引,parent region資料的清理在daughter a和daughter b進行major compact以後,發現已經沒有到其內部資料的索引後,parent region才會被真正的清理。
參考文章:
SVM常見面試問題
答 幾何間隔與樣本的誤分次數間存在關係 其中的分母就是樣本到分類間隔距離,分子中的r是所有樣本中的最長向量值 答 會,超平面會靠近樣本少的類別。因為使用的是軟間隔分類,而如果對所有類別都是使用同樣的懲罰係數,則由於優化目標裡面有最小化懲罰量,所以靠近少數樣本時,其懲罰量會少一些。比如 假設理想的分隔...
C 常見面試問題
一 抽象與介面的區別 1,抽象 abstract 1 抽象類中可以有抽象方法,也可沒有 2 抽象方法包含實現,也可以由子類實現 3 抽象類不能被sealed修飾,只能使用abstract關鍵字 4 抽象方法不能在抽象類外部宣告 5 抽象類只能單繼承 6 可以有虛方法 virtual 在不同的繼承中,...
SpringMVC 常見面試問題
springmvc流程 原理 流程圖 亂碼問題 重定向和 在返回值前面加 redirect 或 forward return forward 跳轉的頁面或路由 重定向和 的區別 全域性異常 自定義實現spring的全域性異常解析器handlerexceptionresolver springboot...