0

Hadoop 実装の準備がすべて整いました。実行中のクラスターと、アクティビティ データを HDFS にプッシュするクライアント ライターがあります。次に何が起こるかについて質問があります。HDFS にダンプされたデータに対してジョブを実行することは理解していますが、私の質問は次のとおりです。

1)まず、ストリームに書き込み、定期的にフラッシュしています-HDFS Javaクライアントのスレッドを介してファイルを書き込んでいますが、サーバーを強制終了するまでファイルがHDFSに表示されません。ブロックを満たすのに十分なデータを書き込んだ場合、それは自動的にファイル システムに表示されますか? M/R ジョブで処理する準備が整ったファイルを取得するにはどうすればよいですか?

2) M/R ジョブはいつ実行しますか? 私が言ったように、私はHDFS Javaクライアントのスレッドを介してファイルを書き込んでおり、そのスレッドは書き込みのためにファイルをロックしています。どの時点でそのファイルをリリースする必要がありますか? この相互作用はどのように機能しますか? そのデータに対してジョブを実行することが「安全」になるのはどの時点でしょうか? また、完了時に HDFS 内のデータはどうなりますか?

4

2 に答える 2

1

Hadoop へのデータ挿入と処理結果の間の「ハード」同期を回避しようとします。つまり、多くの場合、非同期プロセスを使用することが最も実用的です。
a) ファイルを HDFS に入れる 1 つのプロセス。多くの場合、日付によるディレクトリ構造の構築は便利です。
b) 最新のデータを除くすべてのデータに対してジョブを実行します。
最新のデータでジョブを実行できますが、アプリケーションは分単位の結果までリレーしないでください。いずれにせよ、ジョブには通常数分以上かかります

もう 1 つのポイント - append は 100% 主流ではなく、HBase 用に構築された高度なものです。アプリを使用せずにビルドすると、追加をサポートしない amazon s3 などの他の DFS を使用できるようになります。ローカル ファイル システムでデータを収集し、ファイルが十分に大きくなったら HDFS にコピーします。

于 2012-05-21T05:58:16.917 に答える
1
  1. ブロックを埋めるためにデータを書き込むと、システム内のファイルが表示されます

  2. M/R はスケジューラーに送信され、データに対して実行されます。心配する必要はありません。

于 2012-05-20T14:59:29.890 に答える