HBase备份之导入导出

我们在上一篇文章《HBase复制》中讲述了如何建立主/从集群,实现数据的实时备份。但是,HBase复制只对设置好复制以后的数据生效,也即,配置好复制之后插入HBase主集群的数据才能同步复制到HBase从集群中,而对之前的历史数据,采用HBase复制这种办法是无能为力的。本文介绍如何使用HBase的导入导出功能来实现历史数据的备份。

1)将HBase表数据导出到hdfs的一个指定目录中,具体命令如下:

$ cd $HBASE_HOME/
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export test_table /data/test_table

其中,$HBASE_HOME为HBase主目录,test_table为要导出的表名,/data/test_table为hdfs中的目录地址。

执行结果太长,这里截取最后一部分,如下所示:

2014-08-11 16:49:44,484 INFO  [main] mapreduce.Job: Running job: job_1407491918245_0021
2014-08-11 16:49:51,658 INFO  [main] mapreduce.Job: Job job_1407491918245_0021 running in uber mode : false
2014-08-11 16:49:51,659 INFO  [main] mapreduce.Job:  map 0% reduce 0%
2014-08-11 16:49:57,706 INFO  [main] mapreduce.Job:  map 100% reduce 0%
2014-08-11 16:49:57,715 INFO  [main] mapreduce.Job: Job job_1407491918245_0021 completed successfully
2014-08-11 16:49:57,789 INFO  [main] mapreduce.Job: Counters: 37
	File System Counters
		FILE: Number of bytes read=0
		FILE: Number of bytes written=118223
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=84
		HDFS: Number of bytes written=243
		HDFS: Number of read operations=4
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=2
	Job Counters
		Launched map tasks=1
		Rack-local map tasks=1
		Total time spent by all maps in occupied slots (ms)=9152
		Total time spent by all reduces in occupied slots (ms)=0
	Map-Reduce Framework
		Map input records=3
		Map output records=3
		Input split bytes=84
		Spilled Records=0
		Failed Shuffles=0
		Merged Map outputs=0
		GC time elapsed (ms)=201
		CPU time spent (ms)=5210
		Physical memory (bytes) snapshot=377470976
		Virtual memory (bytes) snapshot=1863364608
		Total committed heap usage (bytes)=1029177344
	HBase Counters
		BYTES_IN_REMOTE_RESULTS=87
		BYTES_IN_RESULTS=87
		MILLIS_BETWEEN_NEXTS=444
		NOT_SERVING_REGION_EXCEPTION=0
		NUM_SCANNER_RESTARTS=0
		REGIONS_SCANNED=1
		REMOTE_RPC_CALLS=3
		REMOTE_RPC_RETRIES=0
		RPC_CALLS=3
		RPC_RETRIES=0
	File Input Format Counters
		Bytes Read=0
	File Output Format Counters
		Bytes Written=243

查看以下指定的导出目录,命令如下:

$ cd $HADOOP_HOME/
$ bin/hadoop fs -ls /data/test_table

其中$HADOOP_HOME为hadoop的主目录。结果如下:

Found 2 items
-rw-r--r--   3 hbase supergroup          0 2014-08-11 16:49 /data/test_table/_SUCCESS
-rw-r--r--   3 hbase supergroup        243 2014-08-11 16:49 /data/test_table/part-m-00000

执行以下hbase shell命令,查看以下test_table表中的数据:

$ cd $HBASE_HOME/
$ bin/hbase shell
2014-08-11 17:05:52,589 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.2-hadoop2, r1591526, Wed Apr 30 20:17:33 PDT 2014

hbase(main):001:0> describe 'test_table'
DESCRIPTION                                                                                                                               ENABLED
 'test_table', {NAME => 'cf', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '1', COMPRESSION => 'NONE', VERSIONS => true
  '1', TTL => '2147483647', MIN_VERSIONS => '0', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE =>
  'true'}
1 row(s) in 1.3400 seconds

