Spark

Apache Sparkとは

Apache Sparkはデータ分析ジョブの開発と効率化をシンプルにするためのオープンソースフレームワークです。幅広いAPIと選択言語、およびクラスターコンピューティングの複雑さに対応する80以上のデータ変換およびアクション演算子をサポートしています。 

誰がSparkを構築し維持しているのか

300社以上の企業の開発者たちがSparkを構築し、広大なユーザーコミュニティが継続的な改良に貢献しています。様々な業界の組織が利用しており、その開発者コミュニティはビッグデータ分野で最大となっています。

関連するHPEのソリューション、製品、サービス

Sparkの人気の理由

Sparkは同様の分析エンジンより100倍高速だと報告されており、様々なデータソースにアクセスできるうえ、スタンドアロンまたはクラウドHadoop、Apache Mesos、Kubernetesなどのプラットフォーム上で実行できます。データをバッチまたはストリーミングのいずれで処理する場合でも、最先端のSpark DAGスケジューラ、クエリオプティマイザー、物理的実行エンジンにより、最高レベルのパフォーマンスを実現できます。

Sparkはなぜ強力なのか

Sparkの際立ったパワーはインメモリ処理から来ています。メモリを大量に使用するノードの分散プールと、圧縮データエンコーディング、および実行時間を短縮し、メモリ需要を抑えるクエリプランナーを使います。

Sparkはインメモリで計算を実行するので、ディスク上で処理するフレームワークに比べて100倍高速にデータを処理できます。機械学習AIの分析およびトレーニングモデルに必要な、大規模データの処理に適したツールです。

さらに、専門的な機械学習やSQLのようなデータ構造を提供する多くのネイティブライブラリが実行されるため、大規模データセットで卓越したパフォーマンスを実現できます。またSparkでは、80以上の高次元演算子によって、並列アプリケーションを簡単に開発できます。

Sparkの発祥

2009年、カリフォルニア大学バークレー校のAMPLabで数枚の卒業論文から始まったものが発展し、現在Sparkとして知られています。2010年にAMPLabがSparkをオープンソース化して広範なコラボレーションが始まり、2013年にはSparkコミュニティが大規模に成長して、Apacheソフトウェア財団の支援を受けるようになりました。

以降、数百の組織の1,200名以上の開発者がSparkに継続的に貢献し、現在のような強力なインターフェイスへと進化させました。2016年の調査によれば、実際に1,000以上の組織が本番環境にSparkを用いています。

SparkとHadoopの違い

SparkとHadoopには類似する点がいくつかあります。両方とも分析データ処理を行うオープンソースフレームワークで、Apacheソフトウェア財団の支援を受けており、機械学習ライブラリを含み、Java、Python、R、Scalaなど様々な言語でプログラムできます。

しかし、SparkはHadoopの計算処理数を拡大するよう記述されたものなので、本当の意味で比較すべきなのは、Hadoopのネイティブデータ処理コンポーネントであるMapReduceをSparkがどのように強化できるかという点です。

たとえば、Hadoopはバッチ処理でのみデータを処理しますが、Sparkはバッチ処理に加えてリアルタイムデータのストリーミング処理も行います。また、両方とも機械学習ライブラリを含みますが、インメモリデータを使って関数を処理するのはSparkだけで、Hadoopより大幅に高速です。そしてSparkとHadoopの最大の違いは効率性です。Hadoopの実行プロセスは2段階ですが、Sparkは有向非巡回グラフ (DAG) を作ってタスクをスケジューリングしワーカーノードを管理するので、同時かつ (それ故に) 効率的に処理を実行できます。

Apache Sparkのメリット

Sparkにはほかのフレームワークより優れた点がたくさんあります。高度な分析機能を使いやすいフォーマットで提供し、処理の高速化と効率化に必要な柔軟性と拡張性も備えています。メリットには次のようなものがあります。

高速

分散クラスターノード全体に拡大してインメモリ処理を行えるようデータが整理されていると同時に、Sparkはデータをディスクストレージに再度書き込むことなく処理できるので、インメモリのバッチ処理ではMapReduceの100倍、ディスクでは10倍高速になります。

 

マルチリンガル

SparkはScalaで記述されていますが、Java、Python、Rプログラミングパッケージ用のAPIコネクターも含まれており、データサイエンティストが必要とする大量のデータセットを処理できます。

使いやすさ

Sparkはノードやクラスターにデータを効率的に分散させることができるため、データを並列処理および並列抽出できます。また、様々なデータストアから来る各種のデータベースやコンピュートデータを結び付けることができるので、様々なユースケースに利用できます。

強力

Sparkは大量のデータを処理でき、数ペタバイトに上るとも言われています。そのため、ペタバイトスケールのデータをダウンサンプリングすることなく探索的データ分析を実行できます。

高度な分析

Sparkには、データ分析アプリケーションを実行するコードライブラリがいくつかパッケージされています。たとえば、Mllibには高度な統計的演算のための機械学習コードが含まれ、Spark Streamingライブラリはリアルタイムのデータ分析を可能にします。

ビッグデータの利用促進

Sparkは保存と計算を分けており、お客様は分析アプリケーションの性能ニーズに見合うようそれぞれを拡張できます。また、高度な分析用にデータレイクやデータウェアハウスにデータを移すため、シームレスにバッチジョブを実行します。

動的品質

Sparkには、ワークロードの変化に合わせてノードを動的に拡張できるツールが含まれています。また、処理サイクルの最後にノードを自動的に再割り当てすることが、Sparkでは簡単です。

Spark開発者の需要

企業が競争力維持のため分析処理の高速化をますます求める中、Spark開発者の需要が高まっています。オンデマンドの機械学習が市場で増加するにつれ、ディープラーニングアクセラレーターとAIテクノロジーを使いやすくできる人物が不可欠です。

Spark Frameworkとは

JavaやKotlinを使う開発者が、限られたボイラープレートで表現豊かなWebアプリケーションを開発しようとする場合、Spark Frameworkに目を向けます。Sparkは表現力の高い宣言型の構文によって、より生産的で迅速な開発プロセスを通じてコーディングを改善できます。

マイクロフレームワークであるSparkでは、開発者は、Java Virtual Machine (JVM) を労せず最大限活用できます。Sparkのコード構文は簡潔なので、これを使ったコーディングはほかのJavaのWebフレームワークよりはるかに合理的です。

また、Spark Frameworkの言語は、内蔵の型を使ってサーバー側で実行されるよう設計されています。TypeScriptなど、JavaScriptにコンパイルする静的型付き言語を使用し、サーバー側Web開発と関係が深いNodeJS開発者にとっては、これが役に立ちます。

複数のデータ構造で動作するという点で、Sparkはほかのフレームワークに比べて極めて強力です。データ構造には下に示すような、RDD、DataFrame、Dataset、Tungsten、GraphFrameがあります。

 

  • 耐障害性分散データセット(RDD) : RDDは複数のクラスターにまたがりデータを分散し、各種の処理タスクを同時に実行できるようにします。あるクラスターのいずれかのノードに障害が発生した場合、タスクが再計算されるので、介入しなくてもアクションを続行できます。
  • DataFrame: DataFrameはSQL演算用にデータを列に整理します。データ型の安全性は提供せず、安全性にはデータセット自体で対応します。
  • Dataset: DatasetはSQLクエリ用にデータを列に整理します。データ型の安全対策を提供します。
  • Tungsten: Tungstenデータ構造は、Sparkのパフォーマンスをベアメタルパフォーマンスレベルまで強化するために、比較的最近導入されました。メモリ管理、バイナリ処理、コード生成、高速化のためのアルゴリズム開発を目的としています。
  • GraphFrame: GraphFramesデータ構造では、グラフクエリをインメモリで実行し、最高性能速度で処理します。

Sparkは5つのデータ構造を組み合わせ、データを準備し、ほかのフレームワークと同様に記述的分析や検索ができるようにします。また、予測分析、機械学習、グラフ処理も同時に行えるようにし、企業が情報に基づく意思決定を迅速に行えるようにします。

HPEがSparkのパフォーマンスを最大限に引き出す方法とは

データファースト戦略を掲げる企業なら、HPEソリューションを利用して、オンプレミス、マルチクラウド、エッジ環境にあるデータの価値を引き出せます。デジタルトランスフォーメーションを率いるHPEの画期的サービスによって、Sparkをノートブックに統合して機械学習およびAIワークロードを加速化し、ビジネスに価値を与えるインサイトを短時間で引き出すことができます。

たとえば、HPE Ezmeralの柔軟なプラットフォームでは、マルチテナントコントロールプレーン、GPUアクセラレーション、完全分離と高い制御性、ビルド済みのデータ分析ツールによって、Apache Sparkワークロードを拡張できます。HPE Ezmeralは、クラウドネイティブの機能をオンプレミスの分析、機械学習、AIに取り入れた初のデータレイクハウスです。最近のテストによれば、HPE Ezmeral、NVIDIA RAPIDS、Tensor Core A100 GPUはSpark AIおよびETLワークロードを29倍高速化します[i]。

さらに、HPEは最近HPE Ezmeral Unified Analyticsを発表しました。これは、こだわりのスタックの一部として、ほかのベストインクラスのオープンソースツールと併せてSparkを統合した業界初のクラウドデータレイクハウスプラットフォームです。HPE Ezmeral Unified AnalyticsはHPE GreenLakeでもご利用いただけます。  

 

[1] HPEは、HPE Ezmeral、NVIDIA A100 40GB GPU、HPE ProLiant DL385 Gen10 Plus v2で管理するKubernetes Podを使ったビッグデータベンチマークに基づき、テストモデルを標準化しました。