HBase作為MapReduce作業(yè)數(shù)據(jù)源和數(shù)據(jù)接收器

2018-04-04 11:05 更新

HBase作為MapReduce作業(yè)數(shù)據(jù)源和數(shù)據(jù)接收器

對于 MapReduce 作業(yè),HBase 可以用作數(shù)據(jù)源、TableInputFormat 和數(shù)據(jù)接收器、TableOutputFormat 或 MultiTableOutputFormat。編寫讀取或寫入HBase 的 MapReduce作業(yè),建議子類化 TableMapper 或 TableReducer。

如果您運行使用 HBase 作為源或接收器的 MapReduce 作業(yè),則需要在配置中指定源和接收器表和列名稱。

當您從 HBase 讀取時,TableInputFormat 請求 HBase 的區(qū)域列表并制作一張映射,可以是一個 map-per-region 或 mapreduce.job.maps mapreduce.job.maps ,映射到大于區(qū)域數(shù)目的數(shù)字。如果您為每個節(jié)點運行 TaskTracer/NodeManager 和 RegionServer,則映射將在相鄰的 TaskTracker/NodeManager 上運行。在寫入 HBase 時,避免使用 Reduce 步驟并從映射中寫回 HBase 是有意義的。當您的作業(yè)不需要 MapReduce 對映射發(fā)出的數(shù)據(jù)進行排序和排序時,這種方法就可以工作。在插入時,HBase 'sorts',因此除非需要,否則雙重排序(并在您的 MapReduce 集群周圍混洗數(shù)據(jù))沒有意義。如果您不需要 Reduce,則映射可能會發(fā)出在作業(yè)結束時為報告處理的記錄計數(shù),或者將 Reduces 的數(shù)量設置為零并使用 TableOutputFormat。如果運行 Reduce 步驟在你的情況下是有意義的,則通常應使用多個減速器,以便在 HBase 群集上傳播負載。

一個新的 HBase 分區(qū)程序 HRegionPartitioner 可以運行與現(xiàn)有區(qū)域數(shù)量一樣多的 reducers。當您的表格很大時,HRegionPartitioner 是合適的,并且您的上傳不會在完成時大大改變現(xiàn)有區(qū)域的數(shù)量。否則使用默認分區(qū)程序。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號