hbase(main):002:0> scan 'test_table'
ROW                                                    COLUMN+CELL
 r1                                                    column=cf:q1, timestamp=1406788229440, value=va1
 r2                                                    column=cf:q1, timestamp=1406788265646, value=va2
 r3                                                    column=cf:q1, timestamp=1406788474301, value=va3
3 row(s) in 0.0560 seconds

至此,HBase表数据导出结束。接下来开始导入工作。

2)将导出到hdfs中的数据导入到hbase创建好的表中。注意,该表可以和之前的表不同名,但模式一定要相同。我们领取一个名字,使用test_copy这个表名。创建表的命令如下:

$ cd $HBASE_HOME/
$ bin/hbase shell
2014-08-11 17:05:52,589 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.2-hadoop2, r1591526, Wed Apr 30 20:17:33 PDT 2014

hbase(main):001:0> create 'test_copy', 'cf'
0 row(s) in 1.1980 seconds

=> Hbase::Table - test_copy

接下来,执行导入命令。具体的命令如下:

$ cd $HBASE_HOME/
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import test_copy hdfs://l-master.data/data/test_table

其中,test_copy为我们想要导入的表名。而hdfs://l-master.data/data/test_table为master集群的hdfs中,我们之前将test_table表导出hdfs的全路径。

导入命令执行的结果如下,因为结果很长,所以取最后一部分:

2014-08-11 17:13:08,706 INFO  [main] mapreduce.Job:  map 100% reduce 0%
2014-08-11 17:13:08,710 INFO  [main] mapreduce.Job: Job job_1407728839061_0014 completed successfully
2014-08-11 17:13:08,715 INFO  [main] mapreduce.Job: Counters: 27
	File System Counters
		FILE: Number of bytes read=0
		FILE: Number of bytes written=117256
		FILE: Number of read operations=0
		FILE: Number of large read operations=0
		FILE: Number of write operations=0
		HDFS: Number of bytes read=356
		HDFS: Number of bytes written=0
		HDFS: Number of read operations=3
		HDFS: Number of large read operations=0
		HDFS: Number of write operations=0
	Job Counters
		Launched map tasks=1
		Rack-local map tasks=1
		Total time spent by all maps in occupied slots (ms)=6510
		Total time spent by all reduces in occupied slots (ms)=0
	Map-Reduce Framework
		Map input records=3
		Map output records=3
		Input split bytes=113
		Spilled Records=0
		Failed Shuffles=0
		Merged Map outputs=0
		GC time elapsed (ms)=21
		CPU time spent (ms)=1110
		Physical memory (bytes) snapshot=379494400
		Virtual memory (bytes) snapshot=1855762432
		Total committed heap usage (bytes)=1029177344
	File Input Format Counters
		Bytes Read=243
	File Output Format Counters
		Bytes Written=0

接下来,我们看看从集群test_copy表中的数据是否和主集群test_table表的数据一致,执行hbase shell命令:

$ cd $HBASE_HOME/
$ bin/hbase shell
2014-08-11 17:15:52,117 INFO  [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.2-hadoop2, r1591526, Wed Apr 30 20:17:33 PDT 2014

hbase(main):001:0> scan 'test_copy'
ROW                                                    COLUMN+CELL
 r1                                                    column=cf:q1, timestamp=1406788229440, value=va1
 r2                                                    column=cf:q1, timestamp=1406788265646, value=va2
 r3                                                    column=cf:q1, timestamp=1406788474301, value=va3
3 row(s) in 0.3640 seconds

对照后,就可以发现,两个表的数据是完全一致的。

转载请注明出处:http://blog.csdn.net/iAm333

HBase备份之导入导出

时间: 2024-11-05 22:07:31

HBase备份之导入导出的相关文章

统计信息的备份恢复导入导出

Question:  I want to understand when to export and import by dbms_stats statistics and learn when it is a good idea to export and import statistics. Answer:  Importing and exporting statistics for the CBO and the systems stats (external system statis

5.非关系型数据库(Nosql)之mongodb:创建集合,备份与导入导出, 数据还原,导入导出

 1 固定集合 固定集合值得是事先创建而且大小固定的集合 2 固定集合的特征:固定集合很像环形队列,如果空间不足,最早文档就会被删除,为新的文档腾出空间.一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制. 3 创建固定集合使用命令: db.createCollection("collectionName",{capped:true,size:100000,max:100}); size:指定集合大小,单位为KB,max指定文档的数量 当指定文档数量上限时,

Aruba AC如何通过CLI备份及导入导出

通过CLI登录Aruba AC.Aruba AC是通过SSH加密的,因此建议使用PUTTY或者Xshell等支持SSH的终端工具.导入导出需要使用到tftp server,请先与本地建立tftp server. 1.配置文档备份 备份之前,先通过show boot查看默认运行文档,通过dir查看默认文档大小,如下图为12718 (Aruba3600) #copy startup-config tftp:192.168.0.1 startup-config20170418 此命令,即可将配置导出至

Linux系统Mysql备份的导入导出

Mysql 备份 如果您使用的是帮助中心的一键环境配置,mysql的安装目录是/alidata/server/mysql,如果您将mysql安装到其他目录,您需要输入您mysql完整的安装路径. 单库备份您可以在服务器上执行/alidata/server/mysql/bin/mysqldump -uroot -p密码 数据库名 > 备份名称.sql mysqldump默认不会导出事件表,执行此命令会出现警告-- Warning: Skipping the data of table mysql.

HBase数据的导入导出

1.导出: hbase org.apache.hadoop.hbase.mapreduce.Driver export 表名 导出存放路径 其中数据文件位置可为本地文件目录,也可以分布式文件系统hdfs的路径. 当其为前者时,直接指定即可,也可以加前缀file:/// 而当其为后者时,必须明确指明hdfs的路径,例如hdfs://192.168.1.200:9000/path 2.导入: hbase org.apache.hadoop.hbase.mapreduce.Driver import

数据库备份,导入导出操作

1.导出数据库:mysqldump -uroot -pdbpassword dbname>test.sql,需要注意的是不需要进入mysql再使用该命令. 例如:mysqldump -uroot -p*** servletdemo>test.sql 2.导出数据库中的某张表的结构:mysqldump -uroot -pdbpasswd -d dbname 表名>test.sql; 例如:mysqldump -uroot -p*** -d servletdemo task>db.sq

HBase备份之ExportSnapshot或CopyTable

文章<HBase备份之导入导出>介绍了使用HBase的自带工具Export和Import来实现在主集群和从集群之间拷贝表的目的.本篇介绍一种相比导入导出而言,更快速的一种备份办法.即ExportSnapshot. 1.ExportSnapshot 和Export类似,ExportSnapshot也是使用MapReduce方式来进行表的拷贝.不过和Export不同,ExportSnapshot导出的是表的快照.我们可以使用ExportSnapshot将表的快照数据先导出到从集群,然后再从集群中使

Mysql 导入导出,备份和恢复

导入/出,备份/恢复 导入/导出 备份/恢复 数据备份和恢复 参考:http://www.mysqltutorial.org/mysql-copy-database/ 参考:http://www.mysqltutorial.org/how-to-backup-database-using-mysqldump.aspx  mysqldump命令的详细介绍,包括参数的使用. 备份 mysqldump -u root -p 数据库名 > 路径/xxx.sql ??>代表export 恢复 连接mys

HBase数据的导入和导出

查阅了几篇中英文资料,发现有的地方说的不是很全部,总结在此,共有两种命令行的方式来实现数据的导入导出功能,即备份和还原. 1 HBase本身提供的接口 其调用形式为: 1)导入 ./hbase org.apache.hadoop.hbase.mapreduce.Driver import 表名    数据文件位置 其中数据文件位置可为本地文件目录,也可以分布式文件系统hdfs的路径. 当其为前者时,直接指定即可,也可以加前缀file:/// 而当其伟后者时,必须明确指明hdfs的路径,例如hdf