Apache Spark とは
Apache Spark は、ビッグデータのワークロード処理に使用されているオープンソースの分散処理システムです。インメモリキャッシュを使用し、どのようなサイズのデータにも高速な分析クエリを実行できるよう最適化されています。Java、Scala、Python、R の開発 API を提供し、バッチ処理、インタラクティブクエリ、リアルタイム分析、機械学習、グラフ処理といった複数のワークロードでのコードの再利用をサポートします。FINRA、Yelp、Zillow、DataXU、Urban Institute、CrowdStrike など、あらゆる業界の組織で使用されていることがわかります。
Apache Spark の歴史を教えてください。
Apache Spark は、2009 年にカリフォルニア大学バークレー校の AMPlab の研究プロジェクトとして開始されました。このプロジェクトは、学生、研究者、教員が参加し、データ集約型のアプリケーションドメインに焦点を当てたコラボレーションです。Spark の目標は、Hadoop MapReduce のスケーラビリティと耐障害性を維持しながら、機械学習などの高速反復処理やインタラクティブなデータ分析用に最適化された新しいフレームワークを作成することでした。「Spark: ワーキングセットを使用したクラスターコンピューティング」というタイトルの最初の論文は 2010 年 6 月に発表され、Spark は BSD ライセンスの下でオープンソース化されました。2013 年 6 月、Spark は Apache Software Foundation (ASF) のインキュベーションステータスを獲得し、2014 年 2 月に Apache Top-Level Project として設立されました。Spark は、スタンドアロンで実行することも、Apache Mesos で実行することも、最も頻繁には Apache Hadoop で実行することもできます。
Apache Spark はどのように機能しますか?
Hadoop MapReduce は、並列分散アルゴリズムを使用してビッグデータセットを処理するためのプログラミングモデルです。開発者は、作業の分散や耐障害性を気にすることなく、大規模に並列化された演算子を記述できます。ただし、MapReduce の課題は、ジョブの実行に必要な連続的な複数ステップのプロセスです。各ステップで、MapReduce はクラスターからデータを読み取り、操作を実行し、結果を HDFS に書き込みます。各ステップにはディスクの読み取りと書き込みが必要なため、MapReduce ジョブはディスク I/O のレイテンシーが原因で遅くなります。
Spark は、MapReduce の制限に対処するために開発されました。メモリ内で処理を行い、ジョブのステップ数を減らし、複数の並列操作でデータを再利用することで実現しました。Spark では、データをメモリに読み込み、操作を実行し、結果を書き戻すという 1 つのステップだけで済むため、実行時間が大幅に短縮されます。また、Spark はインメモリキャッシュを使用してデータを再利用し、同じデータセットで関数を繰り返し呼び出す機械学習アルゴリズムを大幅に高速化します。データの再利用は、DataFrames の作成によって実現されます。DataFrames は、耐障害性分散データセット (RDD) を抽象化したもので、メモリー内にキャッシュされ、複数の Spark 操作で再利用されるオブジェクトのコレクションです。これにより、レイテンシーが大幅に低下し、特に機械学習やインタラクティブな分析を行う場合に、Spark は MapReduce よりも何倍も高速になります。
主な相違点: Apache Spark とApache Hadoop
Spark と Hadoop MapReduce の設計の違いの他に、多くの組織は、これらのビッグデータフレームワークが補完的であり、それらを組み合わせてより広範なビジネス課題を解決すると考えています。
Hadoop は、ストレージとして Hadoop 分散ファイルシステム (HDFS)、さまざまなアプリケーションが使用するコンピューティングリソースを管理する方法として YARN、および実行エンジンとして MapReduce プログラミングモデルの実装を備えたオープンソースフレームワークです。一般的な Hadoop の実装では、Spark、Tez、Presto などのさまざまな実行エンジンもデプロイされます。
Spark は、インタラクティブなクエリ、機械学習、リアルタイムのワークロードに焦点を当てたオープンソースフレームワークです。独自のストレージシステムはありませんが、HDFS などの他のストレージシステムや、Amazon Redshift、Amazon S3、Couchbase、Cassandra などの他の一般的なストアで分析を実行します。Spark on Hadoop は、YARN を活用して他の Hadoop エンジンとして共通のクラスターとデータセットを共有し、一貫したレベルのサービスとレスポンスを確保します。
Apache Spark にはどのようなメリットがありますか?
Apache Spark には、Hadoop エコシステムで最もアクティブなプロジェクトの 1 つになるという利点が数多くあります。具体的には次のとおりです。
高速
インメモリキャッシュと最適化されたクエリ実行を使用して、Spark はあらゆるサイズのデータに対する高速な分析クエリを実行します。
開発者にとって使いやすい
Apache Spark では Java、Scala、R、Python がネイティブサポートされ、アプリケーションの構築にさまざまな言語を使用できます。これらの API は、分散処理の複雑さをシンプルで高レベルの演算子の背後に隠し、必要なコード量を大幅に削減できるため、開発者の作業が簡単になります。
複数のワークロード
Apache Spark には、インタラクティブなクエリ、リアルタイム分析、機械学習、グラフ処理など、複数のワークロードを実行する機能が搭載されています。1 つのアプリケーションで複数のワークロードをシームレスに組み合わせることができます。
Apache Spark ワークロードとは何ですか?
Spark フレームワークには以下が含まれます。
- プラットフォームの基盤としての Spark Core
- インタラクティブクエリ用の Spark SQL
- リアルタイム分析用の Spark Streaming
- 機械学習用の Spark MLlib
- グラフ処理用の Spark GraphX
Spark Core
Spark Core はプラットフォームの基盤です。メモリ管理、障害回復、ジョブのスケジュール設定、分散、監視、およびストレージシステムとのやりとりを担当します。Spark Core は、Java、Scala、Python、R 向けに構築されたアプリケーションプログラミングインターフェイス (API) を通じて公開されます。これらの API は、分散処理の複雑さをシンプルで高レベルの演算子の背後に隠します。
MLlib
機械学習
Spark には、大規模にデータで機械学習を行うためのアルゴリズムライブラリである MLlib が含まれています。機械学習モデルは、データサイエンティストが任意の Hadoop データソースで R または Python を使用してトレーニングし、MLlib を使用して保存し、Java または Scala ベースのパイプラインにインポートできます。Spark は、メモリ内で高速かつインタラクティブな計算を実行できるように設計されているため、機械学習を迅速に実行できます。アルゴリズムには、分類、回帰、クラスタリング、協調フィルタリング、パターンマイニングを行う機能が含まれています。
Spark Streaming
リアルタイム
Spark Streaming は、Spark Core の高速スケジューリング機能を活用してストリーミング分析を行うリアルタイムソリューションです。データをミニバッチに取り込み、バッチ分析用に記述されたものと同じアプリケーションコードを使用してそのデータを分析できます。これにより、バッチ処理とリアルタイムストリーミングアプリケーション用に同じコードを使用できるため、開発者の生産性が向上します。Spark Streaming は、Twitter、Kafka、Flume、HDFS、ZeroMQ からのデータと、Spark Packages エコシステムで見つかった他の多くのデータをサポートしています。
Spark SQL
インタラクティブクエリ
Spark SQL は、MapReduce よりも最大 100 倍高速で、低レイテンシーでインタラクティブなクエリを提供する分散型クエリエンジンです。コストベースのオプティマイザー、列指向ストレージ、および高速クエリ用のコード生成機能を備えていると同時に、数千ノードまで拡張できます。ビジネスアナリストは、標準 SQL または Hive クエリ言語を使用してデータをクエリできます。開発者は Scala、Java、Python、R で利用可能な API を使用できます。API は、JDBC、ODBC、JSON、HDFS、Hive、ORC、Parquet など、さまざまなデータソースをすぐにサポートしています。Amazon Redshift、Amazon S3、Couchbase、Cassandra、MongoDB、Salesforce.com、Elasticsearch など、その他の人気ストアは、Spark Packages エコシステムから見つけることができます。
GraphX
グラフ処理
Spark GraphX は、Spark 上に構築された分散型グラフ処理フレームワークです。GraphX は、ETL、探索的分析、および反復グラフ計算を提供し、ユーザーがグラフデータ構造を大規模にインタラクティブに構築および変換できるようにします。柔軟性の高い API と、さまざまな分散型グラフアルゴリズムが付属しています。
Apache Spark のユースケースにはどのようなものがありますか?
Spark は、ビッグデータワークロードに使用されている汎用分散処理システムです。パターンを検出してリアルタイムの洞察を提供するために、あらゆるタイプのビッグデータユースケースにデプロイされています。ユースケースの例には、以下のようなものがあります。
金融サービス
Spark は、顧客離れを予測したり、新しい金融商品を推奨したりするために銀行業務で使用されています。投資銀行業務では、Spark を使用して株価を分析し、将来の傾向を予測します。
医療
Spark は、患者とのやり取りのたびに最前線の医療従事者がデータを利用できるようにすることで、包括的な患者ケアを構築するために使用されています。Spark は、患者の治療を予測/推奨するために使用することもできます。
製造
Spark は、予防メンテナンスをいつ行うべきかを推奨することで、インターネットに接続された機器のダウンタイムをなくすために使用されています。
小売業
Spark は、パーソナライズされたサービスやオファーを通じて顧客を引き付け、維持するために使用されています。
Apache Spark をクラウドにデプロイする仕組みはどのようなものですか?
Spark はクラウド内の理想的なワークロードです。クラウドには、パフォーマンス、スケーラビリティ、信頼性、可用性、および圧倒的なスケールメリットがあるためです。ESG 社の調査では、回答者の 43% が Spark の主なデプロイ先としてクラウドを検討していることがわかりました。クラウドが Spark に有効だとお客様が考えている主な理由は、デプロイ時間の短さ、高い可用性、機能の頻繁なアップデート、高い伸縮性、利用可能地域の広さ、実際の使用量に応じたコストです。
Apache Spark 向けの AWS サービスにはどのようなものがありますか?
Amazon EMR はクラウド内に Apache Spark をデプロイするのに最適です。商用 Hadoop と Spark ディストリビューションの統合および厳格なテストを、クラウドの持つスケール、シンプルさ、コスト効率の高さに組み合わせることができるためです。Spark クラスターの起動は数分で完了し、ノードのプロビジョニング、クラスターのセットアップ、Spark の設定、クラスターのチューニングはいずれも不要です。EMR により、単体から数百あるいは数千におよぶコンピューティングインスタンスを、数分の内にプロビジョニングできるようになります。Auto Scaling を使用すると、EMR が Spark クラスターを 自動的にスケールアップしてあらゆるサイズのデータを処理し、ジョブが完了したらスケールダウンして未使用の容量に対する支払いを回避するようにできます。一定の期間にコミットし、Amazon EC2 リザーブドインスタンスを使用して最大 75% 節約するか、予備の AWS コンピューティング能力でクラスターを実行し、EC2 Spot を使用して最大 90% 節約することで、請求額を下げることができます。
今すぐアカウントを作成して、AWS で Apache Spark の使用を開始しましょう。