HBase批量加載架構(gòu)

2018-06-20 11:31 更新

批量加載架構(gòu)

HBase批量加載過程包含兩個(gè)主要步驟。

通過MapReduce作業(yè)準(zhǔn)備數(shù)據(jù)

批量加載的第一步是使用HFileOutputFormat2從MapReduce作業(yè)生成HBase數(shù)據(jù)文件(StoreFiles)。這種輸出格式以 HBase 的內(nèi)部存儲(chǔ)格式寫出數(shù)據(jù),以便以后可以非常高效地將其加載到群集中。

為了高效工作,必須對(duì)HFileOutputFormat2進(jìn)行配置,使每個(gè)輸出 HFile 適合單個(gè)區(qū)域。為了做到這一點(diǎn),輸出將被批量加載到HBase中的作業(yè)使用Hadoop的TotalOrderPartitioner類來將映射輸出分區(qū)到密鑰空間的不相交范圍中,對(duì)應(yīng)于表中區(qū)域的鍵范圍。

HFileOutputFormat2包括一個(gè)方便函數(shù),configureIncrementalLoad(),它根據(jù)根據(jù)表格的當(dāng)前區(qū)域邊界自動(dòng)設(shè)置TotalOrderPartitioner。

完成數(shù)據(jù)加載

在準(zhǔn)備好數(shù)據(jù)導(dǎo)入之后,無論是通過使用具有“importtsv.bulk.output”選項(xiàng)的importtsv工具,還是使用HFileOutputFormat的其他MapReduce作業(yè),該completebulkload工具都可用于將數(shù)據(jù)導(dǎo)入到正在運(yùn)行的集群中。這個(gè)命令行工具遍歷準(zhǔn)備好的數(shù)據(jù)文件,并且每個(gè)文件確定文件所屬的區(qū)域。然后,它會(huì)聯(lián)系采用HFile的相應(yīng)RegionServer,將其移動(dòng)到其存儲(chǔ)目錄并使數(shù)據(jù)可供客戶端使用。

如果在批量加載準(zhǔn)備過程中或者在準(zhǔn)備和完成步驟之間區(qū)域邊界發(fā)生了變化,completebulkload公用程序會(huì)自動(dòng)將數(shù)據(jù)文件分成與新邊界相對(duì)應(yīng)的部分。這個(gè)過程并不是最佳效率,因此用戶應(yīng)該注意盡量減少在準(zhǔn)備批量加載和將其導(dǎo)入群集之間的延遲,特別是如果其他客戶端同時(shí)通過其他方式加載數(shù)據(jù)。

$ hadoop jar hbase-server-VERSION.jar completebulkload [-c /path/to/hbase/config/hbase-site.xml] /user/todd/myoutput mytable

該-c config-file選項(xiàng)可用于指定包含適當(dāng)?shù)膆base參數(shù)的文件(例如,hbase-site.xml)(如果CLASSPATH中尚未提供此參數(shù))(此外,如果zookeeper不是由HBase管理,則CLASSPATH必須包含具有zookeeper配置文件的目錄)。

如果目標(biāo)表在HBase中不存在,則此工具將自動(dòng)創(chuàng)建表。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)