我正在使用HBase进行我的应用程序,我正在尝试使用org.apache.hadoop.hbase.mapreduce.Export
导出数据,因为它是针对here。我在命令中面临的问题是,一旦执行命令,创建导出时就没有错误。但是指定的输出directoy没有出现在它的位置。我使用的命令是
$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export table_name db_dump/
我得到了解决方案因此我回答了我自己的答案
你必须在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/import和hadoop shell commands帮助我的参考文献
希望这个可以帮助你!
正如您所注意到的,HBase导出工具将在HDFS中创建备份,如果您希望将输出写入本地FS,则可以使用文件URI。在您的示例中,它将类似于:
bin/hbase org.apache.hadoop.hbase.mapreduce.Export table_name file:///tmp/db_dump/
与您自己的答案相关,这也可以避免通过HDFS。如果您正在运行这是一个服务器集群,请非常小心,因为每个服务器都会将结果文件写入自己的本地文件系统中。
至少HBase 0.94.6也是如此。
希望这可以帮助
我认为之前的答案需要一些修改:
要将数据从Hbase表导出到本地文件系统:
sudo -u hdfs /usr/bin/hbase org.apache.hadoop.hbase.mapreduce.Export -Dmapred.job.tracker=local "table_name" "file:///backups/"
此命令将以HFile格式转储数据,其中文件数等于Hbase中该表的区域数。