今回、Amazon Redshift を一時的に触ってみる機会があったので、Redshiftを動かしてSQLツールで使ってみるまでの手順を記録しておきます。
Redshiftを利用する際のイメージを付けたい方向けに記載しています。
Amazon Redshift
Amazon Redshift は SQLデータウェアハウスサービスです。 集計・分析が得意で列指向ストレージ技術が採用されています。BIツールなどからJDBCやODBCで接続が出来ます。
最小構成では、DW1のオンデマンドで $1.250/1時間(2014/03/23)で使えます。
クラスターの中に、必要なインスタンスを追加していく事が可能で、インスタンスを追加する毎にデータ容量と処理性能が向上する仕組みになっています。
今回の検証構成
今回試した構成は以下のような構成です。
手順は以下となります。
- Redshift Cluster の作成
- SQL Workbench の設定
- サンプルデータの投入
- SQL Workbench からのRedshift利用
- Redshift 利用状況の観察
結構すんなり使えるようになりました。ざっと使ってみるぐらいであれば、1~2時間あれば簡単な検証はできると思います。
1.Redshift Cluster の作成
さっそく、Redshift画面からクラスターを作成してみます。
「Launch Cluster」ボタンをクリックすると、Cluster Details 設定画面が開きます。
クラスター識別子やデータベース名、データベースポート番号(デフォルト 5439)、クラスターでのマスターユーザー名とパスワードを設定します。
次は、Node Configuration 設定画面です。ここでは、ノードタイプやクラスタータイプ、ノード数を指定します。
DW1での最少構成は、Note Typeは「dw1.xlarge」で、CPUは4.4ECU、メモリ 15GB、ストレージは2TBとなります。(500GB未満で良い場合は、DW2を選択すると良いです。)
今回は、クラスタータイプは Single Node で設定しました。
次は Addtional Configuration 設定画面です。データベースの暗号化やVPC選択、AZ選択などが可能です。
今回はデフォルトのままです。次の確認画面でCluster起動前に設定を確認できます。この画面で料金の提示もされます。「Launch Cluster」ボタンをクリックすると、クラスターの起動処理が始まります。
クラスターが使えるようになったら、Statusが「available」になります。
クラスターを選択すると、詳細を確認できます。「Configuration」画面では、接続アドレスやJDBC URL などが確認できます。
エンドポイントアドレスやJDBC URL を用いて、BIツールなどから接続する事になります。
2.SQL Workbench の設定
次は、Redshift に接続して、SQLを発行するツール「SQL Workbench」をダウンロードして設定します。
ダウンロードは SQL Workbench/J Download から可能です。Windowsで使う場合は、「Download generic package for all systems」からダウンロードします。
2014/03/22 時点では「Workbench-Build115.zip」をダウンロードできるので、適当な場所に解凍します。64bitの場合は解凍ディレクトリにある「SQLWorkbench64.exe」を起動すると利用できます。
なお、私は PostgreSQL JDBC で接続する為に PostgreSQL JDBC Download から「postgresql-9.3-1101.jdbc41.jar」をダウンロードして、「Workbench-Build115.zip」の解凍ディレクトリに配置しました。
SQL Workbench Profile設定画面で、Driver で PostgreSQL を選択した際に、ダウンロードした「postgresql-9.3-1101.jdbc41.jar」を選択します。
OKボタンをクリックすると、SQL Workbench ワークスペース画面が表示されますので、これでSQL発行の準備が完了です。
3.サンプルデータの投入
Redshift サンプルデータは、Amazon Redshift Getting Started Guide に記載されています。
「1.Create tables」に記載されているテーブル 7個を SQL Workbench で登録します。
次に、S3に用意されているデータを登録します。登録方法は同様に Amazon Redshift Getting Started Guide に記載されていますが、COPYコマンドをSQL Workbenchから発行して、S3上のデータを Redshift に登録する形になります。
各テーブルのデータを登録していきます。各テーブルのレコード数は以下です。
users | 49990 |
venue | 202 |
category | 11 |
date | 365 |
event | 8798 |
listing | 192497 |
sales | 3765 |
listing が約20万件ある状態です。
各レコードの内容は以下のような感じです。(サーバ上に持ってきて見てみました。)
# head -3 allusers_pipe.txt 1|JSG99FHE|Rafael|Taylor|Kent|WA|Etiam.laoreet.libero@sodalesMaurisblandit.edu|(664) 602-4412|TRUE|TRUE||FALSE|TRUE|||TRUE|FALSE|TRUE 2|PGL08LJI|Vladimir|Humphrey|Murfreesboro|SK|Suspendisse.tristique@nonnisiAenean.edu|(783) 492-1886||||TRUE|TRUE|||TRUE|FALSE|TRUE 3|IFT66TXU|Lars|Ratliff|High Point|ME|amet.faucibus.ut@condimentumegetvolutpat.ca|(624) 767-2465|TRUE|FALSE||FALSE||FALSE|TRUE|||TRUE # head -3 venue_pipe.txt 1|Toyota Park|Bridgeview|IL|0 2|Columbus Crew Stadium|Columbus|OH|0 3|RFK Stadium|Washington|DC|0 # head -3 category_pipe.txt 1|Sports|MLB|Major League Baseball 2|Sports|NHL|National Hockey League 3|Sports|NFL|National Football League # head -3 date2008_pipe.txt 1827|2008-01-01|WE|1|JAN|1|2008|TRUE 1828|2008-01-02|TH|1|JAN|1|2008|FALSE 1829|2008-01-03|FR|1|JAN|1|2008|FALSE # head -3 allevents_pipe.txt 1|305|8|1851|Gotterdammerung|2008-01-25 14:30:00 2|306|8|2114|Boris Godunov|2008-10-15 20:00:00 3|302|8|1935|Salome|2008-04-19 14:30:00 # head -3 listings_pipe.txt 1|36861|7872|1850|10|182.00|1820.00|2008-01-24 06:43:29 2|16002|4806|1890|7|233.00|1631.00|2008-03-05 12:25:29 3|21461|4256|2131|2|182.00|364.00|2008-11-01 07:35:33 # head -3 sales_tab.txt 1 1 36861 21191 7872 1875 4 728 109.2 2/18/2008 02:36:48 2 4 8117 11498 4337 1983 2 76 11.4 6/6/2008 05:00:16 3 5 1616 17433 8647 1983 2 350 52.5 6/6/2008 08:26:17 #
登録していく過程で、Redshift Cluster画面でQueriesタブを見てみると、実行クエリーの情報が見れます。一覧画面は以下のような画面です(画面右側も情報がありますがカットしています)。
各クエリーの詳細情報も確認できます。
同様に「Loads」タブでもロードした情報が確認できます。
4.SQL Workbench からの Redshift 利用
データの準備が終わりましたので、SQLを SQL Workbench から発行してみます。
発行するSQLサンプルは先ほどと同様、 Amazon Redshift Getting Started Guide に記載されています。
実行結果がちゃんと返されます。注目ポイントである検索速度ですが、速い時は速いです。このデータを使って別の仕組みとの比較はしていないので何とも言えないというのが実情です。
5.Redshift 利用状況の観察
他のAWSサービスと同様に、Redshift のパフォーマンスデータなどの利用状況を確認できます。
以下は、クラスターのパフォーマンス画面です。
Redshift のパラメータは「Parameter Groups」から確認できます。
検証が終わったら、Redshift Cluster を削除する事をお忘れなく!ストレージ単価で見ると安いと思いますが、削除を忘れて課金された時の金額はデカいと思いますので。