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のログディレクトリで実行することです。
したがって、私の質問は以下のとおりです。
- どのようにあなたがフォアグラウンドでApacheのスパークマスターを実行できますか?
- コンテナを「生きている」状態に保つための推奨される(つまり、ベストプラクティスの)解決策は何ですか(無限ループとスリープコマンドを使用したくないのですが)。
魅力のように動作します、ありがとうございます!監督者について:私はマスターとスレーブを別々のコンテナとして運営しようと考えています。スーパーバイザーを使用した主な理由は、1つのコンテナー内で複数のデーモンを実行していることです。私が気付いていない別のものがありますか? –
最終的なdoはありません。ここでは行いませんが、理由については、https://engineeringblog.yelp.com/2016/01/dumb-init-an-init-for-docker.htmlをご覧ください。 – zero323