1. 程式人生 > >6.HBase_應用_常用資料遷移方式

6.HBase_應用_常用資料遷移方式

一般情況下,我們的資料來源是:RDBMS或日誌檔案。資料遷移常用方式:使用HBase Put方式、HBase自帶MR方式、bulk load工具方式。

Java API操作HBase Put、自定義HBase MR兩種方式,我們在前面已經使用過了,重點看一下importtsv、bulk load方式。

1.HBase使用importtsv匯入資料

實際上類似與我們自己寫的mapreduce程式遷移資料

# 1. 設定環境變數
export HBASE_HOME=/usr/hdp/2.5.3.0-37/hbase
export HADOOP_HOME=/usr/hdp/2.5.3.0-37/hadoop
export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath`
# 不使用mapredcp而使用classpath的原因是classpath中帶有zookeeper需要載入的lib包
# export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp` 

# 2. 使用hbase自帶的importtsv工具
# 第一行:執行jar包    第二行:被匯入資料的hbase表列(預設檔案格式製表符隔開)    
# 第三行:hbase表    第四行:存放載入資料檔案的hdfs目錄
yarn jar /usr/hdp/2.5.3.0-37/hbase/lib/hbase-server-1.1.2.2.5.3.0-37.jar importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:address \
emp \
/user/hbase/importtsv

2.HBase使用bulk load匯入資料

利用HBase資料資訊以特定資料格式存放在HDFS上,直接在HDFS中生成HFile持久化資料檔案,然後上傳到合適位置,即:完成巨量資料快速入庫。配合mapreduce完成,高效便捷,不佔用region資源,在大資料量寫入時能極大的提高寫入效率,降低HBase節點寫入的壓力。

# 1. 設定HADOOP_CLASSPATH環境變數
export HBASE_HOME=/usr/hdp/2.5.3.0-37/hbase
export HADOOP_HOME=/usr/hdp/2.5.3.0-37/hadoop
export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase classpath`
# 不使用mapredcp而使用classpath的原因是classpath中帶有zookeeper需要載入的lib包
# export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp` 

# 2. 使用importtsv工具生成HFile檔案
# 第一行:執行jar包    第二行:指定
yarn jar /usr/hdp/2.5.3.0-37/hbase/lib/hbase-server-1.1.2.2.5.3.0-37.jar importtsv \
-Dimporttsv.separator=, \
-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:address \
-Dimporttsv.bulk.output=/user/hbase/hfileoutput \
emp \
/user/hbase/importtsv

# 3. 使用hbase的MR工具completebulkload
#    將生成的hfile檔案移動到hbase regions對應的hdfs路徑,以完成hbase資料的載入
yarn jar /usr/hdp/2.5.3.0-37/hbase/lib/hbase-server-1.1.2.2.5.3.0-37.jar completebulkload \
/user/hbase/hfileoutput \
emp