HP VerticaでConnector for HDFSを試してみる

h50146.www5.hp.com

Verticaは前回のGreenPlum同様にカラムナーDBです。
Masterレスアーキテクチャというのが特徴のようです。
詳しくは上記を。

今回はCommunity Editionをインストールしました。
3ノードクラスター、1Tbyteまで無料です。
ダウンロードは下記から。
MyVertica

Vertica自体のインストールはガイド通り進めていけばすんなり完了します。
ちなみに下記のようなGUIで管理が出来ます。 f:id:kashigeru:20150421221610j:plain:w400

で、今回はVerticaクラスタHDFSクラスタの連携です。

全データを全てVerticaクラスタに投入するのではなく別にHDFSクラスタを構築してそちらにデータを投入し、Verticaでは分析対象のデータのみロードしてくるという使い方が出来ます。

インストール

Vertica Connector for HDFSをダウンロードして全台にインストールするだけです。
f:id:kashigeru:20150421221401j:plain

これでVerticaからCOPYコマンドでHDFS上のデータが指定出来るようになります。

データロード

booksというテーブルにHDFS上の/user/hdfs/books/booksをロードします。
booksテーブル

sample=> \d books;
                                      List of Fields by Tables
 Schema | Table |    Column    |    Type     | Size | Default | Not Null | Primary Key | Foreign Key
--------+-------+--------------+-------------+------+---------+----------+-------------+-------------
 public | books | id           | int         |    8 |         | f        | f           |
 public | books | isbn         | varchar(80) |   80 |         | f        | f           |
 public | books | category     | varchar(80) |   80 |         | f        | f           |
 public | books | publish_date | date        |    8 |         | f        | f           |
 public | books | publisher    | varchar(80) |   80 |         | f        | f           |
 public | books | price        | float       |    8 |         | f        | f           |
(6 rows)

ロードします。
WebHDFSを利用するのでHDFSでWebHDFS有効にしておく必要があります。

sample=> COPY books SOURCE Hdfs(url='http://NamenodeIP:50070/webhdfs/v1/user/hdfs/books/books',username='hdfs') DELIMITER '|' ABORT ON ERROR;
 Rows Loaded
-------------
    15971129
(1 row)

ちなみにtsvファイルをロードする場合は

COPY books SOURCE Hdfs(url='http://NamenodeIP:50070/webhdfs/v1/user/hdfs/books/books.tsv', username='hdfs') delimiter E'\t' record terminator E'\n' ABORT ON ERROR;

ロードする時にABORT ON ERRORをつけないとロードに失敗していてもエラーが出力されないようです。

データが入っているか確認

sample=> SELECT * from books limit 1;
    id    |     isbn      |  category  | publish_date |    publisher     | price
----------+---------------+------------+--------------+------------------+--------
 15724817 | 0-45506-569-2 | PSYCHOLOGY | 2003-05-26   | Grupo Santillana | 105.99
(1 row)

無事にロード出来ているようです。
これでHDFSとVerticaの連携が確認出来ました。
Community Editionは手軽にインストール出来るので試してみてはいかがでしょうか。

ちなみに惜しいなと思う点もありまして。
・LzoファイルがHDFSからのCOPYに対応していない
・クエリの処理結果をHDFSへ格納する場合のコネクタがない

Lzoファイルに関してはFeatureVersionで対応するという記述は見ました。
HDFSへのクエリ結果書き込みは下記のような回避策があるにはあるのですが。
HDFSNFSマウントしてExportする
・一旦ローカルにExportしてhadoopコマンドでputする
Exportするコマンドは

$ vsql sample -U dbadmin -c "select * from books limit 1" > /tmp/book

以上、VerticaとHDFSの連携でした。
(ノ´▽`)ノ{+++THANK YOU+++}ヽ(´▽`ヽ)