HBase數據導入----improttsv&Bulk Load

HBase本身提供了很多種數據導入的方式,通常有兩種常用方式:

1、使用HBase提供的TableOutputFormat,原理是通過一個Mapreduce作業將數據導入HBase

2、另一種方式就是使用HBase原生Client API

這兩種方式由於需要頻繁的與數據所存儲的RegionServer通信,一次性入庫大量數據時,特別佔用資源,所以都不是最有效的。瞭解過HBase底層原理的應該都知道,HBase在HDFS中是以HFile文件結構存儲的,一個比較高效便捷的方法就是使用 “Bulk Loading”方法直接生成HFile,即HBase提供的HFileOutputFormat類


BULK LOADING:


HBase 支持BULK LOAD的入庫方式,它是利用HBase的數據信息按照特定格式存儲在HDFS內這一原理,直接在HDFS中生成持久化的HFile數據格式文件,然後上傳至合適位置,即完成巨量數據入庫的辦法。配合mapreduce完成,高效便捷,而且不佔用region資源,增添負載,在大數據量寫入時可以極大的提高寫入效率,並降低對HBase節點的寫入壓力。


將hdfs://BPF:9000/user/bpf/hbase/下的數據以bulk load的方式先生成Hfile到hdfs://BPF:9000/user/bpf/hbase/output

HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf $HADOOP_HOME/bin/yarn jar ${HBASE_HOME}/lib/hbase-server-1.0.0-cdh5.5.0.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex,info:address,info:phone -Dimporttsv.bulk.output=hdfs://BPF:9000/user/bpf/hbase/output student hdfs://BPF:9000/user/bpf/hbase/


完成將HFile裝載到數據庫

HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp` $HADOOP_HOME/bin/hadoop jar ${HBASE_HOME}/lib/hbase-server-1.1.12.jar completebulkload hdfs://master1:8020/user/master1/output student



發佈了65 篇原創文章 · 獲贊 14 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章