Hadoop用カラムナストレージ「Parquet」正式版をTwitterがオープンソースで公開
データを列方向に格納することで読み出し性能を向上し、高速な分析を実現する技術は、「カラム型データベース」「カラムナーストレージ」「カラム型データストア」などと呼ばれて注目されています。その技術をHadoopのストレージに持たせることで、Hadoopでもさらに高速な分析を可能にする「Parquet」バージョン1.0を、Twitterがオープンソースで公開しました。
公開したのは7月30日と1カ月ほど前のことで気付くのが少々遅かったのですが、ほかに日本語の記事が見当たらなかったので紹介したいと思います。
Parquetとはどのようなソフトウェアなのか、Twitterのブログから少し長めの説明を引用しましょう。
Parquet is an open-source columnar storage format for Hadoop. Its goal is to provide a state of the art columnar storage layer that can be taken advantage of by existing Hadoop frameworks, and can enable a new generation of Hadoop data processing architectures such as Impala, Drill, and parts of the Hive ‘Stinger’ initiative.
Parquetはオープンソースで、Hadoop用カラムナストレージフォーマット(Columnar storage format for Hadoop)だ。目指しているのは、既存のHadoopフレームワークが利点を享受できる最新のカラムナストレージレイヤを提供すること。そして、Impala、Drill、Hiveの一部である'Stinger'イニシアティブのような新世代のHadoopデータ処理アーキテクチャを実現させることだ。
Parquetの利点は一般的なカラムナストレージと同様、列方向にデータを保存して読み出せるため、必要なデータのみをすばやく読み取ることができること、列方向には同一型のデータが並んでいるため高い圧縮率が適用可能で、それがデータ容量の節約とさらなるデータ読み取りの高速化に貢献することなどです。
これらの利点によって、大規模データの格納と、それを高速に読み出して分析することを実現します。
Parquet 1.0の機能は以下となります。
- Apache Hadoop Map-Reduce Input and Output formats
- Apache Pig Loaders and Storers
- Apache Hive SerDes
- Cascading Schemes
- Impala support
- Self-tuning dictionary encoding
- Dynamic Bit-Packing / RLE encoding
- Ability to work directly with Avro records
- Ability to work directly with Thrift records
- Support for both Hadoop 1 and Hadoop 2 APIs
Hadoopにおけるカラムナストレージの重要性
Hadoopにカラムナストレージを用いて高速な分析を実現するという手法は、日本発のベンチャーであるTreasure Dataがすでに自社サービスのために内部実装していることを明らかにしています。Googleも大規模なクエリを超高速で実行する「BigQuery」の基となったコードネーム「Dremel」でカラムナストレージを実装していることが論文から分かっています。ParquetはこのDremelを参考に開発されています。
Parquetが目指していることでもありますが、今後、Hadoopでの高速分析処理にはカラムナストレージが重要さを増してくるはずです。その実装としてのParquetは、TwitterだけでなくClouderaも協力して開発してきたこともあって中心的役割を果たしていくことになるのではないでしょうか。