資料匯入終章:如何將HBase的資料匯入HDFS?
我們的最終目標是將資料匯入Hadoop,在之前的章節中,我們介紹瞭如何將傳統關聯式資料庫的資料匯入Hadoop,本節涉及到了HBase。HBase是一種實時分散式資料儲存系統,通常位於與Hadoop叢集相同的硬體上,或者與Hadoop叢集緊密相連,能夠直接在MapReduce中使用HBase資料,或將其匯入HDFS,這是選擇HBase作為解決方案的巨大優勢之一。
(注:本文為《Hadoop從入門到精通》大型專題的第五章內容,本專題的其他文章見文末連結,專題的上半部也將於不久之後與大家見面,請持續關注本專題!)
實踐:將HBase資料匯入HDFS
如果將要在MapReduce中使用的客戶資料與HDFS中的資料結合使用,那該怎麼辦?可以編寫一個MapReduce作業,該作業將HDFS資料集作為輸入,並直接從HBase的map或reduce程式碼中提取資料。但在某些情況下,將HBase中的資料直接轉儲到HDFS可能更有用,特別是如果計劃在多個MapReduce作業中使用該資料並且HBase資料不可變或不經常更改。
問題
將HBase資料匯入HDFS
解決方案
HBase包含一個Export類,可用於將HBase資料以SequenceFile格式匯入HDFS。此技術還介紹了可用於讀取匯入的HBase資料程式碼。
討論
在開始使用這種技術之前,需要啟動並執行HBase。
為了能夠從HBase匯出資料,首先需要將一些資料載入到HBase。載入器建立一個名為stocks_example的HBase表,其中包含一個列族的詳細資訊,我們將HBase資料儲存為Avro二進位制序列化資料,此部分程式碼就不列舉了。
執行載入程式並使用它將樣本資料載入到HBase中:
可以使用HBase shell檢視負載結果。list命令(不帶任何引數)將顯示HBase中的所有表,而帶有單個引數的scan命令將轉儲表的所有內容:
有了這些資料,我們就可以將其匯出到HDFS了。HBase附帶了一個轉儲HBase表的org.apache.hadoop.hbase.mapreduce.Export類。以下程式碼段顯示了使用Export類的示例。使用此命令,可以匯出整個HBase表:
Export類還支援只匯出單個列族,還可以壓縮輸出:
Export類以SequenceFile格式寫入HBase輸出,其中HBase行鍵使用org.apache.hadoop.hbase.io .ImmutableBytesWritable儲存在SequenceFile記錄鍵中,HBase值使用org.apache.hadoop.hbase.client.Result儲存在SequenceFile記錄值中.。
如果要在HDFS中處理匯出的資料,該怎麼辦?以下列表顯示瞭如何讀取HBase SequenceFile並提取Avro記錄的示例。
程式碼5.3 讀取HBase SequenceFile以提取Avro記錄
可以針對用於匯出的HDFS目錄執行程式碼並檢視結果:
HBaseExportedStockReader類能夠讀取和轉儲HBase的Export類使用的SequenceFile內容。
使用內建的HBase Export類可以更輕鬆地將HBase中的資料匯出到HDFS中。但是,如果不想將HBase資料寫入HDFS,而是想直接在MapReduce作業中處理它,該怎麼辦?讓我們看看如何使用HBase作為MapReduce作業的資料來源。
實踐:使用HBase作為 MapReduce的 資料來源
內建的HBase匯出器使用SequenceFile輸出HBase資料,除了Java之外的程式語言不支援它,並且不支援模式演變。它僅支援Hadoop檔案系統作為資料接收器。如果想要更多地控制HBase資料提取,可能需要其他HBase工具。
問題
希望直接在MapReduce作業中對HBase進行操作,而無需將資料複製到HDFS的中間步驟。
解決方案
HBase有一個TableInputFormat類,可以在MapReduce作業中使用,直接從HBase中提取資料。
討論
HBase提供了一個名為TableInputFormat的InputFormat類,它可以將HBase用作MapReduce中的資料來源。以下程式碼顯示了一個MapReduce作業,它使用此輸入格式(透過TableMapReduceUtil.initTableMapperJob呼叫)從HBase讀取資料。
程式碼5.4 使用MapReduce將HBase資料匯入HDFS
可以按如下方式執行此MapReduce作業:
$ hip hip.ch5.hbase.ImportMapReduce --output output
快速檢視HDFS,告訴MapReduce作業是否按預期工作:
此輸出確認MapReduce作業按預期工作。
總結
TableInputFormat類檢查HBase併為每個HBase表區域建立輸入拆分。如果有10個HBase region,則將執行10個map任務。輸入格式還包括在輸入拆分中託管region的伺服器,這意味著map任務將被安排在與託管資料的HRegionServer相同的節點上執行。這提供了HBase level的位置,也提供了HDFS level的位置。從該區讀取的資料可能來自本地磁碟,因為一段時間後,所有區的資料都將是本地的。這一切都假定HRegionServers與DataNode在同一主機上執行。
我們的最後關注點是持久儲存,包括對關聯式資料庫和HBase。接下來,我們將改變方向,看看如何利用kafka將資料匯入Hadoop。
相關文章:
1、《第一章:Hadoop生態系統及執行MapReduce任務介紹!》連結: http://blog.itpub.net/31077337/viewspace-2213549/
2、《學習Hadoop生態第一步:Yarn基本原理和資源排程解析!》連結: http://blog.itpub.net/31077337/viewspace-2213602/
3、《MapReduce如何作為Yarn應用程式執行?》連結: http://blog.itpub.net/31077337/viewspace-2213676/
4、《Hadoop生態系統各元件與Yarn的相容性如何?》連結: http://blog.itpub.net/31077337/viewspace-2213960/
5、《MapReduce資料序列化讀寫概念淺析!》連結: http://blog.itpub.net/31077337/viewspace-2214151/
6、《MapReuce中對大資料處理最合適的資料格式是什麼?》連結: http://blog.itpub.net/31077337/viewspace-2214325/
7、《如何在MapReduce中使用SequenceFile資料格式?》連結: http://blog.itpub.net/31077337/viewspace-2214505/
8、《如何在MapReduce中使用Avro資料格式?》連結: http://blog.itpub.net/31077337/viewspace-2214709/
9、《企業自有資料格式雜亂,MapReduce如何搞定?》連結: http://blog.itpub.net/31077337/viewspace-2214826/
10、《企業使用Hadoop的重大挑戰:如何在HDFS中組織和使用資料?》連結: http://blog.itpub.net/31545816/viewspace-2215158/ 》
11、《如何在HDFS中進行資料壓縮以實現高效儲存?》連結: http://blog.itpub.net/31545816/viewspace-2215281/
12、《Hadoop資料傳輸:如何將資料移入和移出Hadoop?》連結: http://blog.itpub.net/31545816/viewspace-2215580/
13、《如何將日誌和二進位制檔案連續移入HDFS?》連結: http://blog.itpub.net/31545816/viewspace-2215948/
14、《如何將傳統關聯式資料庫的資料匯入Hadoop?》連結: http://blog.itpub.net/31545816/viewspace-2216000/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545816/viewspace-2216036/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- odps平臺將資料匯入到hdfs
- Flume:資料匯入到hdfs中
- 如何將Excl內資料匯入資料庫?資料庫
- 將informix匯出的文字資料匯入oracle資料庫ORMOracle資料庫
- 如何用Java將excel資料匯入資料庫JavaExcel資料庫
- 【匯入匯出】將資料匯入到其他使用者
- 將XML匯入資料庫XML資料庫
- windows下把資料從oracle匯入hbaseWindowsOracle
- 資料庫 MySQL 資料匯入匯出資料庫MySql
- 資料庫的匯入匯出資料庫
- 資料泵的匯入匯出
- Hive資料匯入HBase引起資料膨脹引發的思考Hive
- 將excel表格匯入資料庫Excel資料庫
- NCF 如何匯入Excel資料Excel
- 資料泵匯出匯入
- Oracle 資料匯入匯出Oracle
- mysql資料匯入匯出MySql
- mysql資料匯出匯入MySql
- Oracle資料匯入匯出Oracle
- 如何將kafka中的資料快速匯入Hadoop?KafkaHadoop
- 大文字資料,匯入匯出到資料庫資料庫
- MySQL資料的匯入MySql
- MySQL入門--匯出和匯入資料MySql
- 資料匯入SQLLDRSQL
- Mongodb資料的匯出與匯入MongoDB
- EasyPoi, Excel資料的匯入匯出Excel
- 匯入和匯出AWR的資料
- BCP 資料的匯入和匯出
- AWR資料的匯出與匯入
- ITDS資料匯入匯出的方法
- NDS的資料匯入和匯出
- Progress資料表的匯入匯出
- sqoop資料匯入匯出OOP
- 資料匯入匯出EXP/IMP
- MongoDB資料匯入與匯出MongoDB
- mysqldump匯入匯出表資料MySql
- exp/imp匯出匯入資料
- postgresql 資料匯入和匯出SQL