すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:JindoSDK を使用して OSS にアクセスするときに Reached timeout エラーが発生した場合の対処方法

最終更新日:Jan 11, 2025

このトピックでは、JindoSDK を使用してオブジェクトストレージサービス (OSS) にアクセスするときに発生する可能性のある Reached timeout エラーの原因と解決策について説明します。

タイムアウトメッセージ

[ErrorCode] : 25201 , [ErrorType]: OSS Op Error. [ErrorMessage]: [E1008]Reached timeout=30000ms

原因を特定する方法

説明

タイムアウトメッセージだけから原因を特定することはできません。指定されたタイムアウト期間内に OSS サーバーが応答を返さない場合は、コンテキストログまたは例外スタックを確認する必要があります。

次のコマンドを実行して OSS にアクセスすると、Reached timeout エラーが発生する場合があります。

例外スタックのエラーメッセージに rename が表示される

  • エラーメッセージの例

    java.io.IOException: rename src:oss://bucket.oss-cn-xxxx-internal.aliyuncs.com/user/hive/warehouse/tmp/hive/xxxx/c185ce78-f843-4104-8dca-f5b96fc9****/hive_xxxx_00-07-51_265_5593904247532586093-47957/_tmp.-mr-10006, dst:oss://bucket.oss-cn-xxxx-internal.aliyuncs.com/user/hive/warehouse/tmp/hive/xxx/c185ce78-f843-4104-8dca-f5b96fc9****/hive_xxxx-07-21_00-07-51_265_5593904247532586093-47957/_tmp.-mr-10006.moved
    
    ,java.io.IOException: [ErrorCode] : 25201 , [ErrorType]: OSS Op Error. [ErrorMessage]: [E1008]Reached timeout=30000ms @100.118.xx.xx:80 ERROR_CODE : 1008
  • 原因

    JindoSDK の Rename 操作は、OSS の CopyObject 操作に基づいて実装されています。このエラーは、CopyObject 操作に対する OSS 高速コピー最適化が完了していないために発生します。その結果、JindoSDK の Rename 操作がタイムアウトします。

  • 解決策

    OSS の テクニカルサポート に連絡して、bucket.oss-cn-xxx-internal.aliyuncs.com の設定要件を確認してください。次に、OSS 高速コピー最適化の失敗の原因を確認します。

    高速コピー最適化は、ストレージクラスが Standard の最も一般的なオブジェクトに対してのみ実行できます。OSS オブジェクトのストレージクラスが Standard でない場合、または OSS オブジェクトが特殊なタイプの場合、高速コピー最適化は失敗する可能性があります。その結果、rename 操作がタイムアウトする可能性があります。JindoSDK を使用して、一般的なオブジェクトのみを OSS にアップロードし、Standard ストレージクラスを使用することをお勧めします。高速コピー最適化は、次のオブジェクトで失敗する可能性があります。

    • ストレージクラスが Standard でないオブジェクト (ストレージクラスが IA、Archive、Cold Archive のオブジェクトなど)

    • OSS の AppendableObject タイプのオブジェクト

    • MultiPart 以外の操作を呼び出してアップロードされた小さなオブジェクト

    • サーバー側の暗号化などの機能を使用するオブジェクト

    • 特殊なオブジェクト (LINK、SYMLINK、DELETEMARKER タイプのオブジェクトなど)

例外スタックのエラーメッセージに InputStream または Read が表示される

  • エラーメッセージの例

    Read from oss://xxxx with error message:  [HostId]: oss-cn-zhangjiakou-internal.aliyuncs.com [ErrorMessage]: [E1008]Reached timeout=30000ms
  • 原因と解決策

    • JindoData 4.0.0 の SeekRead 操作には、Reached timeout エラーが発生する可能性のある欠陥があります。JindoData 4.0.0 を使用している場合は、JindoData を 4.3.X 以降のバージョンにアップグレードしてください。詳細については、「新しい EMR コンソールで EMR クラスタの JindoSDK をアップグレードする」をご参照ください。

    • OSS の帯域幅スロットリングがトリガーされています。この場合は、OSS の テクニカルサポート に連絡して、帯域幅スロットリングがトリガーされた理由を確認してください。

例外スタックのエラーメッセージに OutputStream、write、または Close が表示される

  • エラーメッセージの例

    com.aliyun.emr.fs.oss.commit.magic.JindoOssMagicOutputStream.write(JindoOssMagicOutputStream.java:146)
            ... 14 more
    Caused by: java.io.IOException: ErrorCode : 25201 , ErrorMsg: OSS Op Error.  [HostId]: oss-cn-beijing-internal.aliyuncs.com [ErrorMessage]: [E1008]Reached timeout=30000ms @100.118.xx.xx:80 ERROR_CODE : 1008
            at com.alibaba.jboot.JbootFuture.get(JbootFuture.java:179)
            at com.alibaba.jboot.JbootOssWriter.write(JbootOssWriter.java:85)

    または

    Caused by: java.io.IOException: Close stream oss://xxx error java.io.IOException: [ErrorCode] : 25201 , [ErrorType]: OSS Op Error.  [HostId]: xxx [ErrorMessage]: [E1008]Reached timeout=30000ms @xxx ERROR_CODE : 1008
  • 原因と解決策

    ほとんどの場合、このエラーは OSS の帯域幅スロットリングがトリガーされたために発生します。OSS テクニカルサポート に連絡して、帯域幅スロットリングがトリガーされた理由を確認してください。

例外スタックのエラーメッセージに getFileStatus が表示される

  • 原因

    OSS バケットでバージョン管理が有効になっています。

  • 解決策

    1. バージョン管理が有効になっているかどうか、または以前にバージョン管理を有効にしたかどうかを確認します。qaq

    2. OSS の テクニカルサポート に連絡して、OSS バケットまたはパスに 100,000 を超える削除マーカーが存在するかどうかを確認します。100,000 を超える削除マーカーが存在する場合は、追加の削除マーカーを削除します。

rm コマンド

  • skipTrash を含む rm コマンド

    skipTrash オプションを含む rm コマンドは、2 つのステップを実行することで実行されます。getFileStatus 操作が呼び出され、次に delete 操作が呼び出されます。skipTrash オプションを含む rm コマンドを実行したときにタイムアウトエラーが発生した場合、タイムアウトエラーは getFileStatus 操作が呼び出されたときに発生します。タイムアウトエラーを修正するには、「例外スタックのエラーメッセージに getFileStatus が表示される」に記載されている手順に従ってください。

  • skipTrash を含まない rm コマンド

    skipTrash オプションを含まない rm コマンドは、2 つのステップを実行することで実行されます。getFileStatus 操作が呼び出され、次に Rename 操作が呼び出されます。skipTrash オプションを含まない rm コマンドを実行したときにタイムアウトエラーが発生した場合は、「例外スタックのエラーメッセージに getFileStatus が表示される」および「例外スタックのエラーメッセージに rename が表示される」に記載されている手順に従ってエラーを修正してください。

説明

skipTrash は rm コマンドのオプションです。たとえば、hadoop fs -rm -skipTrash oss://bucket/path コマンドを実行して OSS オブジェクトを削除できます。削除されたオブジェクトはごみ箱に移動されません。

ls コマンド

ls コマンドは、2 つのステップを実行することで実行されます。getFileStatus 操作が呼び出され、次に listDirectory 操作が呼び出されます。ls コマンドを実行したときにタイムアウトエラーが発生した場合、タイムアウトエラーは getFileStatus 操作が呼び出されたときに発生します。タイムアウトエラーを修正するには、「例外スタックのエラーメッセージに getFileStatus が表示される」に記載されている手順に従ってください。