2 回答
TA貢獻(xiàn)1775條經(jīng)驗 獲得超8個贊
一、通常向HBase批量導(dǎo)入數(shù)據(jù)有三種常用方式
1、使用HBase提供的TableOutputFormat,原理是通過一個Mapreduce作業(yè)將數(shù)據(jù)導(dǎo)入HBase
2、還有一種方式就是使用HBase原生Client API(put)
3、前兩種方式因為須要頻繁的與數(shù)據(jù)所存儲的RegionServer通信。一次性入庫大量數(shù)據(jù)時,特別占用資源,所以都不是很有效。因為HBase在HDFS中是以HFile文件結(jié)構(gòu)存儲的,所以高效便捷的方法就是直接生成HFile文件然后使用Bulk Load方法,即HBase提供的HFileOutputFormat類。
二、Bulk Load基本原理
Bulk Load處理由兩個主要步驟組成:
1、生成HFile文件
Bulk Load的第一步會執(zhí)行一個Mapreduce作業(yè),其中使用到了HFileOutputFormat輸出HBase數(shù)據(jù)文件:StoreFile。
HFileOutputFormat的作用在于使得輸出的HFile文件能夠適應(yīng)單個region。使用TotalOrderPartitioner類將map輸出結(jié)果分區(qū)到各個不同的key區(qū)間中,每一個key區(qū)間都相應(yīng)著HBase表的region。
2、導(dǎo)入HBase表
第二步使用completebulkload工具將第一步的結(jié)果文件依次交給負(fù)責(zé)文件相應(yīng)region的RegionServer,并將文件move到region在HDFS上的存儲文件夾中。一旦完畢。將數(shù)據(jù)開放給clients。
假設(shè)在bulk load準(zhǔn)備導(dǎo)入或在準(zhǔn)備導(dǎo)入與完畢導(dǎo)入的臨界點(diǎn)上發(fā)現(xiàn)region的邊界已經(jīng)改變,completebulkload工具會自己主動split數(shù)據(jù)文件到新的邊界上。可是這個過程并非最佳實踐,所以用戶在使用時須要最小化準(zhǔn)備導(dǎo)入與導(dǎo)入集群間的延時,特別是當(dāng)其它c(diǎn)lient在同一時候使用其它工具向同一張表導(dǎo)入數(shù)據(jù)。
Bulk Load常遇到的一個ERROR:”java.io.IOException: Retry attempted 10 times without completing, bailing out”
錯誤解析:
我們使用的Hbase1.0.2版本下,如果Hfile文件 跨越多個region,bulkload會自動地將Hfile文件split,但是對于每次retry只會將指定的Hfile文件split一次。但是在hbase-site.xml配置文件里有個參數(shù)hbase.bulkload.retries.number控制了hbase對一個hfile最多plit多少次。這個參數(shù)默認(rèn)是10,如果某個hfile跨越的region數(shù)超過10個就會報上述Exception。
解決方案:
將hbase.bulkload.retries.number這個參數(shù)設(shè)置為更大的值,比如目標(biāo)表的region數(shù)量或者將這個參數(shù)設(shè)置成0,0表示不斷重試直到成功。設(shè)置之后問題解決。
TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊
1HBase的定義
HBase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統(tǒng)。
適合于存儲大表數(shù)據(jù)(表的規(guī)??梢赃_(dá)到數(shù)十億行以及數(shù)百萬列),并且對大表數(shù)據(jù)的讀、寫訪問可以達(dá)到實時級別。利用Hadoop HDFS(Hadoop Distributed File System)作為其文件存儲系統(tǒng),提供實時讀寫的數(shù)據(jù)庫系統(tǒng);利用ZooKeeper作為協(xié)同服務(wù)。
2HBase的架構(gòu)
3HBase的適用場景
HBase適合具有如下需求的應(yīng)用:
o海量數(shù)據(jù)(TB、PB)
o高吞吐量
o需要在海量數(shù)據(jù)中實現(xiàn)高效的隨機(jī)讀取
o需要很好的性能伸縮能力
o能夠同時處理結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)
o不需要完全擁有傳統(tǒng)關(guān)系型數(shù)據(jù)庫所具備的ACID特性
4成功應(yīng)用場景案例
項目背景
某銀行僅支持查詢最近一年的賬戶歷史交易情況,超過一年的查詢需要特殊申請,由專人進(jìn)行人工查詢
原因:
o傳統(tǒng)數(shù)據(jù)庫無法存儲海量數(shù)據(jù)。
o大數(shù)據(jù)量下查詢性能急劇下降。
HBase的優(yōu)勢
o海量數(shù)據(jù)(TB、PB):可由查詢一年變?yōu)槭昊蚋?/p>
o高效隨機(jī)讀?。翰樵兂^一年的數(shù)據(jù)與查詢最近數(shù)據(jù)同樣高效
- 2 回答
- 0 關(guān)注
- 387 瀏覽
添加回答
舉報
