スキップしてコンテンツを表示

Amazon EMR で Spark パラメータを設定する方法を教えてください。

所要時間2分
0

Amazon EMR で Apache Spark パラメータを設定したいです。

簡単な説明

Spark アプリケーションを設定するには、spark-submit などのコマンドライン引数を使用します。または、spark-defaults.conf ファイルの値を設定して、変更を永続的にします。

解決策

spark-submit を使用して Spark パラメータを設定する

Spark シェルと spark-submit コマンドを使用して設定を動的にロードするため、次のいずれかを使用します。

  • --num-executors などのコマンドラインオプションを使用する。
  • --conf フラグを使用する。

**注:**完全なオプションリストを表示するには、spark-submit--help を実行してください。

spark-submit コマンドは、spark-defaults.conf から設定オプションを読み取ります。

spark-defaults.conf ファイルの各行には、空白で区切られたキーと値が含まれています。

詳細については、「spark-submit を使用したユーザーアプリケーションの送信」を参照してください。Spark がサポートするパラメータの詳細については、Apache Spark ウェブサイト内の「Spark の設定」を参照してください。

設定オプションの例:

--class  \
--master  \
--deploy-mode  \
--conf = \
--num-executors  \
--executor-memory G \
--driver-memory G \
--executor-cores  \
--driver-cores  \
--jars  \
--packages  \
--py-files < Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps> \

spark-submit コマンドは、アプリケーション JAR と、--jars オプションに含まれるすべての JAR を自動的にクラスターに転送します。--jars の後に指定される URL はカンマで区切る必要があります。spark-submit は、ドライバーとエグゼキューターのクラスパスにリストを含め、JAR とファイルをエグゼキューターノード上の各 SparkContext の作業ディレクトリにコピーします。

**注:**ディレクトリの拡張は --jars では機能しません。

spark-submit コマンドの例:

spark-submit \
    --deploy-mode cluster \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.dynamicAllocation.enabled=false \
    --master yarn \
    --num-executors 4 \
    --driver-memory 4G \
    --executor-memory 4G \
    --executor-cores 1 \
    /usr/lib/spark/examples/jars/spark-examples.jar \
    10

メモリパラメータを渡すには、フラグ --conf を使用します。

spark-submit \
    --deploy-mode cluster \
    --class org.apache.spark.examples.SparkPi \
    --conf spark.dynamicAllocation.enabled=false \
    --master yarn \
    --conf spark.driver.memory=1G \
    --conf spark.executor.memory=1G \
    /usr/lib/spark/examples/jars/spark-examples.jar \
    10

カスタム Spark パラメータを使用して spark シェルと pyspark シェルを起動する

spark シェルまたは pyspark シェルを起動するには、次のコマンドを実行します。

spark-shell

spark-shell \
    --conf spark.driver.maxResultSize=1G \
    --conf spark.driver.memory=1G \
    --deploy-mode client \
    --conf spark.executor.memory=1G \
    --conf spark.executor.heartbeatInterval=10000000s \
    --conf spark.network.timeout=10000001s \
    --executor-cores 1 \
    --num-executors 5 \
    --packages org.apache.spark:spark-avro_2.12:3.1.2 \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

pyspark shell

pyspark \
    --conf spark.driver.maxResultSize=1G \
    --conf spark.driver.memory=1G \
    --deploy-mode client \
    --conf spark.executor.memory=1G \
    --conf spark.executor.heartbeatInterval=10000000s \
    --conf spark.network.timeout=10000001s \
    --executor-cores 1 \
    --num-executors 5 \
    --packages org.apache.spark:spark-avro_2.12:3.1.2 \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'

spark-defaults.conf を使用して Spark パラメータを設定する

設定の変更を永続的にするには、設定をファイル /etc/spark/conf/spark-defaults.conf に付加します。その後、Spark History Server を再起動します。次の例では、spark-defaults.conf のエグゼキューターメモリーとドライバーメモリーを設定します。この例では、各行は空白で区切られたキーと値で構成されています。

spark.executor.memory 9486M
spark.driver.memory 9486M

次の設定例では、クラスターの起動時に Spark ドライバーとエグゼキューターメモリーを設定します。

[
    {
        "Classification": "spark-defaults",
        "Properties": {
            "spark.executor.memory": "9486M",
            "spark.driver.memory": "9486M"
        }
    }
]

**注:**Amazon EMR では、spark.yarn.executor.memoryOverhead のデフォルト値は 18.75% ですが、標準の Spark のデフォルト値は 0.1875% です。Spark ジョブを設定したら、そのパフォーマンスをモニタリングし、リソース使用状況を分析してインサイトを得て、ジョブパラメータのさらなる調整を行います。

関連情報

AWS オープンデータ分析

Spark ステップの追加

Amazon EMR の再構成によるクラスターの即時変更

AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