今天学习到HBase的BulkLoad部分,动手测试了一下,通过MR程序生成了HFile后,想通过运行shell命令来达成BulkLoad,但是各种尝试后都是失败的!一直提示找不到类。百度、google都没能解决!最后通过查看官网的资料才发现问题所在,特此记录。给大家避坑!
书上的示例有两种:
# 1.
$ bin/hbase org.apache.hadoop.hbase.tool.LoadIncrementalHFiles <hdfs://storefileoutput> <tablename>
提示找不到org.apache.hadoop.hbase.tool.LoadIncrementalHFiles类
# 2.
HADOOP_CLASSPATH='${HBASE_HOME}/bin/hbase classpath' ${HADOOP_HOME}/bin/hadoop jar ${HBASE_HOME}/hbase-server-VERSION.jar completebulkload <hdfs://storefileoutput> <tablename>
也是提示找不到类,后来我才发现里面的hbase-server-VERSION.jar
中VERSION是自己hbase版本,修改后还是报错找不到。然后我去查找了一下目录结构发现这个包在${HBASE_HOME}/lib/hbase-server-2.2.4.jar
没错,是在lib包下!修改后还是不行!
然后就开始各种查找,发现都不能解决。最终无奈,上官网!输入关键词,立马就定位了问题?
没错!你没有看错!包错了!书上是server,这怎么可能找得到嘛。太坑了嘛。
最终执行指令:
hadoop jar hbase-mapreduce-2.2.4.jar completebulkload hdfs://mycluster/MRData/out ns1:t1
运行成功!导入成功!速度非常快!