問題タブ [spark-jobserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spark-jobserver - Spark JobServer にクエリを実行し、Jar が格納されている場所を見つけるにはどうすればよいですか?
私はこのドキュメントに従おうとしています:
https://github.com/spark-jobserver/spark-jobserver#dependency-jars
ドキュメントに記載されているオプション2は次のように述べています:
ジョブを送信するときに、dependent-jar-uris をジョブ構成パラメーターで使用することもできます。アドホック コンテキストでは、これはdependent-jar-uris コンテキスト構成パラメーターと同じ効果があります。永続コンテキストでは、jar は現在のジョブに対してロードされ、次に永続コンテキストで実行されるすべてのジョブに対してロードされます。curl -d "" 'localhost:8090/contexts/test-context?num-cpu-cores=4&memory-per-node=512m' OK⏎ curl 'localhost:8090/jobs?appName=test&classPath=spark.jobserver.WordCountExample&context= test-context&sync=true' -d '{dependent-jar-uris = ["file:///myjars/deps01.jar", "file:///myjars/deps02.jar"], input.string = "abcab 「}」を参照してください。jars /myjars/deps01.jar & /myjars/deps02.
「file:///myjars/」ディレクトリは SJS ノードの JAR ディレクトリですか、それともカスタム ディレクトリですか?
Windows ボックスにクライアントがあり、Linux ボックスに Spark JobServer があります。次に、JAR を SJS ノードにアップロードします。SJS ノードはその Jar をどこかに置きます。次に、ジョブを開始して「dependent-jar-uris」を設定するために呼び出すと、SJS ノードは以前にアップロードした JAR を見つけてジョブを実行します。
「dependent-jar-uris」を「file:///tmp/spark-jobserver/filedao/data/simpleJobxxxxxx.jar」に設定
これは問題なく動作しますが、手動で SJS ノードを検索してこの場所 (例: file:///tmp/spark-jobserver/filedao/data/simpleJobxxxxxx.jar) を見つけ、それを今後のリクエストに追加して開始する必要がありました。仕事。
代わりに、「dependent-jar-uris」で file:/// パスを正しく設定できるように、クライアントから REST 呼び出しを行って、Spark JobServer が jar をアップロードしたときにその jar を配置するパスを取得する方法を教えてください。プロパティを動的に?
spark-jobserver - Spark-Jobserver で FAIR スケジューラを構成するにはどうすればよいですか?
同時ジョブサーバー リクエストを送信すると、常に FIFO モードで処理されているように見えます。これは、FAIR スケジューラを有効にするために最善を尽くしたにもかかわらずです。リクエストが常に並行して処理されるようにするにはどうすればよいですか?
背景: 私のクラスターには、ユーザーがリクエストを送信してデータを処理できる SparkContext が 1 つあります。各リクエストは異なるデータ チャンクに対して動作する場合がありますが、操作は常に同じです。1 分間の小さなジョブは、1 時間の大きなジョブが完了するまで待つ必要はありません。
直感的には、次のことが起こると予想されます (以下の構成を参照してください)。 コンテキストは FAIR プール内で実行されます。ユーザーが何らかのデータを処理するリクエストを送信するたびに、Spark は公平なプールを分割し、その新しいリクエストを処理するためにクラスター リソースの一部を提供する必要があります。その後、各リクエストは他の同時リクエストと並行して FIFO モードで実行されます。
同時ジョブを実行すると実際に何が起こるかを次に示します。インターフェイスには「1 Fair Scheduler Pools」と表示され、「default」という名前のアクティブな (FIFO) プールが 1 つリストされます。すべてが FAIR プール内で単独で実行されている同じ FIFO プール内で実行されているようです。フェア プールの詳細が Spark の環境ページに正しく読み込まれていることがわかりますが、リクエストはすべて FIFO 方式で処理されます。
すべてのリクエストが実際に他のリクエストと並行して実行されるように、環境/アプリケーションを構成するにはどうすればよいですか? リクエストごとに個別のコンテキストを作成する必要がありますか? FAIR プール内に任意の数の同一の FIFO プールを作成し、リクエストが行われるたびに空のプールを何らかの方法で選択しますか? Jobserver の目的を考えると、これはすべて自動的に行われ、セットアップがそれほど複雑ではないように思われます。以下は、単純な間違いを犯した場合に備えて、構成の詳細です。
local.conf から:
scheduler.xml から:
アイデアやポインタをありがとう。用語の混乱をお詫びします。ジョブ サーバーでは、「ジョブ」という言葉には 2 つの意味があります。
scala - Spark Job Server での NamedObjects による永続化
最新の SJS バージョン (マスター) を使用しており、アプリケーションは SparkHiveJob を拡張します。runJob の実装には、次のものがあります。
eDF1を永続化したいので、次のことを試しました
次のコンパイルエラーが発生する場所
明らかにこれは間違っていますが、何が間違っているのかわかりません。私はScalaにかなり慣れていません。
NamedObjectSupport からこの構文を理解するのを手伝ってくれる人はいますか?