LoginSignup
11
10

More than 5 years have passed since last update.

CDH5の環境でSpark 2.0を試してみる

Last updated at Posted at 2016-09-30

ClouderaのHadoopディストリビューション、CDH5の最新版(CDH5.8)には Apache Spark 1.6 が同梱されています。一方、今年の6月にはSparkの新しいメジャーバージョン、Spark 2.0がリリースされました。


2016/03追記: この記事公開時点ではβ版としてのリリースでしたが、2016年12月からSpark2.0はGAになっています。(Tech previewではありません)。なので、サブスクリプションを購入している場合はサポート対象です。

なお、Spark 2.0 release 2 というリリースが現時点の最新になっており 1、Spark 2.1からバックポートされたパッチも含まれています。ご利用になる場合はKnown Issue 2 をご覧の上ご注意ください。


ローカルで試すのは簡単ですが、既存のCloudera Managerで構築しているクラスタに導入するのは面倒です。放置していましたが、昨日のClouderaのブログで Spark 2.0 のβ版が利用できるようになったという良いニュースを発見。
スクリーンショット 2016-09-30 8.36.24.png

早速手元の Cloudera Quickstart VMの環境で試してみました。。

環境

  • Spark 2.0
  • CDH 5.8
  • Cloudera Manager 5.8

Spark 2.0をセットアップ

手元のCloudera Quickstart VMに導入します。

Spark 2.0のダウンロードページ。
https://www.cloudera.com/downloads/spark2/2-1.html

[2017/04/19 追記] Spark 2.1のリリースにより、URLが変わりました。

インストール手順は以下に記載されています。
http://www.cloudera.com/documentation/spark2/latest/topics/spark2_installing.html

Cloudera ManagerでSpark 2.0をセットアップするための準備

CSDファイルをダウンロード

Spark 2.0をCloudera Managerからセットアップするためのファイルをダウンロードします。URLは上記のダウンロードページを参照してください。

スクリーンショット 2016-09-30 8.38.45.png

CSDをセットアップ

ダウンロードしたCSDファイルを所定の位置に配置する必要があります。詳細は下記も参照してください。
http://www.cloudera.com/documentation/enterprise/latest/topics/cm_mc_addon_services.html#concept_kpt_spj_bn

[cloudera@quickstart ~]$ sudo su -
[root@quickstart ~]# cd /opt/cloudera/csd/
[root@quickstart csd]# ls
[root@quickstart csd]# cp ~cloudera/Downloads/SPARK2_ON_YARN-2.0.0.cloudera.beta1.jar .
[root@quickstart csd]# chown cloudera-scm:cloudera-scm SPARK2_ON_YARN-2.0.0.cloudera.beta1.jar 
[root@quickstart csd]# chmod 644 SPARK2_ON_YARN-2.0.0.cloudera.beta1.jar 
[root@quickstart csd]# service cloudera-scm-server restart
Stopping cloudera-scm-server:                              [  OK  ]
Starting cloudera-scm-server:                              [  OK  ]
[root@quickstart csd]# 

Parcelをアクティベート

Cloudera ManagerにログインしてCloudera Management Service を再起動します。

スクリーンショット 2016-09-30 8.43.30.png

この操作によりSpark 2のParcelが表示されます。

スクリーンショット 2016-09-30 8.53.33.png

iというアイコンをクリックしたところβ版と表示されました。

スクリーンショット 2016-09-30 8.54.14.png

以下の順序で各ノードに配布します。

  • ダウンロード
  • 配布
  • アクティベート

スクリーンショット 2016-09-30 8.54.42.png

これで準備OKです。

スクリーンショット 2016-09-30 8.56.04.png

Cloudera Manager から Spark2 サービスを追加

他のサービス(HDFSやImpala)と同様に Spark2サービスを追加します。今回は1ノードなので、History ServerもGatewayも同じノードに設定しました。Cloudera Managerのホームに戻り、サービスを追加します。

スクリーンショット 2016-09-30 8.57.49.png

「サービスを追加します」を選ぶと Spark 2 が選べるようになっています。

スクリーンショット 2016-09-30 8.58.06.png

画面の指示に従い進みます。
スクリーンショット 2016-09-30 8.59.10.png
導入中...

スクリーンショット 2016-09-30 9.02.03.png

これでSpark 2が利用できるようになりました。

スクリーンショット 2016-09-30 9.02.12.png

Spark 2サービスの起動

Spark 2サービスが追加されています。

スクリーンショット 2016-09-30 9.02.42.png

Spark 2サービスのページ

スクリーンショット 2016-09-30 9.03.01.png

Spark 2を試す

セットアップしたSpark2.0で簡単なコードを実行します。テスト用に適当なファイル(今回はwordsというファイル)をHDFSにアップロードしておきます。

[cloudera@quickstart ~]$ hdfs dfs -put /usr/share/dict/words 

アップロードしたら spark2-shell (spark-shellではない)をYARN上で実行します。

[cloudera@quickstart ~]$ spark2-shell --master yarn-client
Warning: Master yarn-client is deprecated since 2.0. Please use master "yarn" with specified deploy mode instead.
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel).
16/09/29 17:04:05 WARN util.Utils: Your hostname, quickstart.cloudera resolves to a loopback address: 127.0.0.1; using 192.168.2.130 instead (on interface eth1)
16/09/29 17:04:05 WARN util.Utils: Set SPARK_LOCAL_IP if you need to bind to another address
16/09/29 17:04:17 WARN spark.SparkContext: Use an existing SparkContext, some configuration may not take effect.
Spark context Web UI available at http://192.168.2.130:4040
Spark context available as 'sc' (master = yarn, app id = application_1475193637312_0001).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.0.0.cloudera.beta1
      /_/

Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_67)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

行数のカウント

アップロードしたファイルの先頭3行を表示し、行数をカウントします。

scala> sc.textFile("/user/cloudera/words").take(3)
res1: Array[String] = Array(1080, 10-point, 10th)

scala> sc.textFile("/user/cloudera/words").count()
res0: Long = 479829                                                             

円周率の計算

http://spark.apache.org/examples.html
上記のページにあるサンプルコードを利用して円周率を計算します。

scala> val count = sc.parallelize(1 to 100).map{i =>
     |   val x = Math.random()
     |   val y = Math.random()
     |   if (x*x + y*y < 1) 1 else 0
     | }.reduce(_ + _)
count: Int = 81                                                                 
scala> println("Pi is roughly " + 4.0 * count / 100)
Pi is roughly 3.24

scala> :quit
[cloudera@quickstart ~]$ 

(おまけ)WebUI (History Server) のスクリーンショット

スクリーンショット 2016-09-30 9.13.42.png

ジョブ一覧

スクリーンショット 2016-09-30 9.13.56.png

ジョブ

スクリーンショット 2016-09-30 9.15.06.png

まとめ

このようにCDH5環境でSpark2.0をセットアップして動作させることができました。Spark 2系をCloudera環境で利用することはできますが、いずれSpark 2.xがCDHに同梱され、もっと簡単にセットアップできるようになるでしょう。楽しみです。

11
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10