針對這兩種方式,在第五項中,我們簡要介紹了幾種常見的rowkey設計思路(充分利用hbase的分布式特性,將請求分散到不同region上)
十進位制字串表達——id反轉
二進位制——高階用法,傳說中的\x00
大量訪問會使熱點region所在的單個機器超出自身承受能力,引起效能下降甚至region不可用
這也會影響同乙個regionserver上的其他region,由於主機無法服務其他region的請求。
設計良好的資料訪問模式以使集群被充分,均衡的利用。
比如某業務id都是10開頭的,如果不做雜湊的情況:
雜湊前,因為業務id不規律,不夠分散,導致有熱點
雜湊後,分散均勻
下面是一些常見的避免熱點的方法以及它們的優缺點:
這裡所說的加鹽不是密碼學中的加鹽,而是增加salt_bucket機制,將一次請求分散到n個不同的region上。
常見場景:
00_userid01開頭的資料
10_userid01開頭的資料
20_userid01開頭的資料
...90_userid01開頭的資料
業務id1 是查詢引數
如果已使用md5 雜湊了業務id1 那在查詢時就已知業務id了,沒有必要在後面再寫一遍業務id1了 可以參考上面【rowkey長度原則】
時間戳反轉,乙個特殊用法,按時間段查詢,並且經常查詢的資料是最新資料
想要根據使用者id查詢使用者最近從start time到end time的行為,或者使用者近乙個小時的行為,並且將最新的資料先載入
初步思路:md5(使用者id)_行為timestamp
高階,要查「此使用者近乙個小時行為」,並且將最新的資料先載入
Hbase簡單使用
hbase main 003 0 create test first second 建立乙個名為test的表,裡面有兩個列族first second hbase main 007 0 put test row1 first a 1 往test表中新增資料,row1是標識 相當主鍵 first a 代...
hbase 使用備忘
hbase是基於hadoop的,所以hbase伺服器必須啟動hadoop,這點很重要.當然hbase其實只用到了dadoop的乙個元件 1.啟動hadoop dfs 在主上執行如下命令,可以把主和從一同啟動 sbin start dfs.sh,如果要格式化的話使用 bin hadoop nameno...
HBase學習和使用
最近專案中用到了hbase,使用的原因在於hbase可以提供高併發讀寫操作的支援,同時自動切分資料,使得資料儲存具有水平擴充套件性。1 不能支援條件查詢,只支援按照row key來查詢.2 暫時不能支援master server的故障切換,當master宕機後,整個儲存系統就會掛掉.1.資料型別,h...