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

时间:2012-01-02 10:51:22

标签: import hadoop export hbase

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

$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export table_name db_dump/

3 个答案:

答案 0 :(得分: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

的mapred

现在在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 :(得分:1)

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

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

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

至少对HBase 0.94.6来说是这样。

希望这有帮助

答案 2 :(得分:0)

我认为之前的回答需要进行一些修改:

  • 平台:AWS EC2,
  • 操作系统:亚马逊Linux
  • 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中该表的区域数。