HadoopTimes

実践 機械学習:レコメンデーションにおけるイノベーション
技術情報

MapRのアーキテクチャ

Hadoopを活用して実運用を成功させるためには、マスター記録システムとしてデータを保存し24時間365日アプリケーションを確実に稼働させるだけでなく、企業内のその他のデータアーキテクチャやツールと容易に統合ができる必要があります。MapRは卓越したアーキテクチャにより、それらを実現可能な唯一のディストリビューションです。

標準的なサーバを用いて高信頼性、高性能のクラスタを構築するにはエンジニアの多大な労力が必要です。クラスタノードの障害によってデータへのアクセスが失われたり、クラスタ上で動作するサービスが停止したりすることを防ぐだけではなく、全体的な処理性能への影響も抑えなくてはなりません。従来の企業向けのソリューションでは、不揮発性メモリやノード間に冗長なデータパスを作るための専用接続、RAID構成といった特殊なハードウェアを利用して可用性と性能を担保することが試みられてきましたが、それらの利用を前提としない標準的なサーバでは、より困難が伴います。

標準的なハードウェアで高い可用性を実現する一つの方法は、データを複製して複数の場所に格納する、レプリケーションを使うことです。クラスタは、通常の運用時には、受け取ったデータをできる限り高速に書き込んで複製することで読み取りの一貫性を保ち、さらにメタ情報とサービスの状態に関しても冗長性を持って確実に維持しなければなりません。一方、障害が発生した場合、複製データへのアクセスが復旧してデータの同期が取れるまでは、データ損失の危険に晒され続けることになります。平均データ損失時間 (Mean Time To Data Loss、MTTDL) はこの障害復旧のひとつの尺度であり、本質的に目標とすべきことは、クラスタ全体の性能と信頼性に影響を与えることなく、失った複製を速やかに再同期することによってMTTDLを最大化することです。

HDFSソリューション

この課題に対してHDFSは別のアプローチを採用しています。HDFSはすべてを読み取り専用にすることによってこの重要な問題を完全に回避しています。確かにこれならば再同期は容易です。ファイルに書き込みが行われている間は、他からの読み出しは禁止され、書き込みを完了してファイルが閉じられたときに初めて読み出しが許可されます。障害が発生した場合には閉じられていないファイルは削除されます。このモデルでは、変更途中のデータは誰にも見えていないため、あたかもそのデータが始めから存在しなかったかのように、破棄しても問題ないということが仮定されています。

このアプローチはHDFSの元々の用途であったWebページ収集の目標は満たしていました。ダウンロードされたWebページが失われても、収集をやり直せばよいからです。しかし、企業のCIOやCFOが、あえてこのようなモデルを重要なビジネスに関する情報に採用するでしょうか。誰もそのデータを読み取っていない場合に、データは存在していなかったと断言できるでしょうか。答えは明らかに否です。

このHDFSの制限からは、さらにいくつかの別の問題が浮かび上がります。
HDFSではリアルタイム処理をすることができません。HDFSでデータを見ることができるようにするには、書き込み後ただちにファイルを閉じなければなりません。そのため、小さなデータを書き込んでファイルを閉じるプロセスを繰り返すことを余儀なくされるでしょう。問題は、この結果、あまりに多くのファイルを作ることになってしまうことです。HDFSはクラスタのメタ情報を1カ所で集中管理するアーキテクチャであり、大量のファイルの生成は大きな性能上、運用上の影響を及ぼします。

さらに、HDFSはNFS経由での読み書きを厳密にサポートすることはできません。NFSプロトコルにはファイルを「閉じる」という操作が存在しないためです。つまり、HDFSはいつファイルが閉じられるか、ということを推測することしかできません。もしこの推測が間違っていれば、データは失われます。

したがって、重要なファイルシステムの機能を維持しつつこの問題を解決するには別のアプローチが必要であるのは明らかです。