HBase的Rowkey設(shè)計(jì)的3個(gè)原則

一、rowkey長(zhǎng)度原則

rowkey是一個(gè)二進(jìn)制碼流,可以為任意字符串,最大長(zhǎng)度為64kb,實(shí)際應(yīng)用中一般為10-100bytes,它以byte[]形式保存,一般設(shè)定成定長(zhǎng)。

一般越短越好,不要超過16個(gè)字節(jié),注意原因如下:

1、目前操作系統(tǒng)都是64位系統(tǒng),內(nèi)存8字節(jié)對(duì)齊,控制在16字節(jié),8字節(jié)的整數(shù)倍利用了操作系統(tǒng)的最佳特性。

2、hbase將部分?jǐn)?shù)據(jù)加載到內(nèi)存當(dāng)中,如果rowkey過長(zhǎng),內(nèi)存的有效利用率就會(huì)下降。

二、rowkey散列原則

如果rowkey按照時(shí)間戳的方式遞增,不要將時(shí)間放在二進(jìn)制碼的前面,建議將rowkey的高位字節(jié)采用散列字段處理,由程序隨即生成。低位放時(shí)間字段,這樣將提高數(shù)據(jù)均衡分布,各個(gè)regionServer負(fù)載均衡的幾率。

如果不進(jìn)行散列處理,首字段直接使用時(shí)間信息,所有該時(shí)段的數(shù)據(jù)都將集中到一個(gè)regionServer當(dāng)中,這樣當(dāng)檢索數(shù)據(jù)時(shí),負(fù)載會(huì)集中到個(gè)別regionServer上,造成熱點(diǎn)問題,會(huì)降低查詢效率。

三、rowkey唯一原則

必須在設(shè)計(jì)上保證其唯一性,rowkey是按照字典順序排序存儲(chǔ)的,因此,設(shè)計(jì)rowkey的時(shí)候,要充分利用這個(gè)排序的特點(diǎn),將經(jīng)常讀取的數(shù)據(jù)存儲(chǔ)到一塊,將最近可能會(huì)被訪問的數(shù)據(jù)放到一塊。但是這里的量不能太大,如果太大需要拆分到多個(gè)節(jié)點(diǎn)上去。

所以良好的rowkey設(shè)計(jì),應(yīng)當(dāng)遵循三大原則,并且能讓數(shù)據(jù)分散,從而避免熱點(diǎn)問題。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容