如何通过hdfs(hadoop命令)导入/导出hbase数据
我用nutch在Hbase中保存了我的爬网数据,Hbase的文件系统是hdfs。然后,我通过命令将我的数据(一个hbase表)从hdfs直接复制到某个本地目录如何通过hdfs(hadoop命令)导入/导出hbase数据,hadoop,hbase,local-files,Hadoop,Hbase,Local Files,我用nutch在Hbase中保存了我的爬网数据,Hbase的文件系统是hdfs。然后,我通过命令将我的数据(一个hbase表)从hdfs直接复制到某个本地目录 hadoop fs -CopyToLocal /hbase/input ~/Documents/output 之后,我通过以下命令将该数据复制回另一个hbase(其他系统) hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata 它保存在hdfs中,当我在hbase shell
hadoop fs -CopyToLocal /hbase/input ~/Documents/output
之后,我通过以下命令将该数据复制回另一个hbase(其他系统)
hadoop fs -CopyFromLocal ~/Documents/input /hbase/mydata
它保存在hdfs中,当我在hbase shell中使用list
命令时,它会显示为另一个表,即“mydata”,但当我运行scan
命令时,它会显示没有具有“mydata”名称的表
上述程序有什么问题?
简言之:
如果要从一个hbase群集导出表并将其导入另一个群集,请使用以下任一方法: 使用Hadoop
- 出口
$ bin/hadoop jar <path/to/hbase-{version}.jar> export \ <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export \ <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
注意:将hdfs中的输出目录从源集群复制到目标集群$bin/hadoop jar导出\ [ [ []]
- 进口
$ bin/hadoop jar <path/to/hbase-{version}.jar> import <tablename> <inputdir>
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>
$bin/hadoop jar导入
- 出口
$ bin/hadoop jar <path/to/hbase-{version}.jar> export \ <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export \ <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]
$bin/hbase org.apache.hadoop.hbase.mapreduce.Export\ [ [ []]]
- 将hdfs中的输出目录从源集群复制到目标集群
- 进口
$ bin/hadoop jar <path/to/hbase-{version}.jar> import <tablename> <inputdir>
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import <tablename> <inputdir>
参考:$bin/hbase org.apache.hadoop.hbase.mapreduce.Import
- 拍摄表的快照
$./bin/hbase外壳 hbase>快照“myTable”、“myTableSnapshot-122112”
- 导出到所需的文件系统
$./bin/hbase class org.apache.hadoop.hbase.snapshot.ExportSnapshot-snapshot MySnapshot-copy to fs://path\u to\u your\u目录
$ ./bin/hbase shell
hbase> disable 'myTable'
hbase> restore_snapshot 'myTableSnapshot-122112'
参考资料:我想您没有仔细阅读我的问题。我说“我想使用hadoop命令将hbase表复制到本地文件系统”,您告知的信息,将hbase表复制到本地文件系统是什么意思?您始终可以对hdfs中与表相关的文件使用hadoop的copyToLocal命令,但这样做没有用。如果您计划将表复制到另一个群集,则必须使用上述任何方法。即使以上述方式,您也可以我要将导出的文件复制到本地文件系统并将其复制到另一个群集。我要将我的爬网数据备份到外部驱动器(usb硬盘)因此,如果机器出现故障,我可以重建我的集群。或者将来如果我必须采用新版本的og hadoop等,那么我需要它,然后你可以导出并备份它。如果你只是复制与表相关的文件,你就不能用它重建集群。@Nanda-是不是用旧版本的Hadoo完成了
bin/hadoop
选项可能是p/Hbase?在现代Hbase(至少0.96)中,没有一个主jar,也没有类似于Hbase-{version}.jar
的jar。而且提供的jar似乎都希望将类名作为第一个参数,而不仅仅是export
。