一、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的数据迁移常见方式的更多相关文章

  1. 一种HBase表数据迁移方法的优化

    1.背景调研: 目前存在的hbase数据迁移主要分如下几类: 根据上图,可以看出: 其实主要分为两种方式:(1)hadoop层:因为hbase底层是基于hdfs存储的,所以可以通过把hdfs上的数据拷 ...

  2. 关于hbase的数据迁移

    场景: 一套自己编译的Hbase集群 A 一套自己通过cloudera平台搭建的Hbase集群 B 注意:( 我的两套集群是同一个网段的) 方式1:通过快照方式进行数据迁移(不需要提前建表) 1):首 ...

  3. Entity Framework7 入门之全功能.NET版本下使用EF7(含源码)另附数据迁移常见错误处理

    Entity Framework7 入门之全功能.NET(Console, WinForms, WPF等)使用EF7 昨天,我们介绍了EF的新特性和开发计划,如果你还不了解,请移步 Entity Fr ...

  4. 京东云开发者|京东云RDS数据迁移常见场景攻略

    云时代已经来临,云上很多场景下都需要数据的迁移.备份和流转,各大云厂商也大都提供了自己的迁移工具.本文主要介绍京东云数据库为解决用户数据迁移的常见场景所提供的解决方案. 场景一:数据迁移上云 数据迁移 ...

  5. HBase的数据迁移(含HDFS的数据迁移)

    1.启动两个HDFS集群 hadoop0,hadoop1,都是伪分布式的集群 2.启动hadoop3的zookeeper与hbase 注意点:需要开启yarn服务,因为distcp需要yarn. 3. ...

  6. 084 HBase的数据迁移(含HDFS的数据迁移)

    1.查找命令 bin/hadoop 2.启动两个HDFS集群 hadoop0,hadoop1,都是伪分布式的集群 3.启动hadoop3的zookeeper与hbase 注意点:需要开启yarn服务, ...

  7. Hbase snapshot数据迁移

    # 在源集群中创建快照(linux shell) hbase snapshot -t <table_name> -n <snapshot_name> 或(hbase shell ...

  8. EF 数据迁移 常见错误

    1.错误 “LC.exe”已退出,代码为 -1 原因:解决方案出错,而非迁移的项目

  9. springmvc接收json数据的常见方式

    经常使用Ajax异步请求来进行数据传输,传的数据是json数据,json数据又有对象,数组.所有总结下springmvc获取前端传来的json数据方式:1.以RequestParam接收前端传来的是j ...

随机推荐

  1. window下Jira+SQL Server部署+汉化+破解

    网上很多都是jira+mysql部署的文章,由于我现在有需求要用SQL Server数据库,因此就动手试了一下,参考网上许多文章,再加上自己的几次尝试,很快也成功了,分享出来. 全文章节: 一.事前准 ...

  2. Jquery放大镜插件---imgzoom.js(原创)

    Jquery放大镜插件imgzoom能够实现图片放大的功能,便于与原图进行比较. 使用方法: 1.引入jQuery与imgzoom,imgzoom.css <link rel="sty ...

  3. java nio 通道(二)

    本文章来源于我的个人博客: java nio 通道(二) 一,文件通道 文件通道总是堵塞式的,因此不能被置于非堵塞模式. FileChannel对象是线程安全的.多个进程能够在同一个实例上并发调用方法 ...

  4. 拜托,面试请不要再问我TCC分布式事务的实现原理!(转)

    一.写在前面 之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下.很多朋友看了不少文章,还是不知道分布式事务到底怎么回事,在项目里到底如何使用. 所以咱们这篇文章,就 ...

  5. Android笔记之manifestPlaceholders

    有时根据项目需要,AndroidManifest.xml中的meta-data的值分测试和正式 为了能自动地更换meta-data值,就需要用到manifestPlaceholders 语法:mani ...

  6. wprintf、wcout无法输出中文的解决方案

    在C语言中,若wprintf无法输出中文,调用函数setlocale(int category, const char *locale)设置locale即可输出中文 此方法也可用于C++中 例: #i ...

  7. 一步步玩pcDuino3--uboot下的ping,加入命令能够接受来自host的ping

    uboot是一个很优秀的开源项目.不只能够学习bootloader.嵌入式,各种总线协议. 还能够了解网络协议栈.在嵌入式开发中,常常使用uboot的tftp和nfs来加快开发的效率.那么在tftp能 ...

  8. [IR课程笔记]概率检索模型

    几个符号意义: R:相关文档集 NR:不相关文档集 q:用户查询 dj:文档j 1/0风险情况 PRP(probability ranking principle):概率排序原理,利用概率模型来估计每 ...

  9. uni-app 创建的第一个应用

    本人微信公众号:前端修炼之路,欢迎关注 背景介绍 经过上一篇文章uni-app官方教程学习手记的学习之后,我就着手做这个项目了. 目前已经初步搭出了整体的框架,秉着取之于社会,回馈于社会的原则,我将这 ...

  10. Python序列——元组

    元组是什么 1 创建元组 2 访问元组中的值 3 更新元组中的元素 4 删除元组中的元素或者元组本身 元组相关操作 内建函数对元组的支持 1 序列类型函数 2 元组内建函数 元组的特殊性 1. 元组是 ...