我采用了先ImportTsv后completebulkload的方式,并且completebulkload时采用了LoadIncrementalHFiles。
1. ImportTsv命令中,需将所有的-D参数顺序排列。
如果在<tablename>和<inputdir>之间加入-Dimporttsv.bulk.output参数,例如:sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,f1:q1 tab1 -Dimporttsv.bulk.output=/tmp/output /tmp/testdata
会报告如下错误:
WARN security.UserGroupInformation: PriviledgedActionException as:hbase (auth:SIMPLE) cause:org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://****:8020/user/hbase/-D
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://****:8020/user/hbase/-D
如果将-Dimporttsv.bulk.output放在最后,例如:sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,f1:q1 tab1 /tmp/testdata -Dimporttsv.bulk.output=/tmp/output
虽然不会报错,但是实际不能生成HFile。
正确用法应该如:sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,f1:q1 -Dimporttsv.bulk.output=/tmp/output tab1 /tmp/testdata
2.执行时,卡死在提示“INFO mapreduce.LoadIncrementalHFiles: Trying to load hfile=hdfs”处
例如执行:hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/output tab1,出现上述卡死现象。查看Region Server日志时,发现提示权限拒绝之类的异常。所以修改命令为:sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/output tab1 即可解决此问题。