Sparkカーネル分析(2)Sparkの3つの展開モードの原理分析

Sparkは3つのクラスターマネージャー(クラスターマネージャー)をサポートします。

1 Standalone。:スタンドアロンモード、Sparkのネイティブシンプルクラスターマネージャーは完全なサービスが付属しており、他のリソース管理システムに依存することなく、クラスターに個別にデプロイできます。スタンドアロンを使用すると、クラスターを簡単に構築できます。

2 Apache Mesos。:強力な分散リソース管理フレームワーク。糸を含むさまざまな異なるフレームワークをフレームワークにデプロイできます。

3 Hadoop YARN。:クラスター内のドライバーの場所に応じてマップリデュース、ストームなどの複数のコンピューティングフレームワークを実行できる統合リソース管理メカニズム。

実際、上記の一般的なクラスターマネージャーに加えて、Sparkはユーザーがテストおよび学習するのに便利ないくつかの単純なクラスターデプロイメントモードも提供します。実際の工場環境で使用されるクラスタマネージャのほとんど以来、私たちはそう、HadoopのYARNです关注的重点是 Hadoop YARN 模式下的 Spark 集群部署

Sparkの実行モードは、SparkContextに渡されるMASTER環境変数の値によって異なります。一部のモードでは、連携するために補助プログラムインターフェイスも必要です。現在サポートされているマスター文字列とURLには
ここに画像の説明を挿入
、次のものが含まれます。パラメーターは共に、Sparkの実行方法を決定します。

(1)マスターMASTER_URL决定了 Spark 任务提交给哪种集群处理
(2)配布モードDEPLOY_MODE决定了 Driver 的运行方式,可选值为 Client 或者 Cluster

1.スタンドアロンモードの動作メカニズム

スタンドアロンクラスタには、次の4つの重要なコンポーネントがあります。

(1)Driver:これはプロセスであり、作成したSparkアプリケーションはドライバー上で実行され、ドライバープロセスによって実行されます。

(2)Master:プロセスであり、主にリソースのスケジューリングと割り当てを担当し、クラスターの監視とその他の責任を実行します。

(3)Worker:これはプロセスであり、ワーカーはクラスター内のサーバーで実行され、主に2つの役割を担います。1つはRDDの1つまたはいくつかのパーティションを独自のメモリに格納することで、もう1つは他のプロセスとスレッドを開始することです(エクゼキューター)、RDDでの並列処理とパーティションの計算。

(4)Executor:これはプロセスです。ワーカーで複数のエグゼキューターを実行できます。エグゼキューターは、複数のスレッド(タスク)を開始することにより、RDDパーティションで並列計算を実行します。つまり、map、flatMap、reduceなどのRDD定義を実行しますオペレーターの操作を待ちます。

1.1スタンドアロンクライアントモード

ここに画像の説明を挿入
スタンドアロンクライアントモードでは、ドライバーはタスクが送信されるローカルマシン上で実行されます。ドライバーが起動すると、アプリケーションはマスターに登録されます。マスターは、送信スクリプトのリソース要件に従って内部リソースを検索し、少なくとも1つのエグゼキューターのすべてのワーカーを起動してから、これらのワーカー間で起動できます。エグゼキューターを割り当てます。ワーカーのエグゼキューターは、開始後に逆にドライバーに登録します。すべてのエグゼキューターが登録された後、ドライバーはメイン関数の実行を開始し、実行がアクションオペレーターに到達すると、ステージの分割を開始し、各ステージが対応するtaskSetを生成します。タスクを実行するために各エグゼキューターに分散します。

1.2スタンドアロンクラスタモード

ここに画像の説明を挿入
スタンドアロンクラスターモードでは、タスクが送信されると、マスターはワーカープロセスを開始するワーカーを見つけます。ドライバーが開始されると、アプリケーションはマスターに登録されます。マスターは、送信スクリプトのリソース要件に従って内部リソースを見つけ、少なくとも1つのエグゼキューターのすべてのワーカーを開始できます。エグゼキューターはワーカー間に割り当てられます。ワーカーのエグゼキューターが開始されると、逆方向でドライバーに登録されます。すべてのエグゼキューターが登録されると、ドライバーはメイン関数の実行を開始し、実行がアクションオペレーターに到達すると、ステージの分割を開始し、各ステージは対応するtaskSetを実行し、タスクを各エグゼキューターに配布して実行します。

Standalone 的两种模式下(client/Cluster),Master 在接到 Driver 注册Spark 应用程序的请求后,会获取其所管理的剩余资源能够启动一个 Executor 的所有 Worker,然后在这些 Worker 之间分发 Executor,此时的分发只考虑 Worker 上的资源是否足够使用,直到当前应用程序所需的所有 Executor 都分配完毕,Executor反向注册完毕后,Driver 开始执行 main 程序。

2. YARNモードの操作メカニズム

2.1 YARNクライアントモード

ここに画像の説明を挿入
YARNクライアントモードでは、ドライバーはタスクが送信されたローカルマシンで実行されます。ドライバーが起動すると、ドライバーはResourceManagerと通信してApplicationMasterを起動するように適用し、ResourceManagerはコンテナーを割り当てて適切なNodeManagerでApplicationMasterを起動します。此时的ApplicationMaster 的功能相当于一个 ExecutorLaucher,只负责向 ResourceManager申请 Executor 内存。

ResourceMasterは、ApplicationMasterからリソースアプリケーションを受信した後に割り当てられcontainer、ApplicationMaster 、リソース割り当てで指定されたNodeManagerでエグゼキュータプロセス開始します。エグゼキュータプロセスが開始されると、逆方向にドライバに登録されます。オペレーターが使用されると、ジョブがトリガーされ、ステージは幅広い依存関係に従って分割されます。各ステージは対応するtaskSetを生成し、実行のために各エグゼキューターにタスクを分散します。

2.2 YARNクラスターモード

ここに画像の説明を挿入

YARNクラスターモードでは、タスクが送信された後、タスクはResourceManagerと通信してApplicationMasterを開始するように適用し、ResourceManagerはコンテナーを割り当てて適切なNodeManagerでApplicationMasterを開始します。このとき、ApplicationMasterはドライバーです。

ドライバーが起動すると、エグゼキューターメモリのResourceManagerに適用されます。ResourceManagerは、ApplicationMasterからリソース要求を受信すると、コンテナーを割り当て、適切なNodeManagerでエグゼキュータープロセスを開始します。エグゼキュータープロセスが起動すると、逆方向でドライバーに登録されます。エグゼキューターが完全に登録されると、ドライバーは実行を開始しますメイン関数は、アクションオペレーターの実行後、ジョブをトリガーし、幅広い依存関係に従ってステージの分割を開始します。各ステージは対応するtaskSetを生成し、実行のために各エグゼキューターにタスクを分散します。

おすすめ

転載: blog.csdn.net/weixin_43520450/article/details/108606733