検索
連載

Apache Sparkとは何か――使い方や基礎知識を徹底解説Amazon EMRで構築するApache Spark超入門(1)(3/3 ページ)

本連載では、Sparkの概要や、ローカル環境でのSparkのクラスタの構築、Sparkの基本的な概念やプログラミングの方法を説明していきます。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

WebUIで処理状況を確認する

 WebUIでは処理の状況を確認できます。アプリケーション一覧から、Application IDをクリックします(app-20160729140037-0000のような文字列です)。その次のページで、Application Detail UIというリンクを開きましょう。そうすると、先ほど実行した処理がジョブ一覧に表示されています。

 ジョブを選択すると、ステージ一覧が表示されます。また、ステージを選択するとタスクの一覧が表示されます。

  • ジョブ:Sparkの処理内で、計算(※)を実行するとジョブが作成される
  • ステージ:ジョブはデータのシャッフルが必要な場合に複数のステージに分割される
  • タスク:ステージは複数のタスクを持つ。ワーカーに対して送られる並列実行可能な処理をタスクという

※アクション系のメソッドを指します。この意味は後述します。

SparkのRDDを理解する

 Sparkには、重要な抽象的概念として、「RDD(Resilient Distributed Dataset)」があります。RDDはクラスであり、大規模データセットを操作する役割を持ちます。

scala> sc.parallelize(1 to 1000, 10)
res0: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:28

 上記コマンドの返り値の型を見てみるとRDD[Int]とあり、Int型の値のデータセットであることが分かります。上記はInt型のRDDですが、RDD[String]や、自分で用意したMyClass型を持つRDD[MyClass]も作ることができます。

 RDDオブジェクトに対して、実行できるメソッドは「変換」と「アクション」の2種類に分けられます。

  • Transformations(変換):mapやfilter、groupByKey、reduceByKeyなど、データセットの値を変換するメソッド。返り値はRDDオブジェクトとなる
  • Actions(アクション):reduceやcollect、count、firstなど、データセットをまとめる計算を行うメソッド。返り値は計算結果の型となる

変換処理は遅延評価

 変換系のメソッドはアクション系のメソッドが実行されるまで実行されないという特徴があります。この遅延評価のおかげで、結果として必要なデータだけで計算することができます。これは、計算を必要最低限にするために有効です。大規模データの分析では、こういうことが処理スピードに大きくかかわることがあります。

 例えば、下記コードだけでは計算されずRDDオブジェクトを返却するだけですが、

val evenNumbers = sc.parallelize(1 to 1000, 10).filter(_%2 == 0)

 下記のようにアクションのメソッドを呼び出すことで初めて計算されます。

evenNumbers.collect

クラスタのノード上にキャッシュ

 データに対して連続的にアクセスする際にはキャッシュが有効です。

 下記は、1から1000までの数値で5の倍数のデータセットです。

val multiplesOf5 = sc.parallelize(1 to 1000, 10).filter(_%5 == 0).cache
 
multiplesOf5.reduce(_+_)
// 1回目のアクションは通常通りです。
 
multiplesOf5.reduce(_+_)
// 2回目の参照からキャッシュを使用します。

 キャッシュを取得しないと、都度フィルター処理が実行されてしまいますが、キャッシュを使うと、2回目から各ワーカー内のキャッシュから、結果を直接取得できます。

 キャッシュは連続してデータを扱う際に有効な機能です。

次回は、SparkをAmazon EMR上で動かす

 次回は、Sparkのアプリケーションを作成して、Amazon EMR上で動かすところまで説明したいと思いますので、お楽しみに。

Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る