Sha*_*fiq 9 hadoop hbase local-files
我已经在Hbase中保存了我的已爬网数据,其文件系统是hdfs.然后我通过命令将我的数据(一个hbase表)从hdfs直接复制到一些本地目录
hadoop fs -CopyToLocal /hbase/input ~/Documents/output
Run Code Online (Sandbox Code Playgroud)
之后,我通过以下命令将该数据复制回另一个hbase(其他系统)
hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata
Run Code Online (Sandbox Code Playgroud)
它保存在hdfs中,当我list在hbase shell中使用命令时,它将其显示为另一个表即'mydata',但是当我运行scan命令时,它表示没有带有'mydata'名称的表.
上述程序有什么问题?简单来说:
Nan*_*nda 21
如果要从一个hbase集群导出表并将其导入另一个,请使用以下任一方法:
使用Hadoop
出口
$ bin/hadoop jar <path/to/hbase-{version}.jar> export \
<tablename> <outputdir> [<versions> [<starttime> [<endtime>]]
Run Code Online (Sandbox Code Playgroud)
注意:将hdfs中的输出目录从源复制到目标集群
进口
$ bin/hadoop jar <path/to/hbase-{version}.jar> import <tablename> <inputdir>
Run Code Online (Sandbox Code Playgroud)注意:outputdir和inputdir都在hdfs中.
使用Hbase
出口
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export \
<tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
Run Code Online (Sandbox Code Playgroud)将hdfs中的输出目录从源复制到目标集群
进口
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>
Run Code Online (Sandbox Code Playgroud)
参考:Hbase工具导出和导入
如果您可以使用 Hbase 命令来备份 hbase 表,您可以使用 Hbase ExportSnapshot 工具,该工具使用 map reduce 作业将 hfiles、日志和快照元数据复制到其他文件系统(local/hdfs/s3)。
对表进行快照
$ ./bin/hbase shell
hbase> snapshot 'myTable', 'myTableSnapshot-122112'
导出到所需的文件系统
$ ./bin/hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot MySnapshot -copy-to fs://path_to_your_directory
您可以将其从本地文件系统导出回 hdfs:///srv2:8082/hbase 并从 hbase shell 运行 restore 命令以从快照中恢复表。
$ ./bin/hbase shell
hbase> disable 'myTable'
hbase> restore_snapshot 'myTableSnapshot-122112'
Run Code Online (Sandbox Code Playgroud)
参考:Hbase 快照
| 归档时间: |
|
| 查看次数: |
38560 次 |
| 最近记录: |