標籤:http io ar 使用 sp for on 資料 問題
華為在HBTC 2012上由其進階技術經理Anoop Sam John透露了其二級索引方案,這在業界引起極大的反響,甚至有人認為,如果華為早點公布這個方案,hbase的某些問題早就解決了。其核心思想是保證索引表和主表在同一個region server上。
更新:目前該方案華為已經開源,詳見:https://github.com/Huawei-Hadoop/hindex
下面來對其方案做一個分析。
1.整體架構
這個架構在Client Ext中設定索引細節,在Balancer中收集資訊,在Coprocessor中管理二級索引資料。
2.表建立
在建立表的時候,在同一個region server上建立索引表,且一一對應。
3.插入操作
在主表中插入某條資料後,用Coprocessor將索引列寫到索引表中去,寫道索引表中的資料的主鍵為:region開始key+索引名+索引列值+主表row key。這麼做,是為了讓其在同一個分布規則下,索引表會跟主表在通過region server上,在查詢的時候就可以少一次rpc。
4.scan操作
一個查詢到來的時候,通過coprocessor鉤子,先從索引表中查詢範圍row,然後再從主表中相關row中掃描獲得最終資料。
5. split操作處理
為了使主表和索引表在同一個RS上,要禁用索引表的自動和手動split,只能由主表split的時候觸發,當主表split的時候,對索引表按其對應資料進行劃分,同時,對索引表的第二個daughter split的row key的前面部分修改為對應的主鍵的row key。
6. 效能
查詢效能極大提升,插入效能下降10%左右
總結,本文對華為hbase使用coprocessor進行二級索引的方案的建立表,插入資料,查詢資料的步驟進行了一個粗略分析,以窺其全貌。在使用的時候,可以作為一個參考。
原文出處:鄧的部落格
【轉】華為Hbase二級索引(Secondary Index)細節分析