首頁>Club>
10
回覆列表
  • 1 # 小精靈zx

    一、rowkey長度原則

    rowkey是一個二進位制碼流,可以為任意字串,最大長度為64kb,實際應用中一般為10-100bytes,它以byte[]形式儲存,一般設定成定長。

    一般越短越好,不要超過16個位元組,注意原因如下:

    1、目前作業系統都是64位系統,記憶體8位元組對齊,控制在16位元組,8位元組的整數倍利用了作業系統的最佳特性。

    2、hbase將部分資料載入到記憶體當中,如果rowkey過長,記憶體的有效利用率就會下降。

    二、rowkey雜湊原則

    如果rowkey按照時間戳的方式遞增,不要將時間放在二進位制碼的前面,建議將rowkey的高位位元組採用雜湊欄位處理,由程式隨即生成。低位放時間欄位,這樣將提高資料均衡分佈,各個regionServer負載均衡的機率。

    如果不進行雜湊處理,首欄位直接使用時間資訊,所有該時段的資料都將集中到一個regionServer當中,這樣當檢索資料時,負載會集中到個別regionServer上,造成熱點問題,會降低查詢效率。

    三、rowkey唯一原則

    必須在設計上保證其唯一性,rowkey是按照字典順序排序儲存的,因此,設計rowkey的時候,要充分利用這個排序的特點,將經常讀取的資料儲存到一塊,將最近可能會被訪問的資料放到一塊。但是這裡的量不能太大,如果太大需要拆分到多個節點上去。

    所以良好的rowkey設計,應當遵循三大原則,並且能讓資料分散,從而避免熱點問題。本節介紹幾種常用的rowkey設計方法,以供同學們學習。

  • 中秋節和大豐收的關聯?
  • 歐國聯:德國和西班牙的這場比賽,你覺得誰會贏。理由是什麼?