hbase-bulkload淺析

一、背景

在實(shí)際的生產(chǎn)業(yè)務(wù)中,有這樣一種場景粒没,業(yè)務(wù)上面需要不定期的將一份存放在hdfs上面的海量數(shù)據(jù)導(dǎo)入到HBase中,作為冷啟動(dòng)的數(shù)據(jù)簇爆,基于目前存在的Hbase版本癞松,可選擇的常見方式有兩種:基于寫入API的方式;基于HBase Bulkload的方式入蛆。

二拦惋、寫入方式對比

1 基于API寫入的方式

優(yōu)勢:

  • 實(shí)現(xiàn)簡單,直接調(diào)用HBase簡易的寫入API即可完成數(shù)據(jù)的寫入安寺。
  • 不用關(guān)注底層數(shù)據(jù)存儲的,hbase會(huì)將傳入的數(shù)據(jù)根據(jù)rowkey發(fā)送到指定的RegionServer進(jìn)行存儲首尼。

劣勢:

  • 需要訪問Region Server挑庶,在頻繁寫入超大數(shù)據(jù)量的時(shí)候容易產(chǎn)生資源問題。
  • 引起RegionServer頻繁flush软能,進(jìn)而不斷compact迎捺、split,影響集群穩(wěn)定性查排。
  • 引起RegionServer頻繁GC凳枝,影響集群穩(wěn)定性;消耗大量CPU資源、帶寬資源岖瑰、內(nèi)存資源以及IO資源叛买,與其他業(yè)務(wù)產(chǎn)生資源競爭。
  • 在某些場景下蹋订,比如平均KV大小比較大的場景率挣,會(huì)耗盡RegionServer的處理線程,導(dǎo)致集群阻塞露戒。

2 基于HBase Bulkload的方式

優(yōu)勢:

  • 數(shù)據(jù)可以立即被hbase使用椒功,并且不會(huì)對集群造成額外的負(fù)載和延遲。
  • BulkLoad操作不會(huì)預(yù)寫日志(WALs)智什,因此不會(huì)引起過量的flush和split动漾。
  • BulkLoad操作不會(huì)引起過多的垃圾回收(GC) 。

劣勢:

  • 實(shí)現(xiàn)復(fù)雜荠锭,需要自己將存儲數(shù)據(jù)構(gòu)造成符合HBase底層HFile存儲文件的格式旱眯。
  • 底層操作容易很容易造成一些未知的元數(shù)據(jù)問題。

鑒于兩種方式的對比节沦,Bulkload方式不需要將數(shù)據(jù)寫入請求發(fā)送給RegionServer處理键思,可以有效避免基于API寫入導(dǎo)致的一切資源問題,所有采用基于HBase Bulkload方式進(jìn)行海量離線hdfs數(shù)據(jù)導(dǎo)入HBase是可行的甫贯。

三吼鳞、HBase儲存原理

HBase存儲數(shù)據(jù)其底層使用的是HDFS來作為存儲介質(zhì),HBase的每一張表對應(yīng)的HDFS目錄上的一個(gè)文件夾叫搁,文件夾名以HBase表進(jìn)行命名(如果沒有使用命名空間赔桌,則默認(rèn)在default目錄下),在表文件夾下存放在若干個(gè)Region命名的文件夾渴逻,Region文件夾中的每個(gè)列簇也是用文件夾進(jìn)行存儲的疾党,每個(gè)列簇中存儲就是實(shí)際的數(shù)據(jù),以HFile的形式存在惨奕。路徑格式如下:

/hbase/data/default/<tbl_name>/<region_id>/<cf>/<hfile_id>

四雪位、核心流程

從HBase的視角來看,BulkLoad主要由兩個(gè)階段組成:

bulkload工作流程

1 HFile生成階段

這個(gè)階段會(huì)運(yùn)行一個(gè)MapReduce任務(wù)梨撞,MapReduce的mapper需要自己實(shí)現(xiàn)雹洗,將HDFS文件中的數(shù)據(jù)讀出來組裝成一個(gè)復(fù)合KV,其中Key是rowkey卧波,Value可以是KeyValue對象时肿、Put對象甚至Delete對象;MapReduce的reducer由HBase負(fù)責(zé)港粱,通過方法HFileOutputFormat2.configureIncrementalLoad()進(jìn)行配置螃成,這個(gè)方法主要負(fù)責(zé)以下事項(xiàng)。

  • 根據(jù)表信息配置一個(gè)全局有序的partitioner。
  • 將partitioner文件上傳到HDFS集群并寫入DistributedCache寸宏。
  • 設(shè)置reduce task的個(gè)數(shù)為目標(biāo)表Region的個(gè)數(shù)宁炫。
  • 設(shè)置輸出key/value類滿足HFileOutputFormat所規(guī)定的格式要求。
  • 根據(jù)類型設(shè)置reducer執(zhí)行相應(yīng)的排序(KeyValueSortReducer或者PutSortReducer)击吱。

這個(gè)階段會(huì)為每個(gè)Region生成一個(gè)對應(yīng)的HFile文件淋淀。

2 HFile導(dǎo)入階段

HFile準(zhǔn)備就緒之后,就可以使用工具completebulkload將HFile加載到在線HBase集群覆醇。completebulkload工具主要負(fù)責(zé)以下工作朵纷。

  • 依次檢查第一步生成的所有HFile文件,將每個(gè)文件映射到對應(yīng)的Region永脓。
  • 將HFile文件移動(dòng)到對應(yīng)Region所在的HDFS文件目錄下袍辞。
  • 告知Region對應(yīng)的RegionServer,加載HFile文件對外提供服務(wù)常摧。

如果在BulkLoad的中間過程中Region發(fā)生了分裂搅吁,completebulkload工具會(huì)自動(dòng)將對應(yīng)的HFile文件按照新生成的Region邊界切分成多個(gè)HFile文件,保證每個(gè)HFile都能與目標(biāo)表當(dāng)前的Region相對應(yīng)落午。但這個(gè)過程需要讀取HFile內(nèi)容谎懦,因而并不高效。需要盡量減少HFile生成階段和HFile導(dǎo)入階段的延遲溃斋,最好能夠在HFile生成之后立刻執(zhí)行HFile導(dǎo)入界拦。


打完收工!
文章內(nèi)容來自于書本以及互聯(lián)網(wǎng)資源整理梗劫,僅供學(xué)習(xí)享甸,侵權(quán)聯(lián)系刪除。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末梳侨,一起剝皮案震驚了整個(gè)濱河市蛉威,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌走哺,老刑警劉巖蚯嫌,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丙躏,居然都是意外死亡齐帚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門彼哼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人湘今,你說我怎么就攤上這事敢朱。” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵拴签,是天一觀的道長孝常。 經(jīng)常有香客問我,道長蚓哩,這世上最難降的妖魔是什么构灸? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮岸梨,結(jié)果婚禮上喜颁,老公的妹妹穿的比我還像新娘。我一直安慰自己曹阔,他們只是感情好半开,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赃份,像睡著了一般寂拆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抓韩,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天纠永,我揣著相機(jī)與錄音,去河邊找鬼谒拴。 笑死尝江,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彪薛。 我是一名探鬼主播茂装,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼善延!你這毒婦竟也來了少态?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤易遣,失蹤者是張志新(化名)和其女友劉穎彼妻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豆茫,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侨歉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揩魂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幽邓。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖火脉,靈堂內(nèi)的尸體忽然破棺而出牵舵,到底是詐尸還是另有隱情柒啤,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布畸颅,位于F島的核電站担巩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏没炒。R本人自食惡果不足惜涛癌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望送火。 院中可真熱鬧拳话,春花似錦、人聲如沸漾脂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骨稿。三九已至笨鸡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坦冠,已是汗流浹背形耗。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辙浑,地道東北人激涤。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像判呕,于是被迫代替她去往敵國和親倦踢。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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