私は小さな開発者チームを管理しており、常にいくつかの進行中の (1 回限りの) データ プロジェクトがあり、それらは「恥ずかしいほど並列」と見なすことができます。これらは通常、1 台のコンピューターで 1 台のスクリプトを数日間実行することを伴います。たとえば、数千の PDF ファイルを処理して重要なテキストを抽出し、後でデータベースに挿入できるように CSV ファイルに配置します。
現在、これらのタイプのタスクを十分に行っているため、RabbitMQ を使用していくつかの予備サーバーを使用して単純なジョブ キュー システムの開発を調査し始めました (より大きなスケーリングが必要なプロジェクトで Amazon SQS/S3/EC2 を使用することを視野に入れています)。
これを行っている他の例を探していると、古典的な Hadoop New York Times の例に出くわします。
The New York Times は、100 個の Amazon EC2 インスタンスと Hadoop アプリケーションを使用して、4 TB の生の画像 TIFF データ (S3 に保存) を処理し、24 時間で 1,100 万個の完成した PDF を生成しました。計算コストは約 240 ドル (帯域幅を含まず) でした。
どちらが完璧に聞こえますか? そこで、Hadoop と Map/Reduce について調べました。
しかし、私が解決できないのは、彼らがどのようにそれをしたかです? またはなぜ彼らはそれをしたのですか?
TIFF を PDF に変換することは、Map/Reduce の問題ではありませんか? 単純なジョブ キューの方が優れていると思いませんか?
もう 1 つの古典的な Hadoop の例は、 Yahoo Hadoop チュートリアルの「wordcount」です。これはMap/Reduce に完全に適合するように思われます。これがビッグ データにとって非常に強力なツールである理由がわかります。
これらの「並外れた並列」タスクがどのように Map/Reduce パターンに組み込まれるのか理解できません。
TL;DR
これは非常に概念的な質問です。基本的に、「数千の PDF ファイルを処理していくつかの重要なテキストを抽出し、CSV ファイルに配置する」というタスクを Map/Reduce パターンにどのように適合させるかを知りたいですか?
完璧な例を知っていれば、それを書くように頼んでいるわけではありません。
(注: 私たちは PDF を処理するためのコードを持っています。私はそれを求めているわけではありません。これは単なる例であり、任意のタスクである可能性があります。そのようなプロセスを Hadoop Map/Reduce パターンに入れることについて尋ねています。タスクへの明確な「マップ」または「削減」要素はありません。)
乾杯!