MapReduceのマルチプロセス及びマルチスレッドスパークコンペア

その使用上のHadoop(糸とMapReduceのを含む)2.0が一貫している(使用モデルサーバ/ドライバ端子と呼ぶ)は、非同期同時実行モデルによってある程度Apacheのスパーク性能。Hadoopの非同期同時実行モデルと同様の俳優の2.0内部実装、実装は、ファイルディスクリプタ+ステートマシンで、Apacheのスパークは、オープンソースソフトウェアアッカの直接の使用で、ソフトウェアはアクターモデルを実現し、パフォーマンスが非常に高いです。両方のサーバの同じ同時実行モデルを使用して側が、タスクレベルで(特にMapReduceのタスクとタスクスパーク)異なるパラレルメカニズムを採用しているが:HadoopのMapReduceはマルチスレッドモデルスパークを使用するマルチプロセスモデルを使用し。

マルチプロセス及びマルチスレッド本明細書では、ノードの動作モードのタスクの同じ数を指すことに留意されたいです。MapReduceのとスパークの両方が、全体的に、マルチプロセスです:MapReduceのアプリケーションは、以下からなる個々のタスクのプロセスで構成されています。複数の独立したプロセスExecutorの一時的なリソースプールからなるから構築されているオペレーティング環境スパークアプリケーション。

タスクごとにきめ細かく制御リソースを容易にするために、マルチプロセスモデルはかかりますが、より多くの起動時間を消費します、低レイテンシの操作はMapReduceのは広く批判の理由の一つである仕事の種類、には適していません。マルチスレッドモデルは、対照的に、スパークモデルは、ジョブの低レイテンシ型を実行するために適しています。要するに、マルチスレッドファッションのJVMプロセスで実行するタスクノードとのスパークは、次のような利点を提供します。

1)高速なタスクを開始し、MapReduceのタスク・プロセスは通常、1秒ほどかかりスロースタートスピードとは反対に、

2)共有メモリに資するプロセス内の同じノード上で実行中のすべてのタスク。これは、特に大幅にメモリを節約することができ辞書の多数をロードする必要があるアプリケーションのために、メモリ集約型の作業に最適です。

3)同じノード上のすべてのタスクは、JVMプロセス(エグゼキュータ)上で実行することができ、及びリソースエグゼキュータのシェアは連続各タスクのリソースのための複数のアプリケーションを回避するタスクの一部を実行した後に解放されていないバッチのタスクを、使用することができます時間コストを持って、アプリケーションの多くのためのタスクの数は、大幅にランニングの時間を短縮することができます。対照的に、MapReduceのタスクさ:1.0 JVMをサポートしていますが、各タスク別のアプリケーションのリソース、使用直後のリリースでは、他のタスクのために再利用することはできませんある程度の問題を補うために再利用しますが、2.0はまだこの機能をサポートしていません。

 

マルチスレッドモデルのスパークにもかかわらず、主に、それは多くの利点をもたらしていますが、欠点もあります。

1)一つのプロセスで実行するすべてのタスクので、そのため、同じノード上のリソースのための深刻な競合になり、それは、各タスクのフットプリントをきめ細かく制御することは困難です。したがって、通常の大きな仕事の円滑な運営に貢献し、ユーザーがマップ作業のために別々のリソースを設定して、タスクを削減し、資源集約的作業の後、きめ細かく制御することができ、コントラストのMapReduce、で。

マルチプロセスモデルのMapReduceの簡単な紹介と以下のマルチスレッドモデルスパーク。

1.MapReduceマルチプロセスモデル

1)各タスクは別のJVMプロセスで実行します。

2)リソースの異なる量は、タスクの種類ごとに別々に設けられていてもよい、メモリとCPUは、現在、2つのリソースをサポートしています。

3)各タスクが実行され、占有リソースを解放します、これらのリソースは、さらにジョブタスクの同じタイプで、他のタスクの再利用することはできません。つまり、各タスクが通過する「アプリケーションリソース - > [タスクの実行 - >リリースリソース」プロセス。

2.Sparkマルチスレッドモデル

1)あなたは、各ノード上の一つ以上のエグゼキュータのサービスを実行することができます。

2)ShuffleMapTaskまたはエグゼキュータReduceTaskが実行できるどのように多くを示しスロットの数と各執行。

3)各エグゼキュータは、単一のJVMプロセスで実行され、各タスクエグゼキュータで実行中のスレッドです。

4)同じエグゼキュータタスク内部タスクが一度ロードされた各として#放送ファイルまたはデータ構造をエグゼキュータのそれぞれではなく、MapReduceのように一度だけロードされるSparkContextブロードキャスト機能により、例えば、メモリを共有することができます。

5)執行一度起動、実行していきますと、スパークプログラムの完了は、出口のリリース後に実行されるまでそのリソースは常に、タスクの再利用することができます。

全体的に、スパークは、古典的なスケジューラ/労働者モードを使用して、最初のステップは、各アプリケーションの実行をスパーク、再利用可能なリソースプールを構築することで、その後、リソースプール内のすべてのShuffleMapTaskとReduceTask(ただしことに注意を実行するために、スパークプログラムはそれがない、もはやタスクShuffleMapTaskとReduceTask)、およびMapReduceのアプリケーションが異なる複雑なアプリケーションを表現の2種類のみを使用することができ書き込みマッパーと減速が、内部点火エンジンに限定されるもので非常に柔軟な方法であります私たちは、再利用可能なリソースプールを構築するが、各タスクの動的なアプリケーションのリソースをしましょう、とリソースのリリース後すぐに実行されます。

おすすめ

転載: www.cnblogs.com/coco2015/p/11272671.html