Hbase导入导出数据(百万级条数据)步骤

导出

通过Export导出数据到目标集群的hdfs,再在目标集群执行import导入数据,Export支持指定开始时间和结束时间,因此可以做增量备份,Export工具参数如下:

可见,在导出时可以指定version,starttime,endtime等参数,并且可以通过-D指定是否压缩,指定caching等属性。

Export导出工具与CopyTable一样是依赖hbase的scan读取数据,并且采用的InportFormat与CopyTable一样是TableInputFormat类,从该类的getSplits()方法可以看出MR的map数与hbase表的region数相同。

一,准备工作
student的表结构如下:
在这里插入图片描述
启动的节点:
在这里插入图片描述
二,导出表
我们执行导出命令:
在这里插入图片描述
成功!
在这里插入图片描述
因为我们的目标路径是存储在hdfs里面的,所以我们这点一点要注意,在本地磁盘下面是找不到的。
在这里插入图片描述
在这里插入图片描述

我们也可以通过命令来查看文件:
在这里插入图片描述
接着我们把hdfs里面导出的表,给复制到本地磁盘下面去。
在这里插入图片描述
查看:
在这里插入图片描述
三,导入表
先将备份的表,导入到hdfs中,利用hadoop dfs -put localFile hdfsFile命令
在这里插入图片描述
导入成功:
在这里插入图片描述
创建表:
在这里插入图片描述
导入数据
在这里插入图片描述
成功
在这里插入图片描述
查看数据:
在这里插入图片描述
四,备份百万级条数据
在这里插入图片描述
导出导入都是一样的步骤,只不过就是数据量很大的时候,会导出导入很慢,尤其是导入。
在这里插入图片描述
我导入数据的时候,都导入了十分钟,也许是我的电脑的内存很慢。
但是我看了下别的大佬的Hbase导入导出表的博客,发现会出现一个问题:
导出user表,接近18万条记录:

/hbs/hbase-1.0.3/bin/hbase org.apache.hadoop.hbase.mapreduce.Export harve_user /hdfs/data_back/harve_user_back

在这里插入图片描述
在这里插入图片描述
导出失败了,查看hdfs中的内容也是空的:

在这里插入图片描述

失败原因:

在这里插入图片描述

2017-06-19 15:41:21,996 INFO [main] mapreduce.Job: Task Id : attempt_1492400325003_0004_m_000002_2, Status : FAILED

Container [pid=126946,containerID=container_1492400325003_0004_01_000020] is running beyond virtual memory limits. Current usage: 162.1 MB of 1 GB physical memory used; 2.1 GB of 2.1 GB virtual memory used. Killing container.

机上运行的Container试图使用过多的内存,而被NodeManager kill掉了。

该错误是YARN的虚拟内存计算方式导致,上例中用户程序申请的内存为1Gb,YARN根据此值乘以一个比例(默认为2.1)得出申请的虚拟内存的值,当YARN计算的用户程序所需虚拟内存值大于计算出来的值时,就会报出以上错误。调节比例值可以解决该问题。

解决方法:mapred-site.xml中设置map和reduce任务的内存配置如下:(value中实际配置的内存需要根据自己机器内存大小及应用情况进行修改)

mapreduce.map.memory.mb 1536 mapreduce.map.java.opts -Xmx1024M mapreduce.reduce.memory.mb 3072 mapreduce.reduce.java.opts -Xmx2560M

MapReduce作业配置参数
可在客户端的mapred-site.xml中配置,作为MapReduce作业的缺省配置参数。也可以在作业提交时,个性化指定这些参数

在这里插入图片描述
修改配置文件重启后再次执行,成功:
在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值