大數(shù)據(jù)開發(fā)學(xué)習(xí)筆記——hbase的rowkey設(shè)計(jì)

寫在最前面:今日都是純文字的筆記经磅,希望朋友們能耐心看

rowkey長度原則

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

建議越短越好识樱,不要超過16個(gè)字節(jié)震束,原因如下:

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

rowkey散列原則

如果rowkey按照時(shí)間戳的方式遞增胸懈,不要將時(shí)間放在二進(jìn)制碼的前面,建議將rowkey的高位采用散列字段處理趣钱,由程序隨機(jī)生成,低位放時(shí)間字段燕垃,這樣將提高數(shù)據(jù)均衡分布在每個(gè)RegionServer井联,以實(shí)現(xiàn)負(fù)載均衡的幾率。

如果不進(jìn)行散列字段處理烙常,首字段直接使用時(shí)間信息,所有的數(shù)據(jù)都會集中在一個(gè)RegionServer上侦副,這樣在數(shù)據(jù)檢索的時(shí)候負(fù)載會集中在個(gè)別的RegionServer上,造成熱點(diǎn)問題驼鞭,會降低查詢效率。

rowkey唯一原則

必須在設(shè)計(jì)上保證其唯一性挣棕,rowkey是按照字典順序排序存儲的亲桥,因此固耘,設(shè)計(jì)rowkey的時(shí)候,要充分利用這個(gè)排序的特點(diǎn)悼凑,將經(jīng)常讀取的數(shù)據(jù)存儲到一塊璧瞬,將最近可能會被訪問的數(shù)據(jù)放到一塊。

什么是熱點(diǎn)

HBase中的行是按照rowkey的字典順序排序的嗤锉,這種設(shè)計(jì)優(yōu)化了scan操作,可以將相關(guān)的行以及會被一起讀取的行存取在臨近位置奥额,便于scan访诱。然而糟糕的rowkey設(shè)計(jì)是熱點(diǎn)的源頭。 熱點(diǎn)發(fā)生在大量的client直接訪問集群的一個(gè)或極少數(shù)個(gè)節(jié)點(diǎn)(訪問可能是讀触菜,寫或者其他操作)。設(shè)計(jì)良好的數(shù)據(jù)訪問模式以使集群被充分哲泊,均衡的利用催蝗。

為了避免寫熱點(diǎn),設(shè)計(jì)rowkey使得不同行在同一個(gè)region丙号,但是在更多數(shù)據(jù)情況下犬缨,數(shù)據(jù)應(yīng)該被寫入集群的多個(gè)region,而不是一個(gè)遍尺。

鹽析(salt)

在rowkey的前面增加隨機(jī)數(shù)涮拗,具體就是給rowkey分配一個(gè)隨機(jī)前綴以使得它和之前的rowkey的開頭不同迂苛。分配的前綴種類數(shù)量應(yīng)該和你想使用數(shù)據(jù)分散到不同的region的數(shù)量一致鼓择。加鹽之后的rowkey就會根據(jù)隨機(jī)生成的前綴分散到各個(gè)region上,以避免熱點(diǎn)念搬。

哈希

哈希會使同一行永遠(yuǎn)用一個(gè)前綴加鹽摆出。哈希也可以使負(fù)載分散到整個(gè)集群,但是讀卻是可以預(yù)測的偎漫。使用確定的哈希可以讓客戶端重構(gòu)完整的rowkey温亲,可以使用get操作準(zhǔn)確獲取某一個(gè)行數(shù)據(jù)

反轉(zhuǎn)

第三種防止熱點(diǎn)的方法時(shí)反轉(zhuǎn)固定長度或者數(shù)字格式的rowkey杯矩。這樣可以使得rowkey中經(jīng)常改變的部分(最沒有意義的部分)放在前面。這樣可以有效的隨機(jī)rowkey魂务,但是犧牲了rowkey的有序性泌射。

反轉(zhuǎn)rowkey的例子以手機(jī)號為rowkey,可以將手機(jī)號反轉(zhuǎn)后的字符串作為rowkey魄幕,這樣的就避免了以手機(jī)號那樣比較固定開頭導(dǎo)致熱點(diǎn)問題

時(shí)間戳反轉(zhuǎn)

一個(gè)常見的數(shù)據(jù)處理問題是快速獲取數(shù)據(jù)的最近版本,使用反轉(zhuǎn)的時(shí)間戳作為rowkey的一部分對這個(gè)問題十分有用坛芽,可以用Long.Max_Value - timestamp追加到key的末尾翼抠,例如[key][reverse_timestamp] ,[key] 的最新值可以通過scan [key]獲得[key]的第一條記錄,因?yàn)镠Base中rowkey是有序的阴颖,第一條記錄是最后錄入的數(shù)據(jù)量愧。

END钾菊。。浑此。

來源:成都科多大數(shù)據(jù)科技有限公司

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滞详,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蒲犬,更是在濱河造成了極大的恐慌岸啡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篇裁,死亡現(xiàn)場離奇詭異赡若,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)逾冬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門身腻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脐区,你說我怎么就攤上這事她按。” “怎么了酌泰?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵陵刹,是天一觀的道長。 經(jīng)常有香客問我,道長炼蹦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任辛辨,我火速辦了婚禮,結(jié)果婚禮上斗搞,老公的妹妹穿的比我還像新娘。我一直安慰自己允悦,他們只是感情好虑啤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著全闷,像睡著了一般萍启。 火紅的嫁衣襯著肌膚如雪总珠。 梳的紋絲不亂的頭發(fā)上勘纯,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天驳遵,我揣著相機(jī)與錄音,去河邊找鬼堤结。 笑死,一個(gè)胖子當(dāng)著我的面吹牛媒惕,可吹牛的內(nèi)容都是我干的来庭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肴盏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菜皂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤榨崩,失蹤者是張志新(化名)和其女友劉穎章母,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彩郊,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚪缀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年询枚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哩盲。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡廉油,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抒线,到底是詐尸還是另有隱情,我是刑警寧澤抱慌,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布眨猎,位于F島的核電站,受9級特大地震影響睡陪,放射性物質(zhì)發(fā)生泄漏匿情。R本人自食惡果不足惜信殊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一涡拘、第九天 我趴在偏房一處隱蔽的房頂上張望玲躯。 院中可真熱鬧鳄乏,春花似錦、人聲如沸姓赤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至只洒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間成畦,已是汗流浹背涝开。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拄养,地道東北人银舱。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像寻馏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子嘁锯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容