Sparkストリーミングアプリケーションのカスタムメトリックソース/シンクを作成しましたが、metrics.propertiesから初期化しようとしていますが、エグゼキュータからは機能しません。私はSparkクラスタのマシンを制御できないので、クラスタ内の$ SPARK_HOME/conf /にプロパティファイルをコピーすることはできません。私のアプリがどこにあるかのような場所にあるのですが、ファット・ジャーがクラスタ内のワーカー・ノードにダウンロードされるまでに、エグゼキュータは既に起動されており、Metricsシステムはすでに初期化されています。 。 「spark.metrics.confがmetrics.properties =」が、「metrics.properties」の執行に出荷された時点で、そのメトリックシステムがすでにあるカスタムソース/シンクの設定が認識されない
はこのpostに続いて、私は「spark.files = metrics.properties」を指定しました初期化されました。
私自身のメトリクスシステムを初期化するとファイルが取り込まれますが、マスター/エグゼキュータレベルのメトリック/プロパティが表示されません(例:executor.sink.mySink.propName = myProp - 'propName' from 'mySink')、彼らはSparkのメトリックシステムによってinitializedです。
executor initializeのメトリクスシステムの前に 'metrics.properties'を出荷する方法がありますか?
アップデート1:私は、スタンドアローンのスパークでこれをしようとしています2.0.0クラスタ
アップデート2:これを達成する上でハックの思想 - あなたの「実際の」火花ジョブを開始する前に、metrics.propertiesをコピーするためにダミーのジョブを開始各労働者に次に、既知のファイルの場所で実際の仕事を開始します。短所 - 従業員が死亡し、別の従業員がその所在を取る場合、このファイルは事前に知られているパスにありません。解決策の選択肢 - 新しいワーカーマシンが起動すると、metrics.propertiesをgit-repoから引き出し、既知のパスに配置します。それはうまくいくかもしれませんが、ひどくハッキリですが、Sparkが内部的にサポートするのが望ましい解決策です。
私はそれを試みました。 2つの問題 - 1) 'metrics.properties'をドライバマシンにコピーしません - エグゼキュータの作業ディレクトリにのみファイルをコピーすることになっているためです。 2)エグゼキュータ上でこれらのファイルをコピーするまでに、metricsシステムはファイルの不足のために初期化して失敗しました。 –