【あぱっちすぱーく】

Apache Spark とは?

💡 ビッグデータを「メモリ上で爆速処理」する分散コンピューティングの主役
📌 このページのポイント
Apache Sparkの分散処理 ドライバ(司令塔) ジョブを分割・配分 ワーカー 1 メモリ タスクA ワーカー 2 メモリ タスクB ワーカー 3 メモリ タスクC 結果を集約して返却 インメモリ処理で最大100倍高速
Apache Sparkの分散処理:ドライバがタスクを分割し、ワーカーが並列実行
ひよこ ひよこ

Apache Sparkって何がすごいの?

ペンギン先生 ペンギン先生

大量のデータを複数のコンピュータに分散して、一斉に処理できるフレームワークだよ。例えば1TBのログデータを分析するとき、1台のPCだと何時間もかかるけど、Sparkなら100台に分散して数分で処理できるんだ。

ひよこ ひよこ

Hadoopとどう違うの?

ペンギン先生 ペンギン先生

Hadoopは処理の途中結果をディスクに書き出すから遅いんだ。Sparkはデータをメモリ上に保持して処理するから、同じ処理でも最大100倍速い場合があるよ。特に機械学習みたいに同じデータに何度もアクセスする処理では差が歴然だね。

ひよこ ひよこ

どんな会社が使ってるの?

ペンギン先生 ペンギン先生

Netflix(レコメンデーション)、Uber(リアルタイム料金計算)、Goldman Sachs(リスク分析)など、大量データを扱う企業で広く使われているよ。日本でもYahoo! JAPANやLINEなどが活用しているんだ。

ひよこ ひよこ

Pythonでも使えるの?

ペンギン先生 ペンギン先生

PySpark というPython APIが用意されていて、pandasのような感覚でコードを書けるよ。しかも最近のバージョンではpandas APIも統合されて、pandas のコードをほぼそのままSpark上で分散実行できるようになったんだ。

ひよこ ひよこ

おもしろい!Sparkって学習コスト高そう…

ペンギン先生 ペンギン先生

フル機能を使いこなすのは確かに大変だけど、Spark SQLを使えばSQLを書くだけで分散処理ができるよ。Databricksというマネージドサービスを使えば環境構築も不要で、ノートブック上で対話的に分析できるんだ。最近はDatabricksがSpark開発の中心的存在になっているよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Apache Spark」って出てきたら「大量のデータをメモリで超高速に分散処理するエンジン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Apache Spark」 = アパッチ・スパーク(火花)
💬 UCバークレー校のAMPLabで生まれたプロジェクトで、「Spark(火花・閃き)」はHadoopに着火する速さの意味が込められているよ。Apache Software Foundationのトップレベルプロジェクトだよ
← 用語集にもどる