マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Apache Spark

【OSS情報アーカイブ】Apache Spark

※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。

「Apache Spark」とは

「Apache Spark」基本情報

■概要

Apache Spark(アパッチスパーク)とは、インメモリ高速分散処理プラットフォームで、大規模データ処理用統合分析機能を提供します。

■基本説明

Apache Sparkは、オープンソースの分散型クラスタコンピューティングフレームワークです。「高速」かつ「汎用的」であることを目標に設計されており、Java派生言語「Scala」で実装されています。

「クラスタ全体をプログラミングするためのインターフェース」を提供し、「Java/Scala/Python/R言語用高水準API」「SQLおよび構造化データ処理機能」「機械学習機能」「グラフデータ処理機能」「ストリーミング機能」などの高機能なライブラリを搭載しています。

■経緯

・2014年 初版リリース

Sparkのコードベースはカリフォルニア大学バークレー校のAMPLabで開発されました。その後、Apache Software Foundationに寄贈され、Apacheトップレベルプロジェクトの1つとして開発が進められています。

■ユースケース

機械学習

Apache Sparkは「RDD(Resillient Distributed Datasets)」という独自キャッシュ機構を搭載しています。分散メモリRDDを活用することで、機械学習のような特定のデータに対して繰り返しアクセスするような処理を得意としています。

リアルタイム処理

Apache Sparkには、リアルタイム処理を実現するためのフレームワークも備わっています。

■オフィシャルサイト情報

オフィシャルサイト

→Apache Spark(Unified Analytics Engine for Big Data)

ライセンス情報

Apache Sparkのライセンスは「Apache License 2.0」です。

詳細について、こちらを参照ください。
→GitHub →apache/spark →LICENSE

動作環境

Apache Sparkは「Windows」「Linux」「macOS」で動作します。

ダウンロード

→Apache Spark →Download Apache Spark

導入事例

Apache Sparkは、1000を超える組織やプロジェクトで採用されています。

→Apache Spark →Project and Product names using ‘Spark’

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Apache Hadoop」「Apache Storm」など。

「Apache Spark」と「Apache Hadoop」の関係

■「Apache Hadoop」とは

Apache Hadoopは、「データ処理基盤」と「分散コンピューティング基盤」という2つの特徴を持つもので、ビッグデータ処理を目的とした分散処理フレームワークとして利用できます。

分散処理フレームワーク「MapReduce」、分散ファイルシステム「HDFS」、クラスタ管理システム「YARN」などで構成されています。

→OSSxCloudNews →オープンソースのビッグデータ処理ツール/Apache Hadoopとは

■Hadoopの弱点

Apache Hadoopは、非常に低コストでビッグデータを格納し処理できる機能を提供することで、ビッグデータ処理に大きな革命的進歩をもたらしました。

しかし、設計方針としてスループット向上に最適化されており、処理が複雑化するとレイテンシ(処理時間)が悪化してしまうため、機械学習やグラフアルゴリズム処理などの「繰り返し計算処理には適さない」という弱点があります。

■SparkはHadoopの弱点を改善

Apache Sparkは、上記のApache Hadoopの弱点を克服するために、スループットとレイテンシを両立できるように開発されました。

Apache Sparkは「Hadoopデータと互換性を持つ高速処理エンジン」として利用できます。

Apache Spark実行時には必ずしもApache Hadoopは必要ありませんが、クラスタ上で実行する場合は「NFSを各ノードの同じパスにマウントする」などの共有ファイルシステムが必要になります。

■Spark×Hadoop連携

Sparkは、メモリに格納できるデータ量については非常に高速に処理できます。

しかし、メモリに格納しきれない大きなサイズのデータを扱う場合には、「Hadoopで基本処理したデータをSparkでドリルダウン処理する」などのように、双方の得意な処理を組み合わせて連携して利用することで、システム全体のパフォーマンスを向上できます。

SparkはHadoopコアライブラリを使用してHDFSや他のHadoop対応のストレージシステムと通信します。そのため、クラスタで実行されているHadoopバージョンに合わせて、Sparkを構築する必要があります。

「Apache Spark」の主な特徴

「Apache Spark」の主な特徴

■高速処理

Apache Sparkは「DAGスケジューラ」「クエリオプティマイザ」「物理実行エンジン」などを駆使して、バッチデータ処理やストリーミングデータ処理に対して画期的な高速処理性能を実現しています。

ロジスティック回帰処理などの実行性能を測定すると「SparkはHadoopに比べて100倍高速に処理できる性能」を発揮します。

インメモリ処理

Sparkは、対象データをすべてメモリ上のみで処理する「インメモリ処理」により、処理全体の実行速度向上を実現しています。処理時間を増長化させるディスクアクセスを避けることで、複雑な計算処理を非常に高速に処理できます。

メモリに格納しきれないデータ量の場合は、必要に応じてデータをディスクに書き出して実行します。

■スケーラビリティ

ノード数

多くの組織で数千ものノードのクラスタ上でSparkが実行されています。8000ノードで動作するシステムも存在しています。

データサイズ

Sparkはペタバイトサイズまで正常に動作することが証明されています。本番ワークロードにおいて、ペタバイトサイズデータに対して、ETLやデータ分析が実行されています。

■プログラミング言語サポート

Sparkは、並列アプリケーションを簡単に構築できるようにする80以上の高級オペレータを提供しています。対話型シェルも利用できます。

「Java」「Scala」「Python」「R言語」「SQL」などで効率的にアプリケーションを開発できます。

■データソースアクセス

Apache Sparkは、数百もの多様なデータソースにアクセスできます。
・HDFS
・Alluxio
・Apache Cassandra
・Apache HBase
・Apache Hive など

■デプロイオプション

Apache Sparkは「スタンドアロン」や「クラウド」で動作できます。

クラスタサポート

既存クラスタマネージャ上で動作できるデプロイオプションが提供されています。
・Apache Hadoop
・Apache Mesos
・Kubernetes など

Sparkライブラリ

Sparkライブラリ

Apache Sparkには、以下の高度なライブラリが含まれており、別途インストールせずに利用できます。

これらのライブラリをシームレスに組み合わせて、アプリケーションを構築できます。

■SQLクエリ「Spark SQL」

Spark SQLは構造化データを扱うための機能を提供します。

→Apache Spark →Spark SQL

Spark統合

Spark SQLを使用すると、SQLまたはDataFrame APIを使用して、Sparkプログラム内で構造化データをクエリできます。

データアクセス

さまざまなデータソースにアクセスするための共通の方法を提供し、これらのソース間でのデータ結合も可能です。
・Hive—Hiveデータウェアハウス
・ORC
・JSON
・ODBC
・JDBC など

高速クエリ

Spark SQLは「コストベースオプティマイザ」「カラム型ストレージ」「コード生成」などの機能により、高速にクエリを実行できます。

フォールトトレランス

Sparkエンジンを使用して「数千ノード」と「数時間に及ぶクエリ」に拡張可能で、クエリ途中でのフォールトトレランスを実現しています。

■機械学習ライブラリ「MLlib」

MLlibはApache Sparkのスケーラブルな機械学習ライブラリです。

→Apache Spark →MLlib

Hadoopサポート

Hadoopワークフローに簡単にプラグインできます。

ハイパフォーマンス

MLlibはMapReduceよりも100倍高速に処理できます。

アルゴリズム

MLlibには多くのアルゴリズムが含まれています。
・分類—ロジスティック回帰、単純ベイズ
・回帰—一般化線形回帰、生存回帰
・デシジョンツリー、ランダムフォレスト
・クラスタリング—K平均、ガウス混合(GMM)
・トピックモデリング—潜在的ディリクレ配分(LDA) など

ユーティリティ

各種ユーティリティも用意されています。
・特徴変換—標準化、正規化、ハッシング
・MLパイプライン建設
・モデル評価とハイパーパラメータチューニング
・MLの永続性—モデルとパイプラインの保存と読み込み など

→Apache Spark →Machine Learning Library (MLlib) Guide

■グラフ並列計算用API「GraphX」

GraphXは、グラフおよびグラフ並列計算用のApache Spark APIです。

→Apache Spark →GraphX

柔軟性

GraphXは「ETL」「探索的分析」「反復グラフ計算」を単一システム内に統合します。

高速処理

GraphXは、最速の特殊グラフ処理システムに匹敵する処理性能を提供します。

グラフアルゴリズム

GraphXにはさまざまなグラフアルゴリズムが付属しています。
・PageRank
・接続コンポーネント
・ラベル伝播
・SVD ++
・強連結コンポーネント
・トライアングルカウント など

■ストリーム処理「Spark Streaming」

Spark Streamingを使用すると、スケーラブルなフォールトトレラントストリーミングアプリケーションを簡単に構築できます。

→Apache Spark →Spark Streaming

ストリーミングジョブ作成

Spark Streamingは、Apache Sparkの言語統合APIをストリーム処理に利用できるため、バッチジョブ記述と同じ方法でストリーミングジョブを記述できます。

「Java」「Scala」「Python」をサポートしています。

データソース

Spark Streamingは「HDFS」「Flume」「Kafka」「Twitter」「ZeroMQ」などからデータを読み込むことができます。

また、独自カスタムデータソースも定義できます。

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【トレンド解説】超入門「 スマートファクトリー 」🏭

トレンド解説

2024.04.15

【トレンド解説】超入門「 スマートファクトリー 」🏭

「 スマートファクトリー 」への理解を深めるための解説として、初心者向けにわかりやすくまとめた記事です。「新しい工場の概念」「デジタルツインの活用」「IoT技術による最適化」など、現代の製造業に必要な知識を効果的に学べます。 スマートファクトリー の導入によるメリットを具体的に解説しています。

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。