2016-09-23 13 views
1

Apache Sparkを含むドッカーイメージを構築しようとしています。 ITはopenjdk-8-jreの公式イメージに基づいて構築されています。Apache SparkがスタンドアロンクラスタモードのDockerコンテナ

Sparkをクラスタモードで実行し、少なくとも1つのマスター(sbin/start-master.shで開始)と1つ以上のスレーブ(sbin/start-slave.sh)を持つことが目標です。 Dockerfileとentrypointスクリプトについては、spark-standalone-dockerを参照してください。

実際にビルド自体が進行していますが、問題は、コンテナを実行したいときにすぐに開始して停止することです。原因は、Sparkマスター起動スクリプトがマスターをデーモンモードで起動して終了することです。したがって、コンテナは終了します。プロセスがフォアグラウンドでもう実行されていないからです。

明白な解決策は、フォアグラウンドでスパークマスタープロセスを実行することですが、私はどのように(Googleはどちらも起動しませんでした)。私の「回避策 - 解決策」は、tails -fをSparkのログディレクトリで実行することです。

したがって、私の質問は以下のとおりです。

  1. どのようにあなたがフォアグラウンドでApacheのスパークマスターを実行できますか?
  2. コンテナを「生きている」状態に保つための推奨される(つまり、ベストプラクティスの)解決策は何ですか(無限ループとスリープコマンドを使用したくないのですが)。

答えて

2

どのようにフォアグラウンドでApache Spark Masterを実行できますか?

spark-classMasterを使用できます。

bin/spark-class org.apache.spark.deploy.master.Master 

と労働者のための同じ事:

bin/spark-class org.apache.spark.deploy.worker.Worker $MASTER_URL 

本番準備ソリューションを探しているなら、あなたはdumb-inittiniなどの適切な監督を使用して検討すべきです。

+0

魅力のように動作します、ありがとうございます!監督者について:私はマスターとスレーブを別々のコンテナとして運営しようと考えています。スーパーバイザーを使用した主な理由は、1つのコンテナー内で複数のデーモンを実行していることです。私が気付いていない別のものがありますか? –

+0

最終的なdoはありません。ここでは行いませんが、理由については、https://engineeringblog.yelp.com/2016/01/dumb-init-an-init-for-docker.htmlをご覧ください。 – zero323

関連する問題