了解 htfp url 和 hdfs 路径之间的区别

Understanding the difference between htfp urls and hdfs path

这种差异是在周末出现的,当时我试图通过 hftp 在不同的集群(物理上分开的房间)之间传输大量数据,方法是

hadoop distcp hftp-path-src hftp-path-dst

hftp url 类似于 hftp://node:50070/more/path

在某些文件上中途失败。日志说

Unhandled internal error. Vertex failed, vertexName=scope-152 ...

我手动检查了这些文件,没有发现任何可疑之处。我还尝试了以下愚蠢的 Pig 脚本,看看它是否能让我感到惊讶

data = LOAD '$src_hftp' USING PigStorage('\t', '-schema');
STORE data INTO '$dst_hftp' USING PigStorage('\t', '-schema');

,消息惨败

"...DAG did not succeed due to VERTEX_FAILURE"

现在怎么样

hadoop distcp hdfs-path-src hdfs-path-dst

hdfs-path 类似于 hdfs://namenode:8020/more/path

它运行良好。什么?为什么?

非常感谢。

===========================================

针对@rahulbmv 的回答,我确实尝试了

hadoop distcp hftp-path-src hdfs-path-dst

它在中途也失败了,我可以在 dst HDFS 上看到一些传输的文件,其他的丢失了。所以我认为这无关紧要。我提到的参考是 http://www.cloudera.com/documentation/archive/cdh/4-x/4-7-1/CDH4-Installation-Guide/cdh4ig_topic_7_2.html.

我也尝试登录 dst namenode 服务器并执行

hadoop distcp hftp-path-src normal-path-without-hdfs-or-hftp

发生同样的错误。

但是,写入端口应该使用 hdfs 协议。通过使用 hdfs 协议,错误仍然存​​在。在@rahulbmv 指出之后,唯一的区别实际上是 reader 使用的协议。今天晚些时候我会回去挖掘错误消息。

hftp 是只读文件系统。所以你不能复制到一个 hftp 目的地。也就是说,您应该可以做到 hadoop distcp hftp-path-src hdfs-path-dst。 您可以阅读有关 hftp 及其支持的操作的更多信息 here