【问题标题】:completebulkload does 'copy' StoreFiles instead of 'cut'completebulkload 会“复制”StoreFiles 而不是“剪切”
【发布时间】:2013-09-15 07:26:19
【问题描述】:
我使用 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 表时,它仍然是复制而不是剪切。
亲切的问候
【问题讨论】:
标签:
hadoop
mapreduce
hbase
hdfs
【解决方案1】:
我注意到 Region server 日志中有以下几行,这导致复制而不是剪切:
区域服务器日志
文件 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 - 更新存储文件列表。 p>
解决方案
这表明源和目标存储文件在不同的文件系统上,但它们都在同一个 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