ビッグデータのためのSMACKスタックの概要

LAMPスタックがサーバーとWebホスティングに革命を起こしたように、SMACKスタックはビッグデータアプリケーションの開発を大きく促進します。俊敏性の向上をお望みなら、以下に示す基本情報をまずはお読みください。

 

LAMPがサーバーアプリケーションの開発を容易にしたのと同様に、SMACKはビッグデータプログラムの開発を (少なくとも、これまでよりは) 簡素化します。SMACKは、ビッグデータからの情報の取得を可能な限り迅速にする役割を担います。より具体的に言えば、SMACKを使用することで、開発者は環境を一から再構築することなく、ビッグデータアプリケーションを開発できるようになります。

今日ではLAMPスタックは取り立てて議論されることもなくなりました。LAMP (Linux、Apache、MySQL、PHP/Python/Perl) は、サーバー/Webホスティングプロジェクトの基盤となるテクノロジーを示すかつての流行語で、オンラインインフラストラクチャの構成要素を簡潔に表現したものです。その詳細は場合によって変動するものの (MySQLに代えてMariaDBが、Apacheに代えてNginxが使用されるなど)、中核となるインフラストラクチャは一貫しています。

LAMPが及ぼした影響には非常に大きなものがあります。LAMPは、オペレーティングシステム、Webフロントエンド、トランザクションデータストア、およびサーバーサイドのプログラミングを組み合わせることで、Web 2.0の誕生を可能にしました。今日ではLAMPは注目するまでもない当たり前の環境になっています。

しかしながら、その前提となっている考え方は今日でも有効です。すなわち統合性に配慮して設計された複数の既知のテクノロジーを組み合わせることで、大規模かつ複雑なアプリケーションを開発するための信頼できる基盤が構築されます。各コンポーネントはそれ自体が強力ですが、一体となることでより大きな力を発揮できます。

今日注目されているのが、ビッグデータアプリケーションの基盤となる、Spark、Mesos、Akka、Cassandra、およびKafkaの組み合わせ、すなわちSMACKです。

SMACKの導入を加速させている主な技術的な要因の1つに、リアルタイムのビッグデータ分析に対するニーズの増大が挙げられます。通常Apache Hadoopアーキテクチャーには、Hadoop Distributed File System、MapReduce、およびYARNが含まれており、(データが定期的に取得および処理される) バッチジョブやオフラインジョブは適切に処理できますが、リアルタイム分析には適しません。

SMACKはBy the Bayの登録商標ですが、SMACKを構成するコンポーネントのコードはオープンソースソフトウェアです。

 

SMACKの歴史

コミュニティによる技術的イニシアチブの多くは、パイオニアと先進的なイノベーターによって開始されます。2014年にApple社のエンジニアであるHelena Edelson氏が、ビッグデータのストリーミングと処理を単一パイプラインに統合することの容易さを実証するために、KillrWeatherを開発しました。Edelson氏の取り組みはサンフランシスコのビッグデータ開発者たちの注目を集め、その後の技術カンファレンスの開催へとつながりました。

こうしたムーブメントは急速に進展し、2015年には各コンポーネントのプログラマーが西海岸で開催された2つの開発者カンファレンスで一堂に会し、さまざまな活動や情報交換を通じてSMACKスタックの定義が明確化されました。こうした動きに関心を持った組織の1つがコンテナーとビッグデータを専門とするMesosphere社で、同社はSMACKの知名度向上に大きく貢献しています。

これらのカンファレンスから間もなく、Mesosphere社はMesosphere Infinity製品を発表しました。

Mesosphere Infinityの目的は、「夜間のバッチ処理タスクからセンサーデータのリアルタイム収集に至るまで、あるいはビジネスインテリジェンスから高度なデータサイエンスに至るまで、あらゆる種類のデータ処理ニーズに対応可能な理想的環境」を提供することにあります。

SMACKスタックの知名度は急速に高まっています。現在では、複数のビッグデータ用パイプラインデータアーキテクチャーにおいて、データストリームの処理にSMACKが採用されています。

 

SMACKのコンポーネント

LAMPの場合と同様に、開発者やシステム管理者がSMACKのメインプログラムに拘束されることはありません。一部のLAMPユーザーがMySQLに代えてMariaDBを、Perlに代えてPythonを採用したように、SMACKの場合も個々のコンポーネントを置き換えることが可能です。例えばSMACK開発者は、クラスタースケジューラーとしてのMesosをApache YARNに置き換えたり、Akkaに代えてApache Flinkをバッチ/ストリーム処理に使用したりすることができます。ただしLAMPの場合と同様に、プロセスと文書化、および予測可能なツールセットの観点から、まずは基本的なコンポーネントを理解することが大切です。

以下にSMACKの基本的なコンポーネントを示します。

Apache Mesosは、SMACKの中核に位置付けられるコンポーネントです。分散型システムカーネルであるMesosは、CPU、メモリ、ストレージ、およびその他のコンピューターリソースを物理/仮想マシンから抽象化します。このMesosを基盤として、フォールトトレラントで弾力的な分散型システムを構築できます。個々のアプリケーションはMesosクラスター内で実行されます。Mesosが提供するプラットフォームは可用性にも優れており、システム障害が発生した場合は、別のクラスターノードにアプリケーションが自動的に再配置されます。

このMesosカーネルは、SMACKアプリケーション (およびHadoopなどのその他のビッグデータアプリケーション) に、データセンター、クラウド、およびコンテナープラットフォームにわたるリソース管理とスケジューリングに必要なAPIを提供します。多くのSMACK実装では、Mesosphere社のMesos Data Center Operating System (DC/OS) ディストリビューションが使用されていますが、任意のバージョンのMesos、あるいは (多少の手間はかかりますが) 他の分散型システムを使用することも可能です。

スタック内で次に位置するのがAkkaです。Akkaは、SMACKスタックにデータを取り込むとともに、それらのデータをエンドユーザーアプリケーションに送信する働きをします。

Akkaツールキットは、開発者がJavaまたはScalaを使用して、並行性、分散性、および耐障害性に優れたメッセージ主導のアプリケーションを構築するのを容易にします。また抽象化レベルとしてアクターモデルを使用することで、スケーラブルで耐障害性や応答性に優れたアプリケーションを構築するためのプラットフォームを提供します。

アクターモデルは並列処理に適した概念モデルであり、このモデルによって、個々のシステムコンポーネントがどのように振る舞い、相互に対話すべきかを示す一般的なルールが規定されます。この抽象化を使用する最も知名度の高い言語がErlangです。

Akkaでは、すべての相互対話が分散環境内で動作し、その相互対話アクターは非同期方式で純粋なメッセージパッシングデータを使用します。

Apache Kafkaは、パーティション化および複製された分散型のコミットログサービスです。KafkaはSMACKスタック内でメッセージングシステム機能を提供する役割を担います。

より大きな観点から捉えると、Kafkaはデータパイプラインを分離してデータストリームを編成します。Kafkaによるデータメッセージはバイト配列であるため、Apache Avro、JSON、Stringなどのさまざまな形式によるオブジェクトの格納に使用できます。Kafkaは、個々のデータメッセージのセットを、ログ (すなわち順序付けられたメッセージセット) として取り扱います。SMACKでは、他のプログラム間をつなぐメッセージングシステムとしてKafkaが使用されます。

SMACK内では、多数のサーバーにわたる膨大な構造化データを管理して、数多くの高可用性アプリケーションを支えるために、実績ある分散型のNoSQLデータベースであるApache Cassandra内にデータが保持されます。Cassandraは、複数のストレージデバイスにわたる膨大な量のデータ、および多数の同時ユーザーや秒あたり多数の同時処理に対応可能です。

実際にデータを分析する役割は、Apache Sparkが担っています。この汎用の高速ビッグデータ処理エンジンは、利用者がSQL、ストリーミング、および複雑な分析を組み合わせることを可能にします。また、Java、Scala、Python、およびRのためのハイレベルのAPIを、最適化された汎用のグラフエンジンとともに提供します。

 

SMACKパイプラインを構築

重要なのは、言うまでもなく、これらの構成要素からビッグデータパイプラインをどのように構築するかです。利用者が選択したクラウド、Linuxディストリビューション、DevOpsツールなどにより、SMACKスタックをインストールする方法はさまざまに異なります。以下では、あるSMACKスタックの構築プロセス例をご紹介します。

SMACKスタック構築の手始めとして、まずはMesosベースのクラスターをセットアップします。SMACKの場合は最小要件として、それぞれ2基のCPUと32GBのRAMを搭載するノードが3つ必要です。このノードは、サポートされている任意のLinuxディストリビューションを使用して、大多数のクラウド上でセットアップできます。

次に、CassandraデータベースのセットアップをMesosまたはMesosディストリビューション (DC/OSなど) から行います。

この処理が完了したら、Mesos内にKafkaをセットアップします。

次にSparkをクラスターモードで構成して運用開始します。このように構成することで、タスクによってSparkが必要とされる場合は、Sparkインスタンスが自動的に使用可能なリソースにスピンアップされます。

以上で基本のフレームワークが構築されました。

しかしながら、ここでの目的はデータ処理であるため、スタックへのデータの取り込みが必要です。そこでAkkaのインストールを行います。このプログラムは、選択したデータソースからのデータの読み取り (データ収集) の役割を担います。

データが外部から入ってくると、Akkaがこれを受け取りKafkaに渡します。次にKafkaが、Akka、Spark、およびCassandraにデータをストリームします。Cassandraはデータの保存を、Sparkはデータの分析を担当します。こうした処理の間、Mesosによってすべてのコンポーネントのオーケストレーションが行われ、システム要件が管理されています。データの保存と分析が完了したら、Spark Cassandra Connectorを使用することで、Sparkによるクエリを行ってより高度な分析を実施することも可能です。その後Akkaを使用して、データおよび分析結果をCassandraからエンドユーザーに送信できます。

処理の概要は以上のようになります。より詳細な事例については、SMACKスタック - 実践ガイドをご覧ください

 

SMACKが必要とされる環境

SMACKスタックを構築する前に、SMACKがニーズに適しているかどうかを見極めることも大切です。

まずはリアルタイムのビッグデータ分析が必要かどうかを検討してください。こうした分析が不要な場合は、Hadoopベースのバッチアプローチで十分な可能性があります。DataStax社でApache Cassandraのチーフエバンジェリストを務めるPatrick McFadin氏は、インタビューで次のように述べています。「Hadoopは「スローデータ」環境、すなわち分析対象となるデータの量、範囲、および完全性の方が応答スピードよりも重要な環境に適しています。例えば膨大なデータが格納されたデータレイクがこうしたケースに該当します」。

SMACKの分析エンジンであるSparkは、Hadoopに比べてどれだけ高速でしょうか。Teradata社でデータサイエンス部門責任者を務めるNatalino Busa氏によると、「Sparkの多段階インメモリプリミティブは、特定のアプリケーションで最高100倍のパフォーマンスを提供します」。またBusa氏が指摘するように、Sparkは機械学習アルゴリズムとの相性も優れており、ユーザープログラムがクラスターのメモリ内にデータをロードして繰り返し照会することを可能にします。

とりわけSMACKが卓越したパフォーマンスを発揮するのが、ビッグデータの高速処理が必要とされるケースです。Codecentric社でシニアITコンサルタントを務めるAchim Nierbeck氏は次のように述べています。「当社の要件を満たすには、毎秒約130,000件のメッセージを処理する必要がありました。これらのメッセージはCassandraに保存する必要があり、またリアルタイムの可視化のためにフロントエンドからアクセス可能でなければなりませんでした」。同社はAmazon Web Servicesベースの高速Meosクラスター上に展開された15のCassandraノードを使用することで、Nierbeck氏が述べているとおり「(毎秒) 520,000件のメッセージ処理を簡単に達成できました」。

もう1つの重要なビジネスメリットとして、SMACKはハードウェアの稼働率向上にも貢献します。McFadin氏が指摘するように、Mesosは「競合する可能性があるワークロードを互いに隔離して実行することで、インフラストラクチャの効率的な使用を可能にします」。

さらにSMACKには、リアルタイムのビッグデータ処理を支援するオープンソースの総合ツールキットも含まれています。LAMPの場合と同様に、SMACKは開発者が新しい統合されたスタックの詳細に煩わされることなくアプリケーションを開発するために必要なすべてのツールを提供します。

現時点ではSMACKの知名度はまだ高くありません。しかしながら近い将来、広く活用されるようになると予想されます。

 

SMACK: リーダーへの教訓

  • SMACKを導入するとビッグデータ分析アプリケーションの迅速な開発が可能になります。
  • 分析アプリケーションを構築すると、リアルタイムデータから情報をすばやく取り出せるようになります。
  • SMACKは柔軟性が高く、サーバーリソースを効率的に使用するため、最小限のハードウェアコストでこうしたメリットを実現できます。

 

 

この記事/コンテンツは、記載されている特定の著者によって書かれたものであり、必ずしもHewlett Packard Enterprise Companyの見解を反映しているとは限りません。

enterprise.nxt

ITプロフェッショナルの皆様へ価値あるインサイトをご提供する Enterprise.nxt へようこそ。

ハイブリッド IT、エッジコンピューティング、データセンター変革、新しいコンピューティングパラダイムに関する分析、リサーチ、実践的アドバイスを業界の第一人者からご提供します。