0から1までのSpark学習(3)-ApacheSpark送信パラメーターとリソーススケジューリングソースコード分析

1.Spark-送信パラメータを送信します

パラメータ名 パラメータ値
-主人 spark:// host:port; mesos:// host:port、yarn; yarn-cluster、yarn-clint; local
–deploy-mode ドライバープログラムが実行される場所、クライアントまたはクラスター、デフォルトはクライアントです
-クラス メインクラス名
–jars Commaは、ローカルjar、ドライバーとエグゼキューターが依存するサードパーティパッケージを分離します
–ファイル ファイルのコンマ区切りのリストは、各エグゼキュータの作業ディレクトリに配置されます
–conf Spark構成プロパティ
–driver-memory ドライバプログラムはメモリサイズ(例:520M、2G)を使用し、デフォルトは1024Mです。
–executor-memory 各エグゼキュータのメモリサイズ(例:2G)、デフォルトは1G
–ドライバーコア ドライバープログラムはコア数(デフォルトは1)を使用しますが、これはsparkスタンドアロンのクラスターモードに制限されています。
–監督 障害後にドライバーを再起動するかどうか。SparkスタンドアロンまたはMesosのクラスターに限定
–total-executor-colors エグゼキュータが使用するコアの総数は、SparkStandaloneおよびSpark onMesosモードに制限されています
–エグゼクティブカラー 各エグゼキュータが使用するコアの数、スパークオンヤーンのデフォルトは1、スタンドアロンのデフォルトはワーカーで使用可能なすべてのコアです。
毛糸のみ
–ドライバーコア ドライバーが使用するコアはクラスターモードのみで、デフォルトは1です。
-キュー リソースキューの名前を指定します。デフォルト:デフォルト
–num-executors 開始された実行者の総数。デフォルトでは2人です。

2.リソーススケジューリングのソースコード分析

2.1リソースリクエストの簡単な図

ここに写真の説明を挿入

  1. ./start-all.shを実行して、クラスターを開始します。
  2. マスターノードが開始されると、sshを介してワーカーノードと通信します。
  3. ワーカーノードは逆にマスターノードに登録されます。
  4. マスターノードは、ワーカーノードの情報HashSet[WorkerInfo]タイプのworkersコレクションにカプセル化します
  5. spark-submitミッションコマンドを介してクライアント
  6. マスターノードからドライバーを起動するように要求します。
  7. マスターノードはArrBuffer[DriverInfo]タイプをカプセル化しますwaitingDriver(ドライバーは実行を待機しています)。
  8. マスターノードは、ドライバーを起動するノードを選択します。
  9. ドライバーは、現在のアプリケーションのリソースをマスターに適用します。
  10. マスターノードは、アプリケーションリソースをドライバーにカプセル化します。
  11. ドライバーは、実行のためにタスクをワーカーノードに送信します。

2.2リソーススケジューリングマスターパス

CLASS="org.apache.spark.deploy.master.Master"

2.3申請書の提出、パスの提出

org.apache.spark.deploy.SparkSubmit

2.4まとめ

  1. Executorは、クラスター内で分散して開始されます。これは、タスク計算データのローカリゼーションに役立ちます。
  2. デフォルトでは(タスクの送信時に--executor-coresオプションは設定されていません)、各ワーカーは現在のアプリケーションのエグゼキューターを開始します。このエグゼキュータは、このワーカーのすべてのコアと1Gメモリを使用します。
  3. ワーカーで複数のエグゼキュータを起動する場合は、アプリケーションを送信するときに--executor-coresこのオプションを追加する必要があります
  4. デフォルト--total-executor-coresでは設定はありません。アプリケーションはSparkクラスター内のすべてのコアを使用します。

2.5結論のプレゼンテーション

Spark-submitを使用して、タスクのデモンストレーションを送信します。

  1. デフォルトでは、各ワーカーは現在のアプリケーションのエグゼキュータを起動します。このExecutorは、クラスター内のすべてのコアと1Gメモリを使用します。

    ./spark-submit 
    --master spark://masterNode:7077 
    --class org.apache.spark.examples.SparkPi
    ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar
    1000
    
  2. ワーカーで複数のエグゼ--executor-coresキュータを起動し、エグゼキュータが使用するコアの数を指定するパラメータを設定します。

    ./spark-submit
    --master spark://masterNode:7077
    --executor-cores 1
    --class org.apache.spark.examples.SparkPi
    ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar
    1000
    
  3. コアはメモリ不足で起動します。Sparkが起動すると、コア構成パラメーターだけでなく、構成されたコアメモリが十分であるかどうかも示されます。

    ./spark-submit
    --master spark://masterNode:7077
    --executor-cores 1
    --executor-memory 3g
    --class org.apache.spark.examples.SparkPi
    ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar
    1000
    
  4. --total-executor-coresクラスターで使用されているコアの数。

    注:クラスター内の複数のノードでプロセスを開始することはできません。

    ./spark-submit
    --master spark://masterNode:7077
    --executor-cores 1
    --executor-memory 3g
    --total-executor-cores 3
    --class org.apache.spark.examples.SparkPi
    ../lib/spark-exeamples-1.6.0-hadoop2.6.0.jar
    1000
    

おすすめ

転載: blog.csdn.net/dwjf321/article/details/109047999