Cloudera社のSpark研修

Sparkに興味があり、その開発スキルを短時間で身につけたいと考え、Cloudera社の3日間の研修に行かせて頂きました。

この研修は座学半分、ハンズオン半分の研修で、Cloudera社に直接質問できるメリットがあります。1日目が終わる頃にはMapReduceの欠点とそれをSparkで解決する方法を自分の言葉で説明できるようになり、2日目が終わる頃にはSparkアプリケーションがscalaで書けるようになりました。そして3日目にはSpark Streamingアプリケーションを組めるようになりました。

1日目

Sparkの必要性を理解する

1日目の内容は、

Sparkプログラミング=RDDの操作=関数型プログラミング

であることを理解することでした。

背景としては、hadoopがjarをデータノードに送り、データがある場所で実行するアーキテクチャであることがあります。これをローカリティといいます。
しかし、jarの中身は任意ではなく、mapper,reducerしか送れないという事情があります。
これを任意のjar(すなわち関数)を送信できるようにすれば便利じゃね?というのがSparkの根本的なアイディアだと思います。

そのため、関数を第一級オブジェクトとしてデータノードに転送し、遅延評価をデータノードで行うという関数プログラミングのアーキテクチャがぴったりあてはまることになります。

このアイディアを実装に移すのは意外にハードルが高く、リネージュとステージ分解を厳密に考える必要があります。

また、Sparkを有名にしているのは、オンメモリ処理が可能である点です。

背景としては、hadoopにオンメモリ処理ができないという弱点があることです。これは、シャッフル処理でネットワーク転送が発生するため、オンメモリ処理の恩恵が薄いためです。
これについてもリネージュとステージ分解を考えた上でcache/persistを使い分けることで、オンメモリをフル活用することが出来ます。

「Hadoopの100倍の性能をたたき出すSpark」

を実現するためには、Hadoopアーキテクチャとその弱点を知り尽くしている必要があります。

2日目

Sparkプログラミングをできるようになる

実践性を深めるため、手を動かしながら以下の点にまず習熟します。

  • HDFS
  • クラスタ実行/UIツール
  • mapPartitions/パーティション
  • checkpoint/リネージュ削除

また、Sparkでオンメモリ処理をできるようになるために、

  • cache/persist

の仕組みを学習します。

この日の最終課題は、数か月分のApacheアクセスログから、集計指標を計算するアプリケーションを作成し、HDFS+擬似分散クラスタで実行させることです。

3日目

SparkStreamingをできるようになる

Spark Streamingは、SparkをsocketやKinesisに接続し、リアルタイム処理を行うための機能です。

この日前半の課題は、socketを監視し、リアルタイム分析するアプリケーションを作成し、Standaloneで実行させることです。

反復型Sparkプログラミングをできるようになる

反復型Sparkプログラミング(ページランク計算や機械学習など)をできるようになるための訓練です。(現実的にはこれが一番大事で、HadoopからSparkへの移項はここからになるのです。)

  • K-means

この日後半の課題は、K-means法をSparkで実装することです。これは非常に簡単で、Sparkの威力を思い知りました。

Sparkアプリケーションのチューニングをできるようになる

  • ブロードキャスト
  • アキュミュレーター
  • リパーティショニング

です。

アキュミュレーターはブロードキャストに手間取り、終わりませんでした。いつか自分で実装したいと思います。

その他、公式のカリキュラムにあるものは全部教えて頂きました。

3日でここまで出来るようになったので、いい講習だったのではないかと思います。

授業というものを受けるのも学生時代以来初めてです。講師の方は知識豊富で、話がわかりやすく、時間配分が上手く、責任感のある方でした。また、物事のいい面だけを強調することはなく、常にトレードオフがあることを前提にした説明をされており、誠実な方だと思いました。質問にも全て答えてくださいました。

早速YARNクラスタを立てようと思います。

「Cloudera社のSpark研修」への1件のフィードバック

  1. ピンバック: 並列計算についてのスーパー老害トーク(2005年〜2018年) | The Big Computing

コメントは受け付けていません。