Apache Sparkとは何か――使い方や基礎知識を徹底解説:Amazon EMRで構築するApache Spark超入門(1)(3/3 ページ)
本連載では、Sparkの概要や、ローカル環境でのSparkのクラスタの構築、Sparkの基本的な概念やプログラミングの方法を説明していきます。
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.
関連記事
- 知らないと大損する、Apache Sparkの基礎知識と3つのメリット
社会一般から大きな注目を集めているIoT(Internet of Things)。だが、その具体像はまだ浸透しているとはいえない。今回は、IoTやビッグデータのキーテクノロジとして注目されている「Apache Spark」について、Sparkを製品に取り込んでいる日本IBMの土屋敦氏と、数多くの企業のデータ分析を担うブレインパッドの下田倫大氏に話をうかがった。 - Sparkのエンタープライズ対応が「成熟」――Clouderaが宣言
HadoopディストリビューターもあらためてSparkへの注力をアピール。既に800ノード超のSparkクラスターを運用するユーザーも存在するという。 - Sparkは“誰”に例えられる?──多様化と進化を続ける「Hadoop」、人気急上昇「Spark」
先日、日本Hadoopユーザー会主催のイベントが開催されました。データベースと関係性が深いデータ分散処理プラットフォームである「Hadoop」と「Spark」の最近事情に迫ります。