なぜ速いスピードのMapReduceよりも火花

  • さらに二つの重要な理由

- メモリに基づいて1、

               MapReduceのタスクディスクの床に毎回結果データは、前のジョブの結果の他のジョブ出力に依存するその後の必要性があるが、ここでは前のジョブの結果を取得するステップioのディスクの多くを必要として出力されます。パフォーマンスが非常に低い

    、たとえば、:SELECT名前は、年齢から(ユーザーからSELECT * WHEREアドレス= '北京')
        ----------------------- JOB2 -------- ------- ----------- JOB1 -----------------------
    出力スパークタスクをメモリに保存することができ、他のフォローアップがあります前のジョブの結果に依存するジョブの必要性が出力され、ここでの唯一の大幅操作ioのディスクを減らし、メモリから直接取得する必要があります。

    フレームは反復計算点火するように構成されている
    JOB1 -----> JOB2 -----> JOB3 ----- > JOB4 -----> job5 -----> jobNを......

- 2、プロセスとスレッド

               糸クラスタ内で実行中のプロセスを介してのMapReduceタスクには、例えば、MapReduceのタスクは100 MapTask、この100タスクを実行するために後者の必要性を持って、我々は100のプロセスを開始する必要があります。
    このようなスパークタスクとして、ワーカープロセスエグゼキュータ・ノードで実行されているスパーク・タスク・スレッドへの道であり、後者の必要性がそれに100個のスレッドを実行する100 MapTaskを有しています。
    これは少し極端なことがあります、プロセスを開始する過程で100個のスレッドを実行するだけの必要性は、スレッドのプロセスを開くことができます、時間とリソースのスケジューリングを必要と確かにオープンよりも同じではありませんが、プロセスを開くには時間がよりはるかに大きいが必要です。スレッド。

おすすめ

転載: www.cnblogs.com/starzy/p/12057804.html