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 ...
随机推荐
- grep man 有删减 百科
NAME grep, egrep, fgrep, rgrep - print lines matching a pattern SYNOPSIS grep [OPTIONS] PATTERN [FIL ...
- 如何与强势的人相处zz
要和强势的人相处良好,须知道强势的人有两个很显著的特点:一.以自我观点为中心.二.怕别人否定自己.强势的主要作用也有两个:一.支配别人.二.掩盖自卑. 首先,要区分一下强势的人和特立独行的人,这两类人 ...
- java模拟而一个电话本操作
哈哈.大家平时都在使用电话本.以下使用java来模拟而一个简单的电话本吧... 首先给出联系人的抽象类 package net.itaem.po; /** * * 电话人的信息 * */ public ...
- kubernetes之常见故障排除(一)
系列目录 由由种种原因,在安装或者使用kubernetes的过程中,可能会遇到各种各样的问题.本篇按照官网的介绍罗列出一些常见的故障,以帮助快速解决一些常见的错误. 安装赛程中出现ebtables o ...
- 关于 angular cookie 设置的坑
初识Angular,才知道掉进了这么一个各种大坑的坑. 先说下对于$cookie.put 这几个方法,只有1.4以上版本才可以用,其余低于版本请使用 $cookieStore: 下面举例下使用方法: ...
- JavaScript读书笔记(2)--数据类型
1. 严格模式:在javascript中定义了一种不同的解析与执行模型.在严格模式下,一些不确定的行为将得到处理,对某些不安全的操作也会抛出错误. 用法是在脚本中添加:”use strict”; 这 ...
- 五、Web框架基础(2)
Tornado 异步协程编程.(其实是异步IO而非真正的异步,从内核拷贝到用户空间的过程还是同步的) 适合用户量大.高并发,如抢票.网页游戏.在线聊天等场景:或大量HTTP持久连接,通过单TCP持久连 ...
- Cocos2d-x3.1FileUtilsTest使用
Cocos2d-x3.1中FileUtils的使用:本使用教程是基于HelloWorld的.仅仅需在HelloWorld的init()函数中加入例如以下代码 //头文件 #include " ...
- jQuery 给div绑定单击事件
说明:这篇随笔介绍的是怎么给div添加单击(click)事件.不再废话 直接看代码 <%@ Page Language="C#" AutoEventWireup=" ...
- ChannelHandler揭秘(Netty源码死磕5)
精进篇:netty源码死磕5 揭开 ChannelHandler 的神秘面纱 目录 1. 前言 2. Handler在经典Reactor中的角色 3. Handler在Netty中的坐标位置 4. ...