完全批量加载会'copy'存储文件而不是'cut'



我正在使用HBase完全批量加载将ImportTsv的输出传输到HBase中的表中,我注意到它复制输出而不是剪切。对于我的千兆字节数据,这需要很长时间。

在HBase文档(http://hbase.apache.org/book/ops_mgt.html#completebulkload)中,我读到文件将被移动而不是复制。谁能帮我解决这个问题?

我使用 Hbase 0.94.11 和 Hadoop 1.2.1。大容量加载的文件系统输出目录和 HBase 群集也是相同的。

我还使用HFileOutputFormat编写了一个MapReduce作业。当我使用 LoadIncrementalHFiles 将作业的输出移动到 HBase 表时,它仍然复制而不是剪切。

亲切问候

我注意到以下行在区域服务器日志中,这会导致复制而不是剪切:

区域服务器日志

文件 hdfs://master.mydomain/user/cluster/mbe/output/fam/8a6f322894784c9c9802e5b295025ee0 与目标存储不同的文件系统上 - 移动到此文件系统。复制到 dst 文件系统上的临时路径:hdfs://master.mydomain:8020/hbase/MBE/fd9eab14bf12d1b44ea77aa3d1fc1b31/.tmp/d63966b6d5fa487f88426552d1ca43f4已将 hfile hdfs://master.mydomain:8020/hbase/MBE/fd9eab14bf12d1b44ea77aa3d1fc1b31/.tmp/d63966b6d5fa487f88426552d1ca43f4 移动到存储目录 hdfs://master.mydomain:8020/hbase/MBE/fd9eab14bf12d1b44ea77aa3d1fc1b31/fam - 更新存储文件列表。

溶液

这表明源和目标存储文件位于不同的文件系统上,但它们都位于相同的 HDFS 上。

当我使用"hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles hdfs://master.mydomain:8020/user/cluster/mbe/output MBE"

而不是"hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles mbe/output MBE"时,问题已解决。

此问题已使用带有端口号的绝对寻址而不是相对寻址来解决。

有关更多详细信息,请参阅 https://issues.apache.org/jira/browse/HBASE-9537

最新更新