completebulkload'复制'StoreFiles而不是'cut'

时间:2013-09-15 07:26:19

标签: hadoop mapreduce hbase hdfs

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

在HBase文档(http://hbase.apache.org/book/ops_mgt.html#completebulkload)中,我读到文件将被移动而不被复制。任何人都可以帮我这个吗?

我使用Hbase 0.94.11和Hadoop 1.2.1。 bulkload的文件系统 输出目录和hbase集群也是一样的。

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

亲切的问候

1 个答案:

答案 0 :(得分:1)

我注意到以下行位于Region服务器日志中,导致复制而不是剪切:

区域服务器日志

文件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