問題タブ [apache-spark-standalone]
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.
apache-spark - ワーカー、ワーカー インスタンス、エグゼキュータの関係は?
Spark スタンドアロン モードには、マスター ノードとワーカー ノードがあります。
ここにいくつかの質問があります:
- 2 つのワーカー インスタンスは、2 つのワーカー プロセスを持つ 1 つのワーカー ノードを意味しますか?
- すべてのワーカー インスタンスが特定のアプリケーション (ストレージ、タスクを管理する) のエグゼキューターを保持していますか、それとも 1 つのワーカー ノードが 1 つのエグゼキューターを保持していますか?
- ワードカウントなど、実行時にスパークがどのように機能するかを説明するフローチャートはありますか?
apache-spark - Spark にはどのクラスター タイプを選択すればよいですか?
私は Apache Spark を初めて使用しますが、Spark が次の 3 種類のクラスターをサポートしていることを知りました。
- スタンドアロン - Spark が独自のクラスターを管理することを意味します
- YARN - Hadoop の YARN リソース マネージャーを使用する
- Mesos - Apache の専用リソース マネージャー プロジェクト
まずはスタンドアローンでやってみようと思います。将来的には、大規模なクラスター (数百のインスタンス) を構築する必要があります。
どのクラスター タイプを選択すればよいですか?
apache-spark - Spark マスター マシンでの Executor の役割
Spark スタンドアロン クラスターでは、マスター ノードもタスクを実行しますか? エグゼキューター プロセスがマスター ノードで起動され、ワーカー ノードと一緒に動作するかどうかはわかりませんでした。
ありがとう!
hadoop - Spark を理解する: Cluster Manager、Master、および Driver ノード
この質問を読んだ後、追加の質問をしたいと思います。
- Cluster Manager は長時間実行されるサービスですが、どのノードで実行されていますか?
- マスター ノードとドライバー ノードが同じマシンになる可能性はありますか? これらの 2 つのノードは異なるべきであるという規則がどこかにあるはずだと思いますか?
- ドライバー ノードに障害が発生した場合、アプリケーションの再起動は誰が担当しますか? そして、正確には何が起こるでしょうか?つまり、マスター ノード、クラスター マネージャー、およびワーカー ノードが関与する方法 (関与する場合) とその順序は?
- 前の質問と同様に、マスター ノードに障害が発生した場合、正確には何が起こり、誰が障害から回復する責任がありますか?
apache-spark - Spark マスターに障害が発生するとどうなりますか?
ドライバーはマスターノードに常時アクセスする必要がありますか? それとも、最初のリソース割り当てを取得するためだけに必要ですか? Spark コンテキストが作成された後に master が使用できない場合はどうなりますか? アプリケーションが失敗するということですか?
apache-spark - Spark ストリーミング - スタンドアロン モード (各バッチの各アプリの作業フォルダー内のデータを削除しないクリーンアップ)
ストリーミングでは、以下のようにこれらのパラメータを設定しました spark.worker.cleanup.enabled true spark.worker.cleanup.interval 60 spark.worker.cleanup.appDataTtl 90
これにより、work/app-2016*/(1,2,3,4,5,6,...) フォルダー内の既に強制終了された Spark バッチ/ストリーミング ジョブ データがクリアされます。ただし、Spark Streaming ジョブを実行すると、現在の app-* の履歴データは削除されません。Kafka-Spark コネクタ jar を使用しているため、マイクロ バッチごとに、この jar を app jar と stderr と共にコピーし、各フォルダー (work/app-2016*/(1,2,3,4,5,6, ...) . Kafka-Spark コネクタは uber jar であり、約 15 MB であり、1 日で 100 GB になるため、これ自体が大量のメモリを消費しています。
現在実行中の Spark Streaming ジョブからデータを削除する方法はありますか、それともスクリプトを作成する必要がありますか?
apache-spark - 継続的に INFO JobScheduler:59 - Spark Standalone Cluster で時間 *** ミリ秒のジョブを追加しました
私たちは、8 コアと 32 GB RAM を備えた Spark スタンドアロン クラスターを使用しており、同じ構成の 3 ノード クラスターを使用しています。
ストリーミング バッチが 1 秒未満で完了することがありました。その時点で 10 秒以上かかる場合があり、以下のログがコンソールに表示されます。
この問題を解決する方法を教えてください。
apache-spark - Spark リソースのスケジューリング - スタンドアロン クラスター マネージャー
Spark で開発されたデータ パイプライン用の非常に低い構成のテスト マシンがあります。2 つの CPU と 8 GB の RAM しかない AWS t2.large インスタンスを 1 つだけ使用します。
2 つの Spark ストリーミング ジョブを実行する必要があるほか、バッチ ジョブをときどきテストするためのメモリと CPU パワーを残しておく必要があります。
したがって、マスターと 1 つのワーカーが同じマシン上にあります。
いくつかの一般的な質問があります: 1) 1 人のワーカーごとにいくつのエグゼキューターを実行できますか? デフォルトが 1 であることはわかっていますが、これを変更する意味はありますか?
2) 1 つのエグゼキュータが複数のアプリケーションを実行できますか、または 1 つのエグゼキュータが 1 つのアプリケーション専用ですか?
3)これを機能させる方法、アプリケーションが構成ファイルで使用できるメモリを設定する方法、またはスパークコンテキストを作成する方法はありますか?
ありがとうございました
apache-spark - Apache Spark: クライアント デプロイ モードとクラスター デプロイ モードの違い
TL;DR: Spark Standalone クラスターでは、クライアント デプロイ モードとクラスター デプロイ モードの違いは何ですか? アプリケーションを実行するモードを設定するにはどうすればよいですか?
3 台のマシンを含む Spark スタンドアロン クラスターがあり、そのすべてに Spark 1.6.1 がインストールされています。
- マスター マシン。アプリケーションを実行する場所でもあります。
spark-submit
- 2 台の同一のワーカー マシン
Spark Documentationから、次を読みました。
(...) スタンドアロン クラスターの場合、Spark は現在 2 つのデプロイ モードをサポートしています。クライアント モードでは、ドライバーは、アプリケーションを送信するクライアントと同じプロセスで起動されます。ただし、クラスター モードでは、ドライバーはクラスター内のワーカー プロセスの 1 つから起動され、クライアント プロセスは、アプリケーションの終了を待たずに、アプリケーションを送信する責任を果たすとすぐに終了します。
ただし、これを読んでも実際の違いはよくわかりません。また、さまざまな展開モードの長所と短所がわかりません。
さらに、start-submit を使用してアプリケーションを起動すると、プロパティspark.submit.deployMode
を「cluster」に設定しても、コンテキストの Spark UI に次のエントリが表示されます。
したがって、実際の違いを確認するために両方のモードをテストすることはできません。そうは言っても、私の質問は次のとおりです。
1) Spark スタンドアロンクライアントデプロイ モードとクラスターデプロイ モードの実際的な違いは何ですか? それぞれを使用することの長所と短所は何ですか?
2) を使用して、アプリケーションを実行するものを選択するにはどうすればよいspark-submit
ですか?
apache-spark - 異なる Spark バージョンから spark-shell にアクセスする
TL;DR : Spark シェル (ドライバー) を実行している Spark がまったく同じバージョンの Spark のマスターを持っていることが絶対に必要ですか?
Spark 1.5.0を使用して、spark-shell 経由でSpark 1.5.0-cdh5.5.0に接続しています。
接続し、SparkContext と sqlContext をインスタンス化します。私が実行した場合:
期待どおりにすべてのテーブルが表示されます。
ただし、テーブルからデータにアクセスしようとすると:
次のエラーが表示されます。
serialVersionUIDが一致しないと表示されます。私の仮説は、問題は 2 つの異なるバージョンの spark を接続しようとしたことが原因であるというものです。私が正しい場合、何かアイデアはありますか?