NCCS (NASA Center for Climate Simulation) はハイパフォーマンスデータ分析にApache Hadoopを使っている。クラスタに最適化されており、大規模データセットの分散ストレージと並列計算を結合しているためだ。NASAチームのGlenn Tamkin氏は先月のApacheCon Conferenceで講演し、Hadoopを使って構築した、気候データ分析のためのプラットフォームの詳細について説明した。
次世代気候データ分析機能を開発、評価するためのITインフラを提供するNCCSにとって、科学データサービスは重要な部分だ。そのチームの目的は、ハイパフォーマンス分析の実験開発のためのテストベッドを提供すること、そして気候データ分析にアーキテクチャ的アプローチを提供することだ。
Hadoopはテキストベースの問題に対してよく知られているが、彼らのデータセットとユースケースではバイナリデータを扱うため、独自のJavaアプリケーションを作ってMapReduce処理でデータを読み書きしている。彼らは高速データアクセスのための独自の複合キー設計を行うとともに、Hadoop Bloomフィルタを利用している。Bloomフィルタというのは、要素が存在しているかどうかを高速にメモリ効率良く特定するよう設計されたデータ構造だ。データシーク時に既存のインデックスを利用する追加のハッシュテーブルを含んでいるため、HadoopではBloomMapFileをMapFileの拡張版と見なすことができる。
もともとのMapReduceアプリケーションは標準のHadoop Sequence Filesを使っていたが、その後、Sequence、Map、Bloomという3つのフォーマットをサポートするよう変更した。Bloomフィルタを追加することで、約30-80%のパフォーマンス向上が見られたという。
彼はそのユースケースのMap Reduceワークフローについても説明した。データをHDFSに入れる方法には3つの選択肢があった。
- Option 1: MERRAデータを変更なしにHadoopに入れる。パースするための独自のマッパーを書く必要がある。
- Option 2: Hadoopシーケンサに独自のNetCDFを書き、ファイルをまとめて保持する。このやり方は、インデックスをファイルに置くことでHadoopがキーでパースすることを可能にし、各ファイルのNetCDFメタデータを管理する。
- Option 3: Hadoopシーケンサに独自のNetCDFを書き、ファイルを別々に分割する(ブロックサイズを小さくする)。ただし、このやり方だとデータとNetCDFメタデータの繋がりが切れてしまう。
彼らはOption 2を選択し、シーケンスファイルフォーマットを使った。データは時間で分割されており、シーケンスファイルの各レコードには、複合キーとしてのタイムスタンプとパラメータ名(例えば、気温)と、パラメータの値(1次元から3次元)が含まれている。
Glenn氏は分析プロジェクトで使われているデータセットについて説明した。データプロダクトは25のコレクションに分かれている(標準18、化学7)。データセットは1979年から2012年までの月平均ファイルと6時間間隔の日次ファイルから成り、データサイズは合計80 TBほどになる。生成される月/日ごとのファイルサイズは20MBから1.5GBの範囲になる。