Hbase 批量导入 bulk loading

hbase超大量数据导入方式,原理就是提前生成相应的Hfile文件,再导入hbase中。

  • 要导入数据的列相同的情况,使用现成的预定义工具importtsv
  • 要导入数据的列不相同的情况,自定义MR实现

importtsv

说明:$output为Hfile文件生成的hdfs路劲,$input为要处理文件存放的hdfs路劲,$table为要导入hbase表名

http://abloz.com/hbase/book.html#importtsv

报错一:NoClassDefFoundError:org.apache.hadoop.hbase.filter.Filter,等等类找不到

原因:HADOOP_CLASSPATH中没有Hbase相关的包

解决:在执行下面两步时先执行export HADOOP_CLASSPATH=${HBASE_HOME}/lib/*

报错二:client.RpcRetryingCaller:Call exception,tries= ,retries=35

原因:有可能是生成的Hfile目录权限问题

解决:修改$output为777,hdfs dfs -chmod -R 777 $output 

  • 1. 生成Hfile
hadoop jar ${HBASE_HOME}/lib/hbase-mapreduce-2.0.4.4.jar \
importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,f:q1,f:q2,... \
-Dimporttsv.separator="," \
-Dimporttsv.bulk.output=$output \
 $table $input 

 上面的报错试下这个

bin/hbase org.apache.Hadoop.hbase.mapreduce.ImportTsv \
-Dimporttsv.columns=HBASE_ROW_KEY,f:q1,f:q2,... \
-Dimporttsv.separator="," \
-Dimporttsv.bulk.output=$output \
 $table $input
  • 2. 导入Hbase
hadoop jar ${HBASE_HOME}/lib/hbase-mapreduce-2.0.4.4.jar completebulkload $output $table

 

注意:

  1. 如果待导入表是新表,一定要进行预分区,否则默认一个region,只有一个reducer,导入很慢,且会Mem Overflow
  2. hbase.hregion.max.filesize,Hfile大小设置,默认10G,超过该大小即拆分
  3. hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily,每个region每个列族bulkload时接受的最大Hfile数,默认32
  4. hbase.loadincremental.validate.hfile,对HFile的格式是否进行检查,默认true,如果确定Hfile没问题,改为false,可加快导入速度
  5. hbase.bulkload.retries.number,默认10,如果Hfile的[startKey,endKey]不被任何一个region[startKey,endKey]包含,则需要进行拆分,这里控制Hfile拆分次数,超出则报错:Retry attempted 10 times without completing, bailing out
    int maxRetries = cfg.getInt("hbase.bulkload.retries.number", 10);
    if (maxRetries != 0 && count >= maxRetries) {
    	LOG.error("Retry attempted " + count + " times without completing, bailing out");
    	return;
    }
    

     

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值