Googleは先日のブログ記事で、Cloud Strage Connector for Hadoopを新たに発表した。この新機能によって、従来のHadoop分散ファイルシステム(HDFS)をGoogle Cloud Storageに置き換えることが可能になる。ParquetやORCといったカラムナファイル(Columnar file)形式により、スループット向上の実現が期待されると同時に、Cloud Storageディレクトリの分離、低いレイテンシ、並列性の向上、インテリジェントなデフォルト設定といったメリットも享受することができる。
HDFSはHadoopユーザに人気のストレージソリューションだが、ロングランニング(long-running)HDFSクラスタの運用など、いくらかの煩雑さを伴う。Google Cloud Storageは、統合APIを介してデータを公開する統合オブジェクトストアであり、ハイパフォーマンスとアーカイブの2つのユースケースをサポートするマネージドソリューションである。
Cloud Storage Connectorは、Hadoop Compatible FileSystem(HCFS)を実装し、Hadoop JVM内で動作することによって、HadoopやSparkのジョブなどのビッグデータプロセスがGoogle Cloud Storageから下位データをアクセスできるようにする、オープンソースのJava クライアントライブラリである。
HDFS経由でGoogle Cloud Storageを使用することには、次のような数多くのチャンスがある、とGoogleは考えている。
- 永続ディスク上に3つのレプリカを配置するロングランニングHDFSクラスタに比較して、大幅にコストを削減する。
- ストレージを計算処理から分離することにより、各レイヤを個別に拡張することが可能になる。
- Hadoopクラスタ停止後もストレージが永続化される。
- エフェメラル(ephemeral)Hadoopクラスタ間でのCloud Storageバケットの共有が可能になる。
- HDFSのアップグレードや高可用性管理など、ストレージ管理のオーバーヘッドがない。
Connectorはオープンソースだが、Google Cloud Platformによってサポートされており、Apache HadoopおよびApache Sparkのワークロードを実行するGoogleのフルマネージドサービスであるCloud Dataprocに事前設定されている。さらにMapRやCloudera、Hortonworksといった他のHadoopディストリビューションにもインストール可能で、完全なサポートがある。この相互運用性により、オンプレミスのビッグデータソリューションをクラウドに移行することが可能になる。
Hadoop実装でCloud Storageを使用することにより、パフォーマンスが改善される。そのパフォーマンス向上を活用している顧客のひとつがTwitterだ。Twitterの実装では、
20PBを越えるデータセットを対象に、大規模なCloud Storageのカラムナファイルに対するビッグデータSQLクエリのテストを開始しました。Cloud Storage Connectorはオープンソースなので、Twitterでは範囲リクエスト(range request)を使用して、クエリエンジンの要求したカラムのみを読み取ることで、読み取り効率を向上させたプロトタイプを開発しました。私たち(Google)はその開発成果を、より一般的なfadvise機能に組み込みました。
Cloud Storageコネクタの一部として導入されたもうひとつの機能は、Hadoopファイルシステムシェルによって実行され、ストレージ変更操作を分離する協調的ロック(cooperative locking)である。ソフトウェアエンジニアのIgor Dvorzhak氏が、この機能の重要性について説明している。
Cloud Storageは。オブジェクトレベルでは高い一貫性を持っていますが、ディレクトリセマンティクスをネイティブにサポートしていません。例えば、2人のユーザが同じディレクトリに対して競合するコマンド(削除と名前の変更)を発行した場合は、どうなるでしょうか?HDFSでは、このようなディレクトリ操作はアトミックで、一貫性があります。
協調的ロックに対処するためにGoogleは、Twitterと協力して、競合するディレクトリ操作中のデータの不整合を防止する機能をCloud Storageコネクタに実装した。
既存のCloud Storage Connectorのユーザは、現在のバージョンのCloud Dataprocのコネクタ初期化アクションを使用することで、Cloud Storage Connectorの新しいバージョンにアップグレードできる。Cloud Dataprocバージョン2.0に達すれば、それが標準のコネクタになる。