現在位置: ホーム / ゲストブログ / 連載:ビッグデータ 後編「ビッグデータにおけるオープンソース」

連載:ビッグデータ 後編「ビッグデータにおけるオープンソース」

日本ヒューレット・パッカードが公式に認定するオープンソース・Linuxテクノロジーエバンジェリストで、Hadoopの技術者認定資格を保有する古賀政純さんが、2回連続でお届けしているビッグデータについての後編です。今回のテーマは、ビッグデータにおけるオープンソースです。以前はビッグデータといえばHadoopという感じでしたが、今はさらにエコシステムが拡大しています。

連載後編は、ビッグデータを処理するための基盤技術となるオープンソースソフトウェアに焦点をあてます。また、ビッグデータ処理基盤の今後の展望を述べます。(2015年2月24日)

寄稿者:
日本ヒューレット・パッカード株式会社
プリセールス統括本部 ソリューションセンター
オープンソース・Linuxテクノロジーエバンジェリスト
Red Hat OpenStack/RHCE/RHCVA/Novell CLP/EXIN Cloud/HP ASE/Hadoop(CCAH)認定技術者
古賀 政純(こが まさずみ)



2003年、Googleは、自社のデータセンターにある膨大なデータの分析を行うために、Google File Systemを開発しました。このGoogle File Systemは、分散型のアーキテクチャを取り、大量のサーバーを並べて一つの巨大なファイルシステムを形成するものでした。

この巨大なファイルシステム上にデータを分散配置し、分析を行うための処理の仕組みとして、MapReduce(マップ・リデュース)が2004年に考案されました。しかし、Google File Systemは、その設計図が非公開であったため、その仕組みをオープンソースで実装する取り組みが始まりました。それが、「Apache Hadoopプロジェクト」です。

このApache Hadoopプロジェクトが公開されるとすぐに、世界中の先進的なユーザーに広まり、改良が加えられました。主な先進的なユーザーとしては、FacebookやVISAなどがあげられます。これらの先進的なHadoopユーザーの成功は、Hadoop Summitなどのイベントで広く知られるようになり、世界中のユーザーがHadoopを利用するようになりました。

 

Hadoop利用拡大

図. Hadoopの利用拡大

Hadoopで利用されるオープンソース

Hadoopの一般的な利用手順から、利用されるオープンソースをいくつか見ていきましょう。まず、一般的なHadoopの利用手順は、おおむね以下のようになります。

  1.  企業内のデータベースシステムに保管していた膨大なデータを加工する
  2. 加工データをHadoop分散ファイルシステム(Hadoop Distributed File System: HDFS)に転送する
  3. ユーザーが開発したMapReduce用のアプリケーションでHDFS上のデータを分析する
  4. ツールを使って分析結果を可視化する
  5. 可視化された結果をもとに、しかるべき意思決定を人間が行う


具体的な利用例としては、顧客と商品の相関関係、電子機器や自動車などのセンサーから得られたデータを活用した顧客の行動パターン分析、散在する文書の類似度の算出、迷惑メールのパターン学習などがあげられます。

データベースシステムに保管しているデータをHDFSに転送するオープンソースとしては、Sqoopなどがあります。

Sqoopによる


図. SqoopによるRDBMSとHadoop間のデータ受け渡し

また、データベースシステムだけでなく、SNSや遠隔にあるサーバーのログデータなどをHDFSに取り込むFlumeやFluentdなどのオープンソースが利用されます。

Linuxのファイルサーバー上に保管されているデータをHDFSにコピーする場合、最近では、HadoopがNFSサーバーになり、Linuxのcpコマンドなどを使ってデータをHDFSに流し込むこともできるようになっています。

ログの収集


図. ログの収集


Hadoopクラスタを構成するソフトウェア


Hadoopには、Apacheコミュニティが提供しているApache Hadoopの他に、Cloudera社、MapR社、Hortonworks社が提供する有償のHadoopディストリビューションパッケージが存在します。

Cloudera版Hadoop、Hortonworks版Hadoop、Apache版Hadoopは、一般的に、クラスタ全体を司るメタデータが格納されたマスターノードと、データを処理、保管するスレーブノードに分けられます。マスターノードとスレーブノードで一つのHadoopクラスタを構成します。

Cloudera版、Hortonworks版、Apache版は、オープンソースで提供されており、Javaで稼働します。MapR版Hadoopは、マスタースレーブという区別がなく、すべて同じハードウェア構成でHadoopクラスタを構成するのが一般的です。Hortonworks社のHadoopは、Linux環境だけでなく、Windows版も存在するという特徴があります。

 

SQLライクな問い合わせ


Hadoopは、通常、ユーザーがJavaやPythonなどのプログラミング言語を使って分散処理のためのアプリケーションを作成します。Hadoopは、ユーザーが開発した分散処理用のアプリケーションの実行だけでなく、SQLに似たクエリ操作を行うことも可能です。

このSQLに似たクエリ操作をHadoop上で実現するオープンソースとしては、Hive(ハイブ)やImpala(インパラ)があります。Hiveは、おもにバッチ処理でのクエリですが、Impalaは、高速なリアルタイムクエリを実現しています。

日本では、多くのユーザーがOracleなどの商用データベースを使っていますが、データ量が爆発的に増えても、SQLによるクエリ処理を高速に行いたいというニーズがあるため、データベースシステムとは別に、高速なクエリ・集計用のHadoopシステムを用意し、HiveやImpalaが利用されています。

 

Hive操作

図. HiveによるSQLに似た操作

 

Hadoop-as-a-Service


今、Hadoopを語る上でホットなものの一つに、Hadoop-as-a-Serviceと呼ばれるクラウドにおけるHadoopクラスタサービスの配備があげられます。これは、クラウド基盤のセルフサービスポータルのGUI画面から手軽にHadoop分析基盤を手に入れたいというニーズに応えようとするものです。

Hadoopのパッケージのダウンロードやインストール作業、各種設定ファイルの編集といった煩雑なイントール手順を隠ぺいすることができます。Red Hat版のOpenStack(Red Hat Enterprise Linux OpenStack Platform: RHELOSP)に取り込まれており、マルチテナントを意識したクラウドサービスとしてユーザーにHadoopクラスタを提供できる仕組みが整いつつあります。

コミュニティとしては、OpenStack上でHadoopの配備を目指す「Saharaプロジェクト」が存在し、Saharaプロジェクトの成果物は、RHELOSPに取り込まれています。

Saharaプロジェクト


図. Saharaプロジェクト


Hadoop-as-a-Serviceを実現する環境は、OpenStackだけではありません。Canonical社が提供しているJujuで、Hadoopを簡単に配備することが可能です。Jujuは、Ubuntu Serverで稼働するオープンソースソフトウェアのオーケストレーションを実現するソフトウェアです。

複数のオープンソースソフトウェアが互いに連携するような環境で、OSのインストールからアプリケーションのインストール、連携までの作業を自動化します。GUIが用意されており、管理者は、オープンソースソフトウェアをドラッグ&ドロップで簡単に配備できます。

例えば、JujuのGUI上で「Hadoop」をキーワード検索し、出現したHadoopの絵(チャームと言います)をドラッグ&ドロップすることで、サーバーの電源が投入され、OSとHadoopクラスタを自動的に配備することができます。

JuJu


図. Jujuを使ったHadoop配備


Hadoop vs. Spark

現在、Hadoopのイベント等で注目を浴びているのがApache Spark(スパーク)です。HadoopのHDFSとMapReduceを利用した場合に比べ、数十倍から百倍以上の性能を出す場合もあると言われています。おもに、ループなどの反復処理が含まれるプログラムの実行で威力を発揮し、機械学習や科学技術計算分野での応用が期待されています。

 

HadoopvsSpark


図. Hadoop_vs_Spark

ビッグデータ処理基盤の今後の展望


ビッグデータ処理基盤は、今後どのような進化を遂げるのでしょうか。

現在のビッグデータ処理基盤は、Hadoopの場合、一人のユーザーがHadoopクラスタを占有的に使っているのが現実です。本来ならば、複数のユーザーのジョブの優先度、利用可能なHadoopクラスタのCPU、メモリ、HDFS容量の上限などをサービスメニュー化し、複数のユーザーのジョブが一斉に投入されても、サービスレベルに応じた処理が行われる仕組みが必要です。

また急を要するユーザーの処理が発生した場合は、Hadoopクラスタ上で計算しているジョブをサスペンドし、緊急のユーザーにジョブの実行環境を譲るなどの仕組みが必要になります。

このような仕組みは、スーパーコンピューターなどの科学技術計算(High Performance Computing: HPC)クラスタでは、TORQUEなどのワークロード制御のソフトウェアが利用されています。しかし、Hadoopクラスタにおいては、まだ一般的とは言えないのが現状です。

近年は、スーパーコンピューターやHPCクラスタの複数の計算ノードが互いに通信する並列計算用のMPI(Message Passing Interface)プログラムやマルチスレッド型のOpenMPプログラムと、Hadoopクラスタのジョブが混在するようなヘテロシステムにおいて、ハードウェア資源の有効利用とジョブの制御を行うことを目的としたApache MESOSに注目が集まっています。

Apache MESOSまだ発展途上ですが、HadoopクラスタとHPCクラスタを同一システムで有効利用したいというニーズが徐々に増えてきています。しかし、HPCクラスタは、CPUだけでなくGPU(Graphics Processing Unit)を駆使したグラフィック処理用のプロセッサを利用したユーザープログラムの存在や複数ユーザーの同時利用におけるハードウェアリソースの割り当ての制御が必要となります。

このため、HPCクラスタとHadoopクラスタとの混在環境におけるリソース制御やユーザーへのサービス提供のハードルは、決して低くないのが現状です。部門内のHadoopクラスタとHPCクラスタの混在環境だけでなく、インターネットを経由したグループ会社や協力会社間をまたいだHadoopクラスタとHPCクラスタで、CPUやGPU、ファイルシステムなどの差を意識することなく利用できる環境がビッグデータ処理基盤に求められています。

また、リソース制限も、具体的な計算ノードやクラスタ名を指定してジョブ投入をするようなシステムから、ユーザーの空き状況、通信回線の負荷状況、セキュリティ、課金状況を総合的に判断し、投入したジョブに対する最適な分散処理システムを自動的に見つけ出して分析や計算が行われるシステムが求められています。

このようなシステムの実現には、 MESOSだけでなく、負荷の監視、セキュリティ、課金システムなどの既存技術に加え、パブリッククラウドを発展させたグリッドコンピューティングなどの先進技術を組み合わせなければなりません。

部門内で用意されたスーパーコンピューターや分散処理基盤では計算が追い付かない情報爆発時代の突入を控え、これらの分散コンピューティング技術の成熟がまさに今、必要とされているのです。そして、これらの多くの技術は、オープンソースで日々開発が進められています。

Hadoop、Spark、MESOS、機械学習用のソフトウェアであるJubatus(ユバタス)やMahout(マハウト)、科学技術計算用のOpenMPやMPIライブラリ、グリッドコンピューティング向けのソフトウェアなどの多くは、オープンソースで提供されています。

世界中の技術者コミュニティが開発に携わり、構築手順やチューニング法などの情報を交換していますが、グリッドコンピューティングによる分散基盤を“うまく稼働するビッグデータ処理システム”にするには、異なる分野のさまざまな技術者の意見交換、高度なコンサルティング力、インテグレーション力が必要です。

世界をまたいで活躍するオープンソースコミュニティと企業の協調活動が、今まさにビッグデータ処理の将来を左右するといっても過言ではない時代に来ているのです。

 

ビッグデータ将来像


図. ビッグデータ処理基盤の将来像


さらに学んでみたい読者の方は、拙著「CentOS 7実践ガイド」にApache Hadoopの最新版の構築・利用手順を記載していますので、参考にしてください。


また、こちらも拙著ではありますが、電子書籍「Ubuntu Server実践入門[12.04.5 LTS対応版]」には、OSSオーケストレーションソフトウェアJujuの構築・利用手順を掲載しています。先進的なHadoop-as-a-Serviceをぜひ体験してみてください。

各種お問い合わせ

サイオスOSSよろず相談室(1)

問い合わせボタン

最新の情報
わかっておきたいセキュリティ: 第4回 IRMA (Incident Response Malware Analysis) 2017年03月29日
わかっておきたいセキュリティ: 第3回 マルウェア解析サンドボックス「Cuckoo」との連携 その2 2017年02月22日
[第14回] Linux/OSS エバンジェリスト古賀政純の 『オープンソース・Linux超入門』 システム要件において検討すべき点 その4 2017年02月08日
[第13回] Linux/OSS エバンジェリスト古賀政純の 『オープンソース・Linux超入門』 システム要件において検討すべき点 その3 2017年02月01日
[第12回] Linux/OSS エバンジェリスト古賀政純の 『オープンソース・Linux超入門』 システム要件において検討すべき点 その2 2017年01月25日
[第11回] Linux/OSS エバンジェリスト古賀政純の『オープンソース・Linux超入門』 システム要件において検討すべき点 その1 2017年01月18日
Python人材育成の支援を目的としたPythonエンジニア育成推進協会の活動とは? 2016年12月21日
わかっておきたいセキュリティ: 第2回 マルウェア解析サンドボックス「Cuckoo」との連携 2016年12月14日
可知豊の『 わかっておきたい、オープンソースライセンス』: 第3回 オープンソースライセンスの使い方をわかっておきたい 2016年12月08日
可知豊の『 わかっておきたい、オープンソースライセンス』: 第2回 色々なオープンソースライセンスをわかっておきたい 2016年11月30日
可知豊の『 わかっておきたい、オープンソースライセンス』: 第1回 著作権とライセンスをわかっておきたい 2016年11月17日
わかっておきたいセキュリティ: 第1回 マルウェア解析サンドボックス「Cuckoo」 2016年11月02日
[第10回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』 Linuxサーバーシステム導入前の検討~ RHELを知る ~ 2016年10月26日
[第9回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』 Linuxサーバーシステム導入前の検討~ Ubuntu Serverを知る ~ 2016年10月19日
[第8回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』  Linuxサーバーシステム導入前の検討~ SUSEを知る ~ 2016年10月12日
[第7回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』~「初心者でもわかる、Linuxサーバーシステム活用者が知っておくべきポイント」(後編) 2016年08月09日
[第6回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』~「初心者でもわかる、Linuxサーバーシステム活用者が知っておくべきポイント」(前編) 2016年08月02日
[第5回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』~「ミッションクリティカルシステムとオープンソース・Linux」(後編) 2016年06月22日
[第4回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』~「ミッションクリティカルシステムとオープンソース・Linux」(前編) 2016年06月16日
[第3回] Linux/OSS エヴァンジェリスト古賀政純の 『オープンソース・Linux超入門』~「CEOが知っておくべきオープンソース革新」(後編)~ 2016年05月25日
最新の情報 - もっと...