2

指示に従ってhftpプロトコルを使用して、distcpを使用してあるクラスターから別のクラスターにファイルを移動しようとしています。

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 がファイルの提供に失敗する理由を誰か教えてもらえますか?

4

1 に答える 1