spark.yarn.jars && spark.yarn.archive



Spark Yarn Jars Spark



1.公式サイト紹介

YARNでSparkを実行するには、YARNサポートで構築されたSparkのバイナリ配布が必要です。バイナリディストリビューションは、プロジェクトWebサイトのダウンロードページからダウンロードできます。 Sparkを自分でビルドするには、Sparkのビルドを参照してください。

YARN側からSparkランタイムjarにアクセスできるようにするには、spark.yarn.archiveまたはspark.yarn.jarsを指定できます。詳細については、Sparkのプロパティを参照してください。 spark.yarn.archiveもspark.yarn.jarsも指定されていない場合、Sparkは$ SPARK_HOME / jarsの下にすべてのjarファイルを含むzipファイルを作成し、それを分散キャッシュにアップロードします。



つまり、YarnでSparkアプリケーションを実行する場合、$ SPARK_HOME / jarsの下にあるjarパッケージをhdfsにアップロードする必要があります。これらの2つのパラメーターを構成しない場合、Sparkはこのディレクトリー内のすべてのjarパッケージをzipパッケージにアップロードし、それらをhdfsにアップロードします。その影響は、アプリケーションの起動時にjarパッケージのアップロードに非常に時間がかかることです。

2.構成

2.1jarパッケージをhdfsにアップロードします

  • jarパッケージをhdfsの指定されたディレクトリにアップロードします



    [root@xxxxx conf]$ hadoop fs -mkdir-p /spark/yarn/jars [root@xxxxx spark]$ hadoop fs -put jars/* /spark/yarn/jars/
  • $ SPARK_HOME / conf / spark-defaults.confに、次の構成を追加します

    [root@xxxxx conf]$ vim spark-defaults.conf spark.yarn.jars=hdfs://nameservice1/spark/yarn/jars/* or spark.yarn.archive=hdfs://nameservice1/spark/yarn/jars

    2つのパスの違いに注意してください

    公式サイトに段落があります
    spark.yarn.archive
    つまり、両方のパラメーターが構成されている場合、アプリケーションは最初にspark.yarn.archiveによって構成されたパスを使用します。 spark.yarn.archiveは、spark.yarn.jarsよりも優先度が高くなっています。



    アーカイブのルートディレクトリにはjarファイルが含まれている必要があります。
    この文は非常に重要です。つまり、すべてのjarパッケージは、後で説明する第2レベルのディレクトリではなく、フォルダのルートディレクトリにある必要があります。

2.2すべてのjarパッケージをzipパッケージにアップロードし、hdfsにアップロードします

多くのjarパッケージはそれほど大きくなく、hdfsのスペースを非常に占有するため、この方法は本番環境に推奨されます。
このメソッドは、spark.yarn.archiveにのみ適用できます。

[root@xxxxx conf]$ vim spark-defaults.conf spark.yarn.archive=hdfs://nameservice1/spark/yarn/jars/jars-2.4.4.zip

ファイルパスを書き込むときは、zipパッケージを指定する必要があります。

ピットを踏む :最初の構成後、Sparkアプリケーションを実行すると、常に失敗します。ログを確認してください
エラー:メインクラスorg.apache.spark.deploy.yarn.ApplicationMasterが見つからないかロードできませんでした

jarパッケージのエラーだと思ったので、指定したディレクトリのzipパッケージを削除してから、すべてのjarパッケージをhdfsパスに再アップロードし、アプリケーションを起動して成功しました。

この時、戸惑いました。何が悪かったのかわかりませんでした。 zipパッケージに問題があると思ったので、再パッケージしてアップロードしました。実行中のプログラムはまだ失敗しました。なぜ人生はとても難しいのですか! ! !

このとき、友達からのリマインダーで問題に気づきました。もう一度この文章を見てみましょう。
アーカイブのルートディレクトリにはjarファイルが含まれている必要があります。
つまり、zipパッケージにはすべてのjarパッケージが直接含まれている必要があり、これ以上ディレクトリを作成することはできません。
このとき、圧縮ソフトウェアでzipパッケージを静かに開いたところ、問題が発生したのはjars-2.4.4フォルダーであることがわかりました。
すべてのjarパッケージをzipパッケージに再入力し、クリックしてzipパッケージを開くと、すべてのjarパッケージが直接内部にあります。

指定したディレクトリにzipパッケージを再アップロードし、アプリケーションを再起動すると、プログラムが正常に実行されます。