HBase导出/导入:无法找到输出目录

问题描述 投票:1回答:3

我正在使用HBase进行我的应用程序,我正在尝试使用org.apache.hadoop.hbase.mapreduce.Export导出数据,因为它是针对here。我在命令中面临的问题是,一旦执行命令,创建导出时就没有错误。但是指定的输出directoy没有出现在它的位置。我使用的命令是

$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export table_name db_dump/
import hadoop export hbase
3个回答
2
投票

我得到了解决方案因此我回答了我自己的答案

你必须在hadoop的conf目录中的hadoop-env.sh中有两行

export HBASE_HOME=/home/sitepulsedev/hbase/hbase-0.90.4
export HADOOP_CLASSPATH=$HBASE_HOME/hbase-0.90.4.jar:$HBASE_HOME/conf:$HBASE_HOME/hbase-0.90.4-test.jar:$HBASE_HOME/lib/zookeeper-3.3.2.jar:$HBASE_HOME

保存并重新启动./stop-mapred.sh和./start-mapred.sh

现在在hadoop的bin目录中运行

./hadoop  jar  ~/hbase/hbase-0.90.4/hbase-0.90.4.jar export your_table /export/your_table

现在您可以通过点击来验证转储

./hadoop fs -ls /export

最后,您需要将整个内容复制到运行的本地文件系统中

./hadoop fs -copyToLocal /export/your_table ~/local_dump/your_table

这里是帮助我在export/importhadoop shell commands帮助我的参考文献

希望这个可以帮助你!


1
投票

正如您所注意到的,HBase导出工具将在HDFS中创建备份,如果您希望将输出写入本地FS,则可以使用文件URI。在您的示例中,它将类似于:

bin/hbase org.apache.hadoop.hbase.mapreduce.Export table_name file:///tmp/db_dump/

与您自己的答案相关,这也可以避免通过HDFS。如果您正在运行这是一个服务器集群,请非常小心,因为每个服务器都会将结果文件写入自己的本地文件系统中。

至少HBase 0.94.6也是如此。

希望这可以帮助


0
投票

我认为之前的答案需要一些修改:

  • 平台:AWS EC2,
  • AS:亚马逊列宁
  • Hbase版本:0.96.1.1
  • Hadoop发行版:Cloudera CDH5.0.1
  • MR发动机:MRv1

要将数据从Hbase表导出到本地文件系统:

sudo -u hdfs /usr/bin/hbase org.apache.hadoop.hbase.mapreduce.Export -Dmapred.job.tracker=local "table_name" "file:///backups/"

此命令将以HFile格式转储数据,其中文件数等于Hbase中该表的区域数。

© www.soinside.com 2019 - 2024. All rights reserved.