ApacheSparkとは何?基礎知識と使い方を解説!
Apache Sparkという言葉を聞いたことがある人が多いですが、どういうものか分からない人は多いです。ここではApache Sparkとは何か、どのように活用するのか、Apache Sparkの基本知識と使い方を説明していきます。
目次
- 1Apache Sparkとは
- ・Apache Sparkの基本知識
- ・Hadoopとの違い
- 2Apache Sparkの特徴
- ・データの形式を選択できる
- ・プログラミング手法が豊富
- 3Apache Sparkを導入するメリット
- ・ビッグデータの処理
- ・データの高速処理
- ・ビックデータを扱う機械学習
- 4Apache Sparkの活用シーン
- ・繰り返し処理
- ・リアルタイム処理
- 5Apache Sparkの不得意分野
- ・TB以上のビッグデータ処理
- ・秒以下の短いレスポンス
- 6Apache Sparkの分散処理
- ・RDDとは
- ・RDDの仕組み
- 7Apache Sparkの使い方
- ・Apache Sparkをインストールする
- ・Sparkシェルの起動
- ・ログファイルにアクセスする
- ・Spark shell application UI(ウェブインターフェース)で確認する
- 8Apache Sparkのダウンロード
- ・Apache Sparkの公式サイト
- ・Apache Sparkのダウンロードサイト
- ・最後に
- ・合わせて読みたいビジネスにも使えるソフトなどの記事
Apache Sparkとは
Apache Spark(アパッチスパーク)とは、膨大なデータを一気に処理する時に使うツールです。巨大なデータを高速で分解処理できるのが特徴です。オープンソースのフレームワークです。
Apache Sparkは何百台のパソコンで同時に処理しないといけないようなデータを分析するときや、膨大な量の計算を並行して行うときに使えるのです。
主に企業などの大規模な場所で活用されるものなので、個人で使用することはあまりありません。
Apache Sparkの特徴はビッグデータの分析処理に向いていることと、PCにインストールするのが無料であることです。便利な使い方ができるフレームワークを、基本知識さえあれば誰でも活用できるのです。
Apache Sparkの基本知識
Apache Sparkの基本知識で重要なこととはAPIが用意されているのでScala、Java、R、Pythonなどの言語に対応していることです。さまざまな言語表現に対応しているので、幅広いジャンルで活用することができます。
Apache Sparkの基本的な使い方はコマンドを入力したり、関数などをつかったりしてデータの分析処理をしていきます。Apache Sparkを使う際にはある程度のコマンドの知識と関数などの知識が必要になります。
またApache Sparkには活用するのに向いているシーンと向いていないシーンがあるので、あなたが仕事に必要な環境がApache Sparkを使うのに向いているシーンなのかを知る必要もあります。
Apache Sparkの画面は黒い背景に白い文字を羅列するので、コマンドプロンプトのような雰囲気です。Apache Sparkのコマンドや関数などをある程度知っておかないと使えないので、一覧に記録しておきましょう。
Apache Sparkはインストールする手順は簡単なのですが、覚えておかないとApache Sparkを使えない基本知識が多く、初心者向きのフレームワークではありません。
しかしApache Sparkを導入することで、データ分析処理を毎日のように行う職場なら、仕事の効率が圧倒的によくなります。
Hadoopとの違い
Apache Sparkに似たオープンソースのフレームワークに、Hadoopがあります。ただApacheSparkはHadoopとは違い高速の分析処理が遅いという特徴があります。
分析処理するデータの内容にもよりますが、場合によってはApache SparkはHadoopの1000倍速い速度でデータを分析処理できるのです。ここまで差が出る理由のひとつにHadoopは機械学習が苦手というデメリットがあります。
最近はブラウザアプリや音楽アプリなどであなたの使用方法を分析し、学習する機能が人気になっています。Hadoopはこの機械学習が苦手だったのですが、Apache Sparkは得意なのです。そこが最大の違いです。
ただ今Hadoopを職場で使っている場合は、Apache Sparkに変えると仕事の効率が上がる可能性があります。
Apache SparkとHadoopは基本的な構造や機能などに少しづつ違いがあるため、どちらの方が優れているという比べ方ではなく、この作業にはApache Sparkの方が向いている、この作業にはHadoopの方が向いているといった比べ方をしましょう。
Apache SparkとHadoop、それぞれの基本知識とメリット/デメリットの違いを把握して、それにあった条件での使い方をすることで仕事に活用できます。
HadoopはApache Sparkと違いメモリを活用できる設計ではないので、同じデータの分析処理でも毎回一からやり直すため、ひとつのデータを処理するのに多くのアクセスを必要とします。
これがタイムロスやPCや回線への負担に繋がってしまうので、効率的ではないのです。でもApache Sparkの場合はメモリを活用できるので処理スピードがはやくなります。
Apache Sparkの特徴
Apache Sparkは分析速度が速いことや機械学習が得意なことの基本知識が分かったところで、ここからはそれ以外のApache Sparkの特徴について細かく紹介していきます。
Apache Sparkにはインストールが無料で簡単というメリットもありますが、デメリットもあります。
しかしまずは基本的な特徴を知って、Apache Sparkとはどのようなフレームワークなのか、どういったシーンで使うのに適しているのかを把握しておきましょう。
データの形式を選択できる
Apache Sparkの特徴はいくつか用意されているデータ形式の中から、あなたが使いたい形式を選択することができることです。
Apache Sparkで分析処理しようとしている膨大なデータファイルがそれぞれ違う形式のものでも、違う形式のフレームワークをインストールし直す必要がありません。
Apache Sparkの基本知識として覚えておくと、いつもと違う形式でデータの分析処理をするときに間違えて、改めて別のフレームワークをインストールする失敗が防げます。
また対応ストレージが4種類あります。Apache Sparkが対応しているストレージはHadoop Distributed File System (HDFS)、Cassandra、OpenStack Swift、Amazon S3です。
プログラミング手法が豊富
Apache Sparkの特徴はデータ形式だけではなく、プログラミング手法も豊富です。プログラミング手法とはプログラムを書き換えるときの操作方法のことで、データの種類や使うPCによって手法を変えるのが一般的です。
仕事の内容によってはいくつかのプログラミング手法を使い分けることがありますが、プログラミング手法によって別々のフレームワークをインストールする必要があると、PCの空き容量が減ってしまいます。
Apache Sparkのプログラミング手法で代表的なものは、HiveQL(Hadoop+Hive)、Pig(Hadoop+Pig)、Hadoop Streamingを使用することで標準入出力を介してPythonなどから制御などです。
Apache Sparkを導入するメリット
CSVに変換すると186MBくらいしかないので、Apache Sparkで分散並列処理するメリットはほとんどないのだけど、Spark SQLを使った実習問題として洋楽データベースは楽しいのではないかと。
— data_sciesotist (@data_sciesotist) October 20, 2014
基本的な特徴だけでもメリットが多いApache Sparkは、実際に導入するメリットとはどのようなものなのでしょうか?
どのフレームワークにもPCへインストールできるアプリにもメリットとデメリットがあります。デメリットがあなたの仕事に致命的にならないかを確認しておくことで、仕事の環境づくりを失敗することがありません。
ここからはPCに無料でインストールできるApache Sparkのメリットについて説明していきます。
ビッグデータの処理
Apache Sparkの特徴として多彩なライブラリがあるため、数百台のPCで一斉に処理しないといけないようなビッグデータでも高速で分析処理することができます。
Apache SparkはHadoopよりも分析処理が速いのは基本知識ですが、その理由はこうした特徴にあります。
契約者の個人情報を管理している企業や、通販サイトなどを運営していて購入/注文/キャンセルなどの情報処理を膨大な回数毎日のようにビッグデータを処理する企業などに向いているフレームワークなのです。
毎日のようにビッグデータを扱う仕事の場合は、Apache SparkをPCにインストールした方がいいでしょう。またすでにHadoopを使っていて物足りなさを感じている場合でもインストールしてください。
データの高速処理
Apache Sparkには機械学習の機能があるため、一度データの分析処理を行うとその処理パターンを記憶します。他のフレームワークと違い、同じ条件のデータ処理を次に行う場合は初回よりも早く処理できるため、分析処理のスピードがとても速いです。
HadoopにはApache Sparkと違い分析処理機械には学習能力がないため、人間のように回数を重ねるたびにひとつの作業にかかる時間が減ることがありません。
しかしApache Sparkには学習能力がある分析処理ツールなので、同じ条件の情報処理を繰り返す使い方の場合は、回数を重ねるごとにデータの分析処理にかかる時間が短くなっていくのがメリットです。
ビックデータを扱う機械学習
最近のスマホアプリなどにも一般的に搭載されている機械学習は、個別のデータ分析処理向きです。個別のデータ分析処理とはユーザーの使用履歴から好みなどを把握して、おすすめの音楽やコンテンツを提案するのが特徴です。
Hadoopにはこの個別のデータ分析処理向きの機械学習も搭載されていませんが、Apache SparkはHadoopと違い、この機械学習の機能が搭載されています。
またApache Sparkに搭載されている機械学習は、一度にいくつものデータを並行して分析処理するビッグデータ用の機械学習です。個人ではなく、企業などの大規模なデータ処理にこのメリットを導入できるのです。
Apache Sparkの活用シーン
ビッグデータの処理に向いているApache Sparkを活用するべきシーンとは、どのようなシーンなのでしょうか?
ここからはApache Sparkの活用シーンを紹介していきます。Apache Sparkには向いているシーンと向いていないシーンがあります。
あなたの職場がApache Sparkに向いているシーンだった場合はインストールした方がいいですが、向いていないシーンだった場合はインストールを検討し直しましょう。
繰り返し処理
一般的なデータの切り出しや永続化するのにApache Sparkは向きませんが、それとは違い、同じ条件のデータを繰り返し処理する場合には向いています。その理由は機械学習を生かせるからです。
同じ条件のデータを何度も繰り返し分析処理する時は機械学習のあるフレームワークと、機械学習のないフレームワークでは分析処理にかかる時間に差が出るため、繰り返しているうちに大きく時間を節約できるのです。
Hadoopの場合はメモリ上にキャッシュを保存しておけないので、繰り返し処理でも毎回一からデータ分析処理を行うことになります。これが動作コストに繋がるので、問題視されているのです。Apache Sparkはこの問題が起こりません。
Apache Sparkで繰り返しのデータ分析処理を行う場合は、機械学習というメリットを十分に生かすことができます。しかし毎回違う条件のデータを分析処理する場合は、Apache Sparkの機械学習のメリットを生かすことができません。
ただこの場合はHadoopなら、機械学習がないのでメリットが活用できないという心配はありません。もし今の職場にHadoopを導入している場合は、そのままHadoopを活用しつづけましょう。
リアルタイム処理
またHadoopの1000倍の速度で分析処理できるApache Sparkは、リアルタイム処理に最適です。時間をかけずにさっとビッグデータを分析処理して対応したい場合に、スムーズに作業が進むのです。
逆に時間をかけてもいいビッグデータの分析処理の場合は、高速のデータ処理というメリットを生かせないので、うまくApache Sparkを活用することはできません。
Hadoopでリアルタイム処理を行う場合も動作コストがかかることが問題視されています。毎日リアルタイム処理を行う場合は、仕事上のストレスに繋がってしまうのでApache Sparkへ切り替えましょう。
データをリアルタイム処理する場合はHadoopだとデータ処理に時間がかかってしまうので、不向きです。Apache Sparkに切り替えると、素早く膨大な量のデータをリアルタイム処理するので作業がはかどります。
ただリアルタイム処理をすることがあまりない場合は、Apache Sparkのメリットを生かせないので、Hadoopのままにするか、別のフレームワークをPCへインストールしましょう。
リアルタイム処理をする場合は、データの量が多いと時間がかかってしまいますが、それでもHadoopの1000倍のデータ処理スピードのApache Sparkなら、スピーディーに対処できます。
Apache Sparkの不得意分野
Apache Sparkを授業でやろうとしたら、ScalaかPythonか、どっちか説明しないとダメなことに気がついた
— ӧӧ (7/21まで控えます) (@tos_kamiya) May 25, 2016
Apache Sparkはビッグデータの高速分析処理など得意分野が多いのですが、不得意分野もあります。PCにApache Sparkをインストールする前に不得意分野を把握しておかないと、使い始めてから困る点が多く出てきます。
ここからはApache Sparkの不得意分野について説明していきます。導入前にきちんと把握しておきましょう。
Apache Sparkは便利なフレームワークですが、万能なツールではないので、不得意分野もあります。あなたの毎日の業務の中にApache Sparkの不得意分野が入っていないかインストール前に確認しておきましょう。
TB以上のビッグデータ処理
Apache Sparkはビッグデータの処理が得意ですが、分析処理できるビッグデータには限度があります。基本知識として知っておいた方がいいのは、Apache Sparkが対応できるビッグデータは「GB単位まで」です。
データ容量が1000GBで1TBとなりますが、TB単位に入るようなビッグデータの処理にはある程度時間がかかってしまいます。どんなビッグデータでも高速で分析処理できるわけではないということを知っておきましょう。
Hadoopの場合もTB単位のビッグデータの処理には時間がかかります。TB単位のデータの場合はどちらで処理しても同じですが、GB単位のデータ処理には機械学習の機能があるApache Sparkの方が圧倒的に早いです。
秒以下の短いレスポンス
Apache Sparkは高速でデータ処理ができるフレームワークなのですが、レスポンスに少し時間がかかります。時間がかかると言っても数秒以内に反応があるのですが、スマホアプリのような1秒以内のレスポンスはないという特徴があります。
ビッグデータの分析処理という使い方がメインなので、レスポンスには1秒以上かかってしまうということも基本知識として把握しておきましょう。
レスポンスに時間がかかる原因は、データ分析処理の際にまずキャッシュを読み込んでそこから分析処理に入るからです。ひとつのデータ分析処理で行う動作が多いため、レスポンスに少し時間がかかるのです。
Apache Sparkの分散処理
ビッグデータの処理などを行うApache Sparkは他のアプリとは違い、専門用語が多く、基本知識もきちんと習得しておかないと活用できません。ここからはApache Sparkの分析処理で欠かせない専門用語RDDを説明していきます。
RDDとは
Apache Sparkを使う上で覚えておかないといけないRDDとは、Resilient Distributed Datasetsの略です。Apache Sparkでビッグデータを分析処理する時に使う分析データセットのことをいいます。
Apache Sparkはビッグデータ専用の分析処理ツールなので、一般的な分析処理ツールと分析データセットが違い、そのためRDDになじみがない人が多いのです。RDDの使い方はApache Sparkを起動することで操作できます。
RDDの仕組み
RDDは耐障害性の分析データセットなので、Apache Sparkが得意とする繰り返し行う分析処理をする際に同じ条件の分析データをメモリ上に保存しておくことができます。
このメモリ上への保存が機械学習に活用され、同じ条件のデータ処理が高速で行われるのです。耐障害性以外にもデータ局所性、スケーラビリティという特徴もあります。
RDDの性質
RDDの主な性質は読み取り専用であることです。書き込みの性質はないため基本的にデータ分析処理しかできません。
その読み取りの性質はメモリ上にキャッシュとして保存されているデータを再利用できること、並列処理によってストレージ上のデータに適応した結果を出します。
またもし最新の取得したデータを失った場合は、以前のデータから再生成するという特徴もあるので、ビッグデータのオブジェクトのコレクションはイミュ―ダブルで分割されています。
ビッグデータでは処理するデータが多いため、データが失われてしまうトラブルが起こりやすいのですが、このようにイミュ―ダブルで分割されているため、ビッグデータを繰り返し処理する使い方でも、安心できます。
Apache Sparkの使い方
Apache Sparkの基本知識が分かったところで、ここからは実際にPCにインストールしてApache Sparkを使用する方法を紹介していきます。Apache Sparkの使い方は以下の通りです。
インストールの手順は簡単なので初心者でもできますが、使う場合はコマンドの知識や関数や複数の知識が必要になります。ある程度PCスキルがないと、Apache Sparkは使いこなせないので気を付けましょう。
Apache Sparkをインストールする
Apache Sparkの公式サイトへアクセスして「Sparkのリリースを選択してください」という項目で「2019年5月7日」の新しい方を選択してください。
Apache Sparkは公式サイトの中央付近にある「Download Spark」という項目をクリックしましょう。すぐにApache Sparkのダウンロードがはじまります。
Sparkシェルの起動
Apache Sparkをダウンロードできたら、今度はSparkシェルをインストールします。Sparkシェルをインストールできない場合は、下のリンクからGitHubをインストールしましょう。
Apache Sparkをインストールするために、GitHubを使う場合はアカウント登録が必要です。アカウント登録はメールアドレスと氏名とパスワードを入力するだけです。無料でアカウントができます。
ログファイルにアクセスする
次にログファイルにアクセスしましょう。ログファイルは管理者としてアクセスしないとエラーになってしまうので気を付けましょう。Apache Sparkのログファイルへアクセスできたら、Apache Sparkのインストールは一通り完了です。
Spark shell application UI(ウェブインターフェース)で確認する
Apache SparkをPCへインストールできたら、今度はSpark shell application UI(ウェブインターフェース)で確認します。
Spark shell application UI(ウェブインターフェース)での確認が完了したら、Apache Sparkを使える環境が整ったことになります。
あとはApache Sparkを起動してコマンドや関数などを入力して、データの分析処理を行いましょう。
Apache Sparkのダウンロード
今日は自社ハッカソンでapache sparkをインストールしてtwitter情報を取ってくる、というのをやってみた。ハッカソンといっても昼間だけ×複数回。今回は不足ライブラリがあることに最後に気づき時間切れ。集中していたせいかあっという間だった。
— Toyofuta 19.3.0.0.0 (@M_Toyofuta) May 13, 2017
Apache Sparkをダウンロードできるサイトは、ひとつではありません。ここからはApache SparkをPCへダウンロードできるサイトを紹介していきます。
ダウンロードするサイトが違っても、基本的なダウンロードの手順は同じです。ただダウンロードするサイトによっては手間が二重にかかってしまうことがあります。
Apache Sparkの公式サイト
Apache Sparkの公式サイトからダウンロードすると一番確実です。リリース日などの確認もしやすいので、初心者は公式サイトからダウンロードするのがおすすめです。
ただ公式サイトは英語表記なのがデメリットなので、PCの翻訳ソフトなどを使って翻訳してからApache Sparkをダウンロードしましょう。
Apache Sparkの公式サイトは英語表記なので、PCにApacheSparkをインストールして使う場合は、翻訳機能をブラウザやPCに搭載しておいた方が安心です。いざという時にヘルプなどを確認しやすくなります。
Apache Sparkのダウンロードサイト
Apache Sparkのダウンロードサイトを使うこともできます。ダウンロードサイトは公式サイトと同じページなので、ダウンロードする手順は同じです。
ただダウンロードサイトも公式サイトと同じように英語表記というデメリットがあるので、GoogleChromeの翻訳機能などを使って日本語表記にしてからダウンロードしましょう。
すでにHadoopをダウンロードしている場合は、一度Hadoopを削除してからApache Sparkをダウンロードするのが一般的です。しかしHadoopとApache Sparkは特徴や機能が少しづつ違うので、一緒に使うこともできます。
もしHadoopで気に入っている機能やよく使う機能がある場合は、Apache Sparkと併用を試してみましょう。そしてHadoopが不要に感じたら、削除しましょう。
公式サイトでもダウンロードサイトでもダウンロードボタンからではなく「Sparkをダウンロードする」という項目からダウンロードする場合は、ミラーサイトのインストールを求められます。
自動でミラーサイトのインストールページに移動し、複数あるミラーサイトからひとつをインストールしましょう。
ミラーサイトのインストールには1~2分かかり、起動したらそこからApache Sparkをダウンロードするので、手間が二重にかかってしまうのがデメリットです。
最後に
いかがでしたか?Apache Sparkのインストールの方法や基本知識などは初心者にはハードルが高いですが、活用していくうちに分かるようになりますよ!