Hadoop数据迁移:使用importtsv两步载入数据

importtsv工作:
该工具是HBase提供的一个将HDFS数据转化为HBase数据库数据的一个工具。
其实现过程是,先将HDFS文件转复制并转化为HFile文件,然后将HFile移动并加载成为HBase的数据文件。

两步数据导入:
它是指利用importtsv工具将HDFS数据直接转换为HBase表数据。
该过程分为两步完成,第一步是将HDFS上的数据复制并转化为HFile文件,第二步是将HFile数据移动到HBase数据目录。

当数据量较大时,可以考虑使用两步数据导入的方式。
两步导入时,由于是先生成文件,再复制文件进入HBase表,对于HBase读取的性能影响较小,不会出现较大的读取时间波动。 
两步导入时,时间上要节约三分之二,等于效率提高60%~70%,map的处理时间较短,只有一个reduce。独步导入时,map处理时间较长,没有reduce。
由于hadoop集群在配置时,一般会有较多的最大map数设置,较少的最大reduce数设置,那么这种两步导入方式也在一定程度上提升了hadoop集群并发能力

 

第一步转换HFile文件:
基本命令:hadoop jar /opt/hbase/hbase-0.94.4/hbase-0.94.4.jar importtsv 选项:'-Dimporttsv.separator=,' -Dimporttsv.bulk.output=/hadoop/hfileout -Dimporttsv.columns=HBASE_ROW_KEY,f1:c1,f1:c2,f2:c3  xtab /user/hadoop/in6 '-Dimporttsv.separator=,'表示HDFS数据各列之间使用“,”作为分隔符。
-Dimporttsv.bulk.output=/hadoop/hfileout表示生成HFile文件,其文件路径为/hadoop/hfileout。 -Dimporttsv.columns=HBASE_ROW_KEY,f1:c1,f1:c2,f2:c3  xtab /user/hadoop/in6
表示将源HDFS数据拆分为HBASE_ROW_KEY,f1:c1,f1:c2,f2:c3这四列,xtab表示插入到HBase的目标表,/user/hadoop/in6表示数据在HDFS上的路径。 
第二步加载HFile文件:
$ hadoop jar /opt/hbase/hbase-0.94.4/hbase-0.94.4.jar completebulkload /hadoop/hfileout xtab 它表示将第一步生成的HFile文件/hadoop/hfileout加载到xtab中。 或者使用:
$ hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /hadoop/hfileout xtab 可能会出现异常信息:
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: The value of the hbase.metrics.showTableName conf option has not been specified in SchemaMetrics 则需要使用载入HBase的开发程序载入数据。  示例:
$ hadoop jar /opt/hbase/hbase-0.94.4/hbase-0.94.4.jar importtsv '-Dimporttsv.separator=,'

第一步转换HFile文件:
基本命令:hadoop jar /opt/hbase/hbase-0.94.4/hbase-0.94.4.jar importtsv 选项:'-Dimporttsv.separator=,' -Dimporttsv.bulk.output=/hadoop/hfileout -Dimporttsv.columns=HBASE_ROW_KEY,f1:c1,f1:c2,f2:c3  xtab /user/hadoop/in6 '-Dimporttsv.separator=,'表示HDFS数据各列之间使用“,”作为分隔符。
-Dimporttsv.bulk.output=/hadoop/hfileout表示生成HFile文件,其文件路径为/hadoop/hfileout。 -Dimporttsv.columns=HBASE_ROW_KEY,f1:c1,f1:c2,f2:c3  xtab /user/hadoop/in6
表示将源HDFS数据拆分为HBASE_ROW_KEY,f1:c1,f1:c2,f2:c3这四列,xtab表示插入到HBase的目标表,/user/hadoop/in6表示数据在HDFS上的路径。 
第二步加载HFile文件:
$ hadoop jar /opt/hbase/hbase-0.94.4/hbase-0.94.4.jar completebulkload /hadoop/hfileout xtab 它表示将第一步生成的HFile文件/hadoop/hfileout加载到xtab中。 或者使用:
$ hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /hadoop/hfileout xtab 可能会出现异常信息:
java.util.concurrent.ExecutionException: java.lang.IllegalStateException: The value of the hbase.metrics.showTableName conf option has not been specified in SchemaMetrics 则需要使用载入HBase的开发程序载入数据。  示例:
$ hadoop jar /opt/hbase/hbase-0.94.4/hbase-0.94.4.jar importtsv '-Dimporttsv.separator=,'

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值