2.11-2.12 HBase的数据迁移常见方式
一、importtsv
把hdfs中数据抽取到HBase表中;
1、准备数据
##student.tsv
[root@hadoop-senior datas]# cat student.tsv
10001 zhangsan 35 male beijing 0109876543
10002 lisi 32 male shanghia 0109876563
10003 zhaoliu 35 female hangzhou 01098346543
10004 qianqi 35 male shenzhen 01098732543 ##
[root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -mkdir -p /user/root/hbase/importtsv
[root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -put /opt/datas/student.tsv /user/root/hbase/importtsv ##创建HBase表
hbase(main):005:0> create 'student', 'info'
0 row(s) in 0.1530 seconds => Hbase::Table - student
2、执行
##执行,下列命令全部执行
export HBASE_HOME=/opt/modules/hbase-0.98.6-hadoop2
export HADOOP_HOME=/opt/modules/hadoop-2.5.0
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf \
${HADOOP_HOME}/bin/yarn jar \
${HBASE_HOME}/lib/hbase-server-0.98.6-hadoop2.jar importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,\
info:name,info:age,info:sex,info:address,info:phone \
student \
hdfs://hadoop-senior.ibeifeng.com:8020/user/root/hbase/importtsv ##查看结果
hbase(main):006:0> scan 'student'
ROW COLUMN+CELL
10001 column=info:address, timestamp=1558594471571, value=beijing
10001 column=info:age, timestamp=1558594471571, value=35
10001 column=info:name, timestamp=1558594471571, value=zhangsan
10001 column=info:phone, timestamp=1558594471571, value=0109876543
10001 column=info:sex, timestamp=1558594471571, value=male
10002 column=info:address, timestamp=1558594471571, value=shanghia
10002 column=info:age, timestamp=1558594471571, value=32
10002 column=info:name, timestamp=1558594471571, value=lisi
10002 column=info:phone, timestamp=1558594471571, value=0109876563
10002 column=info:sex, timestamp=1558594471571, value=male
10003 column=info:address, timestamp=1558594471571, value=hangzhou
10003 column=info:age, timestamp=1558594471571, value=35
10003 column=info:name, timestamp=1558594471571, value=zhaoliu
10003 column=info:phone, timestamp=1558594471571, value=01098346543
10003 column=info:sex, timestamp=1558594471571, value=female
10004 column=info:address, timestamp=1558594471571, value=shenzhen
10004 column=info:age, timestamp=1558594471571, value=35
10004 column=info:name, timestamp=1558594471571, value=qianqi
10004 column=info:phone, timestamp=1558594471571, value=01098732543
10004 column=info:sex, timestamp=1558594471571, value=male
二、bulk load
1、bulk load
HBase支持bulk load的入库方式,它是利用hbase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,
然后上传至合适位置,即完成巨量数据快速入库的办法。配合mapreduce完成,高效便捷,而且不占用region资源,增添负载,在大数据量写入时能
极大的提高写入效率,并降低对HBase节点的写入压力。 通过使用先生成HFile,然后再BulkLoad到Hbase的方式来替代之前直接调用HTableOutputFormat的方法有如下的好处:
(1)消除了对HBase集群的插入压力
(2)提高了Job的运行速度,降低了Job的执行时间
2、生成HFile
##建表
hbase(main):007:0> create 'student2', 'info'
0 row(s) in 0.1320 seconds
=> Hbase::Table - student2 ##生成Hfile
export HBASE_HOME=/opt/modules/hbase-0.98.6-hadoop2
export HADOOP_HOME=/opt/modules/hadoop-2.5.0
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf \
${HADOOP_HOME}/bin/yarn jar \
${HBASE_HOME}/lib/hbase-server-0.98.6-hadoop2.jar importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,\
info:name,info:age,info:sex,info:address,info:phone \
-Dimporttsv.bulk.output=hdfs://hadoop-senior.ibeifeng.com:8020/user/root/hbase/hfileoutput \
student2 \
hdfs://hadoop-senior.ibeifeng.com:8020/user/root/hbase/importtsv ##查看
[root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -ls /user/root/hbase/hfileoutput/info
Found 1 items
-rw-r--r-- 1 root supergroup 1888 2019-05-24 13:31 /user/root/hbase/hfileoutput/info/8c28c6c654bc4fe2aa2c32ef54480771
2、将数据导入进表student2
##导数据
export HBASE_HOME=/opt/modules/hbase-0.98.6-hadoop2
export HADOOP_HOME=/opt/modules/hadoop-2.5.0
HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp`:${HBASE_HOME}/conf \
${HADOOP_HOME}/bin/yarn jar \
${HBASE_HOME}/lib/hbase-server-0.98.6-hadoop2.jar \
completebulkload \
hdfs://hadoop-senior.ibeifeng.com:8020/user/root/hbase/hfileoutput \
student2 ##scan student2
hbase(main):008:0> scan 'student2'
ROW COLUMN+CELL
10001 column=info:address, timestamp=1558675878109, value=beijing
10001 column=info:age, timestamp=1558675878109, value=35
10001 column=info:name, timestamp=1558675878109, value=zhangsan
10001 column=info:phone, timestamp=1558675878109, value=0109876543
10001 column=info:sex, timestamp=1558675878109, value=male
10002 column=info:address, timestamp=1558675878109, value=shanghia
10002 column=info:age, timestamp=1558675878109, value=32
10002 column=info:name, timestamp=1558675878109, value=lisi
10002 column=info:phone, timestamp=1558675878109, value=0109876563
10002 column=info:sex, timestamp=1558675878109, value=male
10003 column=info:address, timestamp=1558675878109, value=hangzhou
10003 column=info:age, timestamp=1558675878109, value=35
10003 column=info:name, timestamp=1558675878109, value=zhaoliu
10003 column=info:phone, timestamp=1558675878109, value=01098346543
10003 column=info:sex, timestamp=1558675878109, value=female
10004 column=info:address, timestamp=1558675878109, value=shenzhen
10004 column=info:age, timestamp=1558675878109, value=35
10004 column=info:name, timestamp=1558675878109, value=qianqi
10004 column=info:phone, timestamp=1558675878109, value=01098732543
10004 column=info:sex, timestamp=1558675878109, value=male
4 row(s) in 0.0420 seconds
3、在MapReduce中生成HFile文件
2.11-2.12 HBase的数据迁移常见方式的更多相关文章
- 一种HBase表数据迁移方法的优化
1.背景调研: 目前存在的hbase数据迁移主要分如下几类: 根据上图,可以看出: 其实主要分为两种方式:(1)hadoop层:因为hbase底层是基于hdfs存储的,所以可以通过把hdfs上的数据拷 ...
- 关于hbase的数据迁移
场景: 一套自己编译的Hbase集群 A 一套自己通过cloudera平台搭建的Hbase集群 B 注意:( 我的两套集群是同一个网段的) 方式1:通过快照方式进行数据迁移(不需要提前建表) 1):首 ...
- Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理
Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7 昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Fr ...
- 京东云开发者|京东云RDS数据迁移常见场景攻略
云时代已经来临,云上很多场景下都需要数据的迁移.备份和流转,各大云厂商也大都提供了自己的迁移工具.本文主要介绍京东云数据库为解决用户数据迁移的常见场景所提供的解决方案. 场景一:数据迁移上云 数据迁移 ...
- HBase的数据迁移(含HDFS的数据迁移)
1.启动两个HDFS集群 hadoop0,hadoop1,都是伪分布式的集群 2.启动hadoop3的zookeeper与hbase 注意点:需要开启yarn服务,因为distcp需要yarn. 3. ...
- 084 HBase的数据迁移(含HDFS的数据迁移)
1.查找命令 bin/hadoop 2.启动两个HDFS集群 hadoop0,hadoop1,都是伪分布式的集群 3.启动hadoop3的zookeeper与hbase 注意点:需要开启yarn服务, ...
- Hbase snapshot数据迁移
# 在源集群中创建快照(linux shell) hbase snapshot -t <table_name> -n <snapshot_name> 或(hbase shell ...
- EF 数据迁移 常见错误
1.错误 “LC.exe”已退出,代码为 -1 原因:解决方案出错,而非迁移的项目
- springmvc接收json数据的常见方式
经常使用Ajax异步请求来进行数据传输,传的数据是json数据,json数据又有对象,数组.所有总结下springmvc获取前端传来的json数据方式:1.以RequestParam接收前端传来的是j ...
随机推荐
- Node.js Express 框架 Express
Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...
- Android pull to Refresh 导入出错?
今天在导入 PuultoResfresh 的时候老是出错. error: [2014-09-28 10:04:44 - library] Unable to resolve target 'andro ...
- 【每日Scrum】第一天(4.11) TD学生助手Sprint1计划会议成果
[每日Scrum]第一天 TD学生助手Sprint1计划会议成果 ——小组成员:刘铸辉 刘静 何晓楠 谢凤娇 胡宝月 王洪叶 初次尝试敏捷开发Scrum计划流程开发项目,有什么不对的地方还希望各位大 ...
- vs2012停止调试长时间不响应问题解决方法
在vs2012命令提示符下,运行devenv.exe /resetuserdata又一次设置下环境解决.
- android中的常见对话框
在android中对话框是一种常见的操作,常见的对话框有下面几种: 以下是xml布局文件: <LinearLayout xmlns:android="http://schemas.an ...
- shell grep正则匹配汉字
Shell grep正则匹配中文 测试文本 demo_exe.c,内容如下,需要注意保存的编码格式,对输出到终端有影响: 我们中文操作系统ASNI默认是GBK的. #include<stdio. ...
- 福昕熊雨前:PDFium开源项目的背后
今天编译android的时候,无意中看到命令行提示出输出编译external/pdfium这个目录,于是乎上百度搜索了一下,找到了如下关于PDF文件解析的开源代码的文章: http://www.csd ...
- 已迁移到http://www.coffin5257.com
点我直达
- 几篇QEMU/KVM代码分析文章
QEMU/KVM结合起来分析的几篇文章,代码跟最新的版本有些差异,但大体逻辑一样,写得通俗易懂.我把链接放这里主要是为自己需要查看时调转过去方便,感谢作者的付出! QEMU Source Code S ...
- POJ 1195 Mobile phones (二维树状数组)
Description Suppose that the fourth generation mobile phone base stations in the Tampere area operat ...