HBASE迁移数据几种方式

一.数据导入HBase中常见方式
数据的来源:
(1)日志
(2)RDBMS
导入的方式:
.使用hbase的api put api(kettle,sqoop)
.使用HBase的API中的Put是最直接的方法,用法也很容易学习。但针对大部分情况,它并非都是最高效的方式。当需要将海量数据在规定时间内载入HBase中时,效率问题体现得尤为明显。待处理的数据量一般都是巨大的,这也许是为何我们选择了HBase而不是其他数据库的原因。在项目开始之前,你就该思考如何将所有能够很好的将数据转移进HBase,否则之后可能面临严重的性能问题。
.使用hbase内置的importtsv或者自定义mr
importtsv是tsv文件直接加载内容到hbase一个内置工具.它运行一个mapReduce job将数据文件直接写到HBase表中,或者写入一个Hbase自带格式数据文件.importtsv将数据直接加载到HBase数据表中.
. bulk load方式快速加载数据量大的数据(非常常用)
Hbase支持bulk load的入库方式,它是利用hbase数据信息按照特定的格式存储在hdfs上,在hdfs上生成持久化的HFile数据格式文件,然后上传到合适的位置.配合mapreduce完成高效便捷,而且不占有region的资源,在大数据写入时能够极大的提高写入的效率,降低了对Hbase节点的写入压力。
1.介绍Hbase自带importtsv工具默认直接加载到Hbase数据库,我们也可先生成Hfile的文件,importtsv源码参考habse-server-0.98.6-hadoop2.jar的org.apache.hadoop.hbase.mapreduce:ImportTsv类
2.通过hbase-importtsv导入数据
准备数据

      select *from company
      into outfile '/usr/local/datas/company.tsv'
      fields terminated by '\t' optionally enclosed by '"'
      escaped by '"'
      lines terminated by '\r\n'
      load data infile '/usr/local/datas/company.tsv'  
into table company 
fields terminated by '\t'  optionally enclosed by '"' escaped by '"'  
lines terminated by '\r\n';

创建hbases表

create namespace 'com'
create 'com.company',{NAME=>'info',VERSIONS=>'1'}

运行hbase自带的importtsv-mr任务向hbase导入数据

#设置环境变量hadoop_classpath
export HBASE_HOME=/opt/modules/hbase-0.98-6-hadoop2
export 
HADOOP_HOME=/opt/modules/hadoop-2.5.0
export 
HADOOP_CLASSPATH=${HBSE_HOME}/bin/hbase mapredcp
##将数据上传至hdfs上
hadoop-2.5.0/bin/hdfs -put /usr/local/datas/company.tsv /user/beifeng/input/company.tsv
##运行hbase自带的importtsv-mr任务向hbase导入数据
hadoop-2.5.0/bin/yarn jar hbase-0.98.6-hadoop2/lib/hbase-server-0.98.6-hadoop2.jar  importtsv \
-Dimporttsv-clumns=HBASE_ROW_KEY,\
info:id,info:deptno,info:name,info:company_id,info:status,info:address
com:company \
/user/beifeng/input/company.tsv
#在hbase shell客户端验证是否成功
count 'com:company'

bulk load 方式快速加载大量数据

# step 0 在hdfs /user/beifeng/input/建立目录准备导入数据
hadoop-2.5.O/bin/hdfs dfs -mkdir -p /user/beifeng/input/tsv
#step 1.将数据上传至hdfs目录上
hadoop-2.5.0/bin/hdfs dfs -put /usr/local/datas/company.tsv /user/beifeng/input/tsv
#step 3 设置hbase_classpath的环境变量
export HBASE_HOME=/opt/modules/hbase-0.98-6-hadoop2
export HADOOP_HOME=/opt/modules/hadoop-2.5.0
export 
HADOOP_CLASSPATH=${HBASE_HOME}/bin/hbase mapredcp

# 2. 使用importtsv工具生成HFile文件(注意:字段个数需要对应,不然不能生成hfile文件)
$ hadoop-2.5.0/bin/yarn jar hbase-0.98.6-hadoop2/lib/hbase-server-0.98.6-hadoop2.jar importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,\
info:id,info:city,info:email,info:name,info:num,info:priority,info:state,info:total_num,info:webAddress \
-Dimporttsv.bulk.output=/user/ubuntu/hbase/hfileoutput \
test:company3 \
/user/ubuntu/datas/company3


# 3. 如果使用importtsv工具生成HFile数据文件,还需要使用hbase自带的MR工具completebulkload来将生成的hfile文件移动到hbase regions对应的hdfs路径,以完成hbase数据的加载。
$ hadoop-2.5.0/bin/yarn jar hbase-0.98.6-hadoop2/lib/hbase-server-0.98.6-hadoop2.jar completebulkload \
/user/ubuntu/hbase/hfileoutput \
test:company3

# 4. 在hbase shell客户端验证导入是否成功
count 'test:company'
55480 row(s) in 2.1610 seconds
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值