2014-06-17-get-started-with-spark-deploy-spark-server-and-compute-pi-from-your-web-browser-2.md 8.4 KB


title: 'Sparkを始めましょう: SparkサーバーをデプロイしてブウザからPiを計算する' author: Hue Team type: post date: 2014-06-17T00:00:45+00:00 url: /get-started-with-spark-deploy-spark-server-and-compute-pi-from-your-web-browser-2/ sf_thumbnail_type:

  • none sf_thumbnail_link_type:
  • link_to_post sf_detail_type:
  • none sf_page_title:
  • 1 sf_page_title_style:
  • standard sf_no_breadcrumbs:
  • 1 sf_page_title_bg:
  • none sf_page_title_text_style:
  • light sf_background_image_size:
  • cover sf_custom_excerpt:
  • | HueはブラウザからScalaとJavaのジョブを直接サブミットできるSpark Applicationを同梱しています。

    Sparkとやり取りするために、オープンソースのSpark Job Serverを使用します... sf_social_sharing:

  • 1 sf_sidebar_config:

  • left-sidebar sf_left_sidebar:

  • Sidebar-2 sf_right_sidebar:

  • Sidebar-1 sf_caption_position:

  • caption-right sf_remove_promo_bar:

  • 1 slide_template:

  • default categories:

  • Spark

  • Tutorial

  • Video


HueはブラウザからScalaとJavaのジョブを直接サブミットできるSpark Applicationを同梱しています。

Sparkとやり取りするために、オープンソースのSpark Job Serverを使用します。 (例: 一覧、Sparkジョブの投入、結果の取得、コンテキストの作成…)

これは、サービスとしてSpark Job Serverを実行する方法の詳細です。これは、以前記事で説明したデプロイモードに対して実働環境により適しています。私たちはCDH5.0とSpark 0.9を使用しています。

{{< youtube wU2QcCeBXCg >}}

サーバーのパッケージとデプロイ

ほとんどの使用方法はgithubにあります。

レポジトリをチェックアウトし、プロジェクトをビルドすることによって開始します。(注:Ubuntuを使ってディスクを暗号化している場合、/tmpの構築をする必要があります)。続いてSpark Job Serverのルートディレクトリから:

mkdir bin/config
cp config/local.sh.template bin/config/settings.sh

そして、settings.shのこれら2つの変数を:

LOG_DIR=/var/log/job-server
SPARK_HOME=/usr/lib/spark (or SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark)

それから全てをパッケージします:

bin/server_deploy.sh settings.sh
[info] - should return error message if classPath does not match
[info] - should error out if loading garbage jar
[info] - should error out if job validation fails
...
[info] Packaging /tmp/spark-jobserver/job-server/target/spark-job-server.jar ...
[info] Done packaging.
[success] Total time: 149 s, completed Jun 2, 2014 5:15:14 PM
/tmp/job-server /tmp/spark-jobserver
log4j-server.properties
server_start.sh
spark-job-server.jar
/tmp/spark-jobserver
Created distribution at /tmp/job-server/job-server.tar.gz

主要なtarbal、tarball /tmp/job-server/job-server.tar.gzを持っており、サーバーにコピーする準備ができています。

注:

server_deploy.shで自動的にファイルをコピーすることもできます。

Spark Job Serverを開始する

それからjob-server.tar.gzを展開し、サーバーのapplication.confをコピーします。’master’が正しいSpark MasterのURLを示していることを確認して下さい。

scp /tmp/spark-jobserver/./job-server/src/main/resources/application.conf hue@server.com:

masterを示すようにapplication.confを編集します:

# Settings for safe local mode development
spark {
  master = "spark://spark-host:7077"
  …
}

これがjobserverフォルダーの内容です:

ls -l
total 25208
-rw-rw-r-- 1 ubuntu ubuntu     2015 Jun  9 23:05 demo.conf
-rw-rw-r-- 1 ubuntu ubuntu     2563 Jun 11 16:32 gc.out
-rw-rw-r-- 1 ubuntu ubuntu      588 Jun  9 23:05 log4j-server.properties
-rwxrwxr-x 1 ubuntu ubuntu     2020 Jun  9 23:05 server_start.sh
-rw-rw-r-- 1 ubuntu ubuntu      366 Jun  9 23:13 settings.sh
-rw-rw-r-- 1 ubuntu ubuntu 13673788 Jun  9 23:05 spark-job-server.jar

注:

Spark Master Web UIを調査してsparkのURLを得ることもできます。

少なくともひとつのSpark workerがあることも確認します:  "Workers: 1"

従来は、Sparkをlocalhostにバインドしようとした時にいくつかの問題がありました (例 spark workerが開始しない)。私たちはspark-env.shにハードコードすることで修正しています:

sudo vim /etc/spark/conf/spark-env.sh

export STANDALONE_SPARK_MASTER_HOST=spark-host

ここでサーバーを開始して、プロセスをバックグラウンドで実行します:

./server_start.sh

grepして動作しているかを確認することができます:

ps -ef | grep 9999

ubuntu   28755     1  2 01:41 pts/0    00:00:11 java -cp /home/ubuntu/spark-server:/home/ubuntu/spark-server/spark-job-server.jar::/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/spark/conf:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/spark/assembly/lib/*:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/spark/examples/lib/*:/etc/hadoop/conf:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hadoop/*:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hadoop/../hadoop-hdfs/*:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hadoop/../hadoop-yarn/*:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hadoop/../hadoop-mapreduce/*:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/spark/lib/scala-library.jar:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/spark/lib/scala-compiler.jar:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/spark/lib/jline.jar -XX:+UseConcMarkSweepGC -verbose:gc -XX:+PrintGCTimeStamps -Xloggc:/home/ubuntu/spark-server/gc.out -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -Xmx5g -XX:MaxDirectMemorySize=512M -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.manage

これだけです!

Piのサンプルを実行する!

Spark Job Serverは、一つのコマンドドでビルドできるいくつかのを備えています。Pi ジョブを実行しましょう。

http://hue:8888/sparkでSpark Appをオープンし、applicationタブに移動してjob-server-tests-0.3.x.jarをアップロードします。

ここでエディタにて、この実行するクラスspark.jobserver.LongPiJobを指定し、実行します!

Spark MasterのUIでもSparkアプリケーションが実行していることがわかるでしょう。長時間実行しているアプリケーションを取得したい場合、コンテキストを作成し、その後このコンテキストをエディタでアプリケーションに割り当てます。

spark-master-ui

 

まとめ

これはThis is how we setup the Spark Server on demo.gethue.com/sparkでSpark Serverをどのようにセットアップするかを示しています。いつものように、コメントはhue-userメーリングリストや@gethueまでお気軽に!

Happy Sparking!

PS: Hue or Job Server talks at the upcoming Spark SummitでのhueまたはJob Serverのセッションでお会いできることを楽しみにしています!