gpt4 book ai didi

hadoop - 为什么 Hadoop hftp 会提供目录而不是文件?

转载 作者:可可西里 更新时间:2023-11-01 14:54:53 26 4
gpt4 key购买 nike

我正在尝试使用 distcp 将文件从一个集群移动到另一个集群,使用他们的说明中指定的 hftp 协议(protocol)。

我可以通过 hftp 读取目录,但是当我尝试获取文件时,我收到 500(内部服务器错误)。为了消除网络和防火墙问题的可能性,我在源服务器上使用 hadoop fs -ls 和 hadoop fs -cat 命令来尝试解决这个问题。

这提供了文件的目录:

hadoop fs -ls logfiles/day_id=19991231/hour_id=1999123123
-rw-r--r-- 3 username supergroup 812 2012-12-16 17:21 logfiles/day_id=19991231/hour_id=1999123123/000008_0

这给了我一个“找不到文件”的错误,它应该是因为文件不存在:

hadoop fs -cat hftp://hserver.domain.com:50070/user/username/logfiles/day_id=19991231/hour_id=1999123123/000008_0x
cat: `hftp://hserver.domain.com:50070/user/username/logfiles/day_id=19991231/hour_id=1999123123/000008_0x': No such file or directory

这一行给我一个 500 内部服务器错误。文件在服务器上确认。

hadoop fs -cat hftp://hserver.domain.com:50070/user/username/logfiles/day_id=19991231/hour_id=1999123123/000008_0
cat: HTTP_OK expected, received 500

这是我尝试此操作时 distcp 记录的堆栈跟踪:

java.io.IOException: HTTP_OK expected, received 500
at org.apache.hadoop.hdfs.HftpFileSystem$RangeHeaderUrlOpener.connect(HftpFileSystem.java:365)
at org.apache.hadoop.hdfs.ByteRangeInputStream.openInputStream(ByteRangeInputStream.java:119)
at org.apache.hadoop.hdfs.ByteRangeInputStream.getInputStream(ByteRangeInputStream.java:103)
at org.apache.hadoop.hdfs.ByteRangeInputStream.read(ByteRangeInputStream.java:187)
at java.io.DataInputStream.read(DataInputStream.java:83)
at org.apache.hadoop.tools.DistCp$CopyFilesMapper.copy(DistCp.java:424)
at org.apache.hadoop.tools.DistCp$CopyFilesMapper.map(DistCp.java:547)
at org.apache.hadoop.tools.DistCp$CopyFilesMapper.map(DistCp.java:314)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:393)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:327)
at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332)
at org.apache.hadoop.mapred.Child.main(Child.java:262)

有人能告诉我为什么 hftp 无法提供文件吗?

最佳答案

我遇到了同样的问题,最终找到了解决方案。

这里详细解释了一切:http://www.swiss-scalability.com/2015/01/hadoop-hftp-returns-error-httpok.html

但简而言之,我们可能将 NameNode RPC 绑定(bind)到通配符地址(即 dfs.namenode.rpc-address 指向接口(interface)的 IP,而不是 0.0.0.0)。

不适用于 HFTP:

<property>
<name>dfs.namenode.rpc-address</name>
<value>0.0.0.0:8020</value>
</property>

适用于 HFTP:

<property>
<name>dfs.namenode.rpc-address</name>
<value>10.0.1.2:8020</value>
</property>

关于hadoop - 为什么 Hadoop hftp 会提供目录而不是文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13938120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com