对Apache Spark的组件进行整理

即背景和目标。

再整理一下Apache Spark的架构和组件。

简述

组件

image.png

以下是在Spark中使用的术语。

用語意味ApplicationSpark上に構築されたユーザプログラム
Driver ProcessとExecutor Processで構成される。Application jarユーザのSparkアプリケーションを含んだjarファイルDriver programmain()関数を実行する。下記の役割を持つ。
・ SparkContextを作成する
・Sparkアプリケーションに関する情報管理
・ユーザプログラムや入力の応答
Executor全体のタスクの分析、分散、スケジューリングを行う。Cluster managerリソースを取得するための外部プログラム(YARN、Mesos、k8s等)
物理マシンを制御し、Sparkアプリケーションにリソースをアサインする。Deploy modeクラスターモードと、クライアントモードの2つがある。
・クラスタモードの場合、Driverプログラムはクラスタ内で起動される。
・クライアントモードの場合、Driverはクラスタ外から起動される。Worker nodeクラスタ内でアプリケーションを実行できる任意のノードExecutorワーカーノード上のアプリケーション用に起動されるプロセス。下記の役割がある。
・Driverから割り当てたタスクを実行し、タスク全体のメモリまたはディスクストレージにデータを保持する。
・Executorの計算の進捗をDriverにレポートする。Task1つのエグゼキュータに送信される作業の単位JobSparkアクション (保存、収集など) に応答して生成される複数のタスクで構成される並列計算。Stage各ジョブは、互いに依存するステージと呼ばれる小さなタスクのセットに分割される。 (MapReduce の map ステージと reduce ステージに近いイメージ)。

申请、工作、阶段、任务之间的关系

image.png

每个组件的说明

司机

    • Driverは、作成するプログラムのmain()関数を実行するプロセス

 

    • このプロセスが実行するユーザコードが、SparkContextの生成、RDDの生成を行い、変換やアクションを実行する

 

    • ユーザプログラムのタスクへの変換を行う

Sparkドライバは、ユーザのプログラムを実行の単位(タスク)に変換する。
Sparkプログラムは、論理的なDAGを生成し、ドライバが実行されると、物理的な実行計画に変換する。
Sparkは、mapの変換を纏めてマージするためのパイプライン化のような最適化を行い、実行グラフを一連のステージ群に変換する。それぞれのステージには複数のタスクが含まれる。
タスクはSparkで最も小さな単位

エグゼキュータ上のタスクのスケジューリングを行う

物理的な実行計画が決まった後、Sparkドライバは、Executor群の個々のタスクのスケジュールを調整する。
Executor群は、起動時に自分自身をドライバに対して登録することで、ドライバは自分のアプリケーションのExecutorの状況を常に把握できる。
各Executorは、タスクを実行し、RDDのデータを保持する事ができるプロセス。
Sparkドライバは、その時点でのExecutor群を見て、データの配置に基づいて各タスクを適切な場所にスケジューリングしようとする。

キャッシュされていた場合も、そのデータにアクセスする将来のタスクのスケジューリングに、この情報を活用する。

ドライバは、Webインタフェイスを通じて実行中のSparkアプリに関する情報を公開する

执行者。

    • Sparkジョブの個々のタスクの実行を受け持つワーカープロセス

 

    • ExecutorはSparkアプリケーションの起動時に1度起動されて、通常はそのアプリケーションが動作している間、動作し続ける。

 

    • アプリケーションを構成するタスク群を実行し、結果をドライバに返す。

 

    • ユーザプログラムによってキャッシュされるRDDをのためのインメモリストレージを各Executor内で動作するブロックマネージャーと呼ばれるサービスを通じて提供する。

RDDはExecutor内にキャッシュされるので、タスクはキャッシュされたデータと同居して動作することができる

集群经理

    • ExecutorやDriverの起動をCluster Managerが担う。

 

    SparkのCluster Managerはプラガブルな構成となっており、YARNやMesosなどが利用できる。

Hadoop YARN 分布式系统

    • 共有リソースプール上で様々なデータ処理フレームワークを動作させることができる。

 

    YARNで動作させる場合に、Sparkのアプリケーションは決められた数のExecutorを使う。各種パラメータは下記の通り
設定項目説明–num-executorsExecutorの数–executor-memoryExecutorが使用するメモリ–executor-corsYARNに要求するコア数

Spark应用程序

    • Sparkアプリケーションの中核となるのは、Spark Driverとなる。

 

    Spark DriverではSparkSessionを作成する

Spark 工作

    • DriverはSparkアプリケーションを1つ以上のSparkジョブに変換する。

 

    次に各Spark ジョブをDAGに変換する。

火花阶段

    • DAGノードの一部として、直列または並列に実行できる操作に基づいてステージが作成される。

 

    すべての操作が1つのStageになるわけではなく、複数のStageで分割できる。

火花任务

    • 各ステージは、Sparkタスクで構成され、各Spark Executor間でフェデレーションされる。

 

    • 各タスクは1つのコアにマップされる。

 

    16コアのExecutorでは、16個以上のタスクを16個以上のパーティションで並列で処理する。

执行时序

在驱动程序中,SparkContext程序进行调整和控制。大致流程如下。

    1. SparkContext通过访问Cluster Manager来分配资源。

 

    1. 连接后,在集群的节点上获取Executor。

 

    1. SparkContext将应用程序(Jar文件或Python文件)分发给每个Executor。

 

    SparkContext将任务发送给每个Executor。

请注意事项。

    • Driverプログラムは、Executorからの通信をListenする必要があり、ワーカーノードからNWでアドレスを指定できる必要がある。

 

    Driverプログラムは、Workerノードを制御するため可能な限り近くで実行することが推奨される。

请考察

由于基本概念已经澄清,我计划将重点放在整理Spark特色中的延迟评估执行等特性和参数上。

请参考

 

广告
将在 10 秒后关闭
bannerAds