-3

1 週間以上経過した (シェル スクリプトからシェル コマンドを呼び出していた) ループ内で hdfs からファイルとディレクトリを繰り返し削除するユーティリティを作成しているときに、パフォーマンスの問題に直面しました。また、削除する前に各ファイル/サブディレクトリに対して特定のチェックを実行する必要があったため、ルートディレクトリ全体を削除することはできませんでした。削除ごとに、シェル コマンドは約 2 秒かかりました。そのため、1600 個のファイルとサブディレクトリを削除する必要がある場合、それらを完了するのに 1 時間近くかかりました。代わりに JAVA API (FileStatus および FileSystem) を使用すると、パフォーマンスが大幅に向上しました。5秒以内に完了しました。その根本的な理由を詳しく知りたいです。シェル コマンド (-rm など) が内部的に JAVA API を使用することを読みましたが、それが応答時間のこの大きな違いの唯一の理由ですか?

4

1 に答える 1

1

シェル コマンドを反復的に呼び出すと、反復ごとに競合する JVM の起動時間がありますが、API アプローチでは JVM の起動は 1 回だけです。これらの線に沿って、名前ノードに複数回接続する必要があります。

于 2013-05-10T21:56:50.283 に答える