マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【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は構造化データを扱うための機能を提供します。
Spark統合
Spark SQLを使用すると、SQLまたはDataFrame APIを使用して、Sparkプログラム内で構造化データをクエリできます。
データアクセス
さまざまなデータソースにアクセスするための共通の方法を提供し、これらのソース間でのデータ結合も可能です。
・Hive—Hiveデータウェアハウス
・ORC
・JSON
・ODBC
・JDBC など
高速クエリ
Spark SQLは「コストベースオプティマイザ」「カラム型ストレージ」「コード生成」などの機能により、高速にクエリを実行できます。
フォールトトレランス
Sparkエンジンを使用して「数千ノード」と「数時間に及ぶクエリ」に拡張可能で、クエリ途中でのフォールトトレランスを実現しています。
■機械学習ライブラリ「MLlib」
MLlibはApache Sparkのスケーラブルな機械学習ライブラリです。
Hadoopサポート
Hadoopワークフローに簡単にプラグインできます。
ハイパフォーマンス
MLlibはMapReduceよりも100倍高速に処理できます。
アルゴリズム
MLlibには多くのアルゴリズムが含まれています。
・分類—ロジスティック回帰、単純ベイズ
・回帰—一般化線形回帰、生存回帰
・デシジョンツリー、ランダムフォレスト
・クラスタリング—K平均、ガウス混合(GMM)
・トピックモデリング—潜在的ディリクレ配分(LDA) など
ユーティリティ
各種ユーティリティも用意されています。
・特徴変換—標準化、正規化、ハッシング
・MLパイプライン建設
・モデル評価とハイパーパラメータチューニング
・MLの永続性—モデルとパイプラインの保存と読み込み など
→Apache Spark →Machine Learning Library (MLlib) Guide
■グラフ並列計算用API「GraphX」
GraphXは、グラフおよびグラフ並列計算用のApache Spark APIです。
柔軟性
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」などからデータを読み込むことができます。
また、独自カスタムデータソースも定義できます。
参考元サイト
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【OSS情報アーカイブ】Vyatta - 🏆ランク2位🏆
【無料で使える】「 翻訳 」ツールまとめ - 🏆ランク3位🏆
【OSS情報】ディスクイメージング(クローニング)ツール「 Clonezilla 」 - 🏆ランク4位🏆
【OSS情報アーカイブ】OTRS - 🏆ランク5位🏆
【OSS情報アーカイブ】Sympa - 🏆ランク6位🏆
【OSS情報アーカイブ】TensorFlow - 🏆ランク7位🏆
【ChatGPT探訪】ビルトイン画像生成AI「 DALL·E 3 」🖼️ - 🏆ランク8位🏆
【OSS情報アーカイブ】MosP - 🏆ランク9位🏆
【OSS情報アーカイブ】Eclipse Deeplearning4j - 🏆ランク10位🏆
【OSS情報アーカイブ】SonarQube
おすすめの記事


ChatGPT探訪
2023.11.10
【ChatGPT探訪】GPT-4V「 画像解析機能 」🔍
ChatGPT4の「 画像解析機能 」について、 画像読み込み機能チェックを実施してみました🔍 「請求書不備チェック」は便利なのですが、 クローズドGPTを使いたくなります🤔 さまざまな用途に活用できる可能性を感じました🌟 いろいろ分析してくれるので、 試してみてください👍