Amazon Redshiftではじめるビッグデータ処理入門

第3回Amazon Redshiftを動かしてみよう

前回まで、Amazon Redshiftの機能や特徴について説明を行いました。今回からは実践編として、Amazon Redshiftクラスタを起動するところから、データのロード、SQLの実行やクラスタの操作まで説明していきます。今回は、Redshiftクラスタの起動と、自分のマシンからのRedshiftクラスタへの接続までを説明します。

今回のチュートリアルでは、最小構成(XLタイプのシングルノード/2TB)のRedshiftクラスタを起動しますが、この場合一時間あたり$0.85の費用(2013/5/3時点)が発生し、EC2の最小インスタンスの料金に比べてかなり高くなります。試される場合には、完了後にRedshiftクラスタをシャットダウンさせるなど管理にご注意ください[1]⁠。

なお、Amazon Redshiftを使用するには、AWSのアカウントを事前に準備しておく必要がありますが、アカウントの取得については割愛させていただきます。

事前準備

Redshiftクラスタを起動する前に、事前準備としてRedshiftクラスタに接続するクライアントツールを準備しましょう。Redshift自体はPostgreSQL(ver8.0.2)をベースに作られており、psql(PostgreSQL標準のクライアントコマンド)も使えますし、JDBCやODBCといった接続もサポートしているため、これらを用いたデータベースクライアントツールも利用できます。

今回は、無料のGUIのデータベースクライアントであるSQL Workbench Clientを利用します。このツールを利用するにはJava 6 runtime environmentがインストールされている必要がありますので、事前にお使いのマシンの設定をご確認ください。

Windows
コントロールパネルを開き、Javaのアイコンをクリック
MacOS X
システム環境設定を開き、Javaのアイコンをクリック。もしくはjava -versionコマンドをターミナル上で実行
Linux
java -versionコマンドをターミナル(シェル)上で実行

SQL Workbench Clientのセットアップ

SQL Workbench Client / Downloadsのページに行き、OSに応じたソフトをダウンロードします。

Mac
"Download package for MacOS"
Windows/Linux
"Download generic package for all systems"

ダウンロードしたファイルを解凍し、解凍してできたディレクトリを任意のディレクトリに移動します。

次にRedshiftクラスタに接続するためのJDBCドライバをダウンロードしてください。

JDBCドライバ
URL:http://jdbc.postgresql.org/download/postgresql-8.4-703.jdbc4.jar

ダウンロードしたドライバファイルは、SQL Workbench Clientのディレクトリの中に移動させましょう。

インストール作業は以上で、以下の通り起動できるか確認してください。

Mac
SQLWorkbenchJ.app を実行
Windows
SQLWorkbench.exeもしくはSQLWorkbench64.exe(64bit)を実行
Linux
sqlwbconsole.shもしくはsqlworkbench.jarを実行

Redshiftクラスタの起動

それでは、Redshiftクラスタの起動から始めていきましょう。ブラウザからAWSコンソールを開き、サインインを行います。

図1 AWSコンソール画面
図1 AWSコンソール画面

サインインの後、サービス一覧が表示されますのでRedshiftを選択します。リージョンはN. Virginia(us-east-1)にしておきましょう。

図2 AWSサービス一覧画面
図2 AWSサービス一覧画面
図3 Amazon Redshiftコンソールトップ画面
図3 Amazon Redshiftコンソールトップ画面

"Launch Cluster" をクリックすると、クラスタ作成ウィザードが開きますので(図4⁠⁠、下記の情報を入力してください。

図4 Redshiftクラスタ起動設定(1)
図4 Redshiftクラスタ起動設定(1)
Cluster Identifier(クラスタ識別子)
クラスタを表す識別子で、クラスタのURLの一部に組み込まれます。
Database Name(データベース名)
クラスタ構築と同時に作成するデータベース名を指定します。
Database Port(ポート番号)
クラスタへ接続する際のポート番号を指定します。
Master User Name(管理者ユーザ名)
Master User Password(管理者ユーザパスワード)
データベースの管理者ユーザ名、パスワードを入力します。データベースの作成や削除、ユーザや権限の管理などに利用しますので、実運用でRedshiftを利用する際は厳重に管理してください。

"Continue"をクリックし、続いてクラスタの構成の設定画面に進みます。

図5 Redshiftクラスタ起動設定(2)
図5 Redshiftクラスタ起動設定(2)
Node Type(ノードタイプ)
Redshiftクラスタを構成する各ノード(サーバ)のインスタンスタイプを選びます。今回は最小構成ですので"dw.h1.xlarge"を選択しましょう。
Cluster Type(クラスタタイプ)
Single Node(シングルノード)か、Multi Node(マルチノード)が選択できます。マルチノードを選択した場合はノードの台数を増やし、容量や性能を向上させることができます。今回はシングルノードを選びましょう。

"Continue"をクリックすると、続いて追加設定の画面が表示されます。それぞれの項目については以下の通りですが、いずれもデフォルトの設定で構いません。

図6 Redshiftクラスタ起動設定(3)
図6 Redshiftクラスタ起動設定(3)
Cluster Parameter Group(クラスタパラメータグループ)
Redshiftでは、日付表示方法の設定などデータベースのパラメータを設定することができ、これらをまとめたグループを作成して指定することができます。今回はデフォルトで構いません。
Encrypt Database(データベースの暗号化)
このパラメータを"Yes"にすることで、データがRedshiftクラスタに保存される際、すべて暗号化されます。今回は"No"で構いません。
Choose a VPC(VPCの選択)
VPCの環境で、Redshiftクラスタを構築することができます。特に必要なければ"Not in VPC"で構いません。
Availability Zone(アベイラビリティゾーン)
クラスタを起動するゾーンを指定することができます。今回は"No Preference"で構いません。
Cluster Security Groups(クラスタセキュリティグループ)
Redshiftクラスタへのアクセスをアクセス元IPなどで制限することができ、ここではその設定を選択します。今回は"default"で構いません。セキュリティ設定については、後ほど行います。

"Continue"をクリックすると、最後に確認画面が表示されます。起動後は確認画面ページの下に記載されている通り課金がされますので、注意してください。それ以外特に問題無ければ、"Launch Cluster"をクリックしてRedshiftクラスタを起動しましょう。

図7 Redshiftクラスタ起動確認画面
図7 Redshiftクラスタ起動確認画面

以上でRedshiftクラスタの起動は完了です。クラスタの起動には、数十分程度かかりますので、その間にセキュリティグループの設定を進めましょう。

セキュリティグループの設定

左メニューにある"Security Groups"をクリックして、セキュリティグループの設定画面を開きましょう。 Redshiftのセキュリティグループ設定は、接続を許可するIP(ECグループ)を設定するホワイトリスト方式を採用しています。デフォルトのセキュリティグループの設定ではこのリストが空であるため、アクセスを一切受け付けないようになっています。今回は、ローカルマシンからのアクセスを許可する設定を行いましょう。

デフォルトのセキュリティグループである"default"を選択すると、最初は空ですが設定一覧が表示されます。この画面下部に新規の権限設定画面が同時に表示されていますので、ここで設定を追加します。

図8 セキュリティ接続設定の新規作成
図8 セキュリティ接続設定の新規作成

"Connection Type"(接続タイプ)では、接続元のIPを指定する"CIDR/IP"か、EC2のセキュリティグループを指定する"EC2 Security Group"が選択できます。今回はローカルマシンなので、⁠CIDR/IP⁠を選択しましょう。自動でRedshift側から見えるローカルマシンのIPアドレス(CIDR/IP of your current machine)が表示されます。このIPをコピーして"CIDR/IP to Authorize"の入力欄に入力し、"Authorize"をクリックして保存しましょう。これで、あなたのマシンからRedshiftクラスタに接続できるようになりました。

Redshiftクラスタへの接続

Redshiftのクラスタの起動完了後、以下のように"Cluster Status"が"active"になります。この状態でクラスタの名前をクリックすると、クラスタの詳細画面が表示され、Redshiftクラスタへの接続情報を取得することができます。

図9 Redshiftクラスタ一覧
図9 Redshiftクラスタ一覧

それでは早速、事前準備でセットアップしたクライアントツールを使って、Redshiftクラスタに接続してみましょう。

まず、SQL Workbench Clientを起動してください。起動後、以下のように各項目を設定しましょう。

図10 SQL Workbench Clientプロファイル作成
図10 SQL Workbench Clientプロファイル作成
図11 PostgreSQLドライバ設定
図11 PostgreSQLドライバ設定
図12 JDBC接続先確認
図12 JDBC接続先確認
New Profile(プロファイル名)
任意のプロファイル名を入力
Driver(接続用のドライバ種別)
  • PostgreSQLドライバを選択
  • ドライバ選択後にドライバの設定をするか確認画面が表示されるので、"Yes"を選択
  • Libraryの箇所を、ダウンロードしたJDBCドライバのjarファイルのパスを選択し、OKをクリック
URL(接続先URL)
Redshiftクラスタの接続先を入力
Username(ユーザ名)
Redshiftクラスタの管理者ユーザ名を入力
Password(パスワード)
Redshiftクラスタの管理者パスワードを入力
Autocommit(自動コミット)
SQL実行時の自動コミット設定。今回は有効に設定します。これは必要に応じて外してください。

入力完了後OKをクリックし、特に接続に問題無ければSQLを実行する画面が表示されます。ここからは、MySQLやPostgreSQLといったRDBMSと同じように任意のSQLを実行できます。

図13 SQL実行例
図13 SQL実行例

Redshiftクラスタのシャットダウン

最後にRedshiftクラスタのシャットダウンをしましょう。シャットダウンの手順も非常に簡単です。まずクラスタの詳細画面から"Delete"をクリックすると、スナップショットを保存するか確認画面が出ます。ここでYESを選択した場合には、クラスタのデータはすべてバックアップされ、次回このバックアップデータからリストアしてRedshiftクラスタを立ち上げることができます。今回は、特にバックアップは必要ありませんので、"No"を選択し⁠Delete⁠をクリックして削除してしまいましょう。

図14 Redshiftのシャットダウン
図14 Redshiftのシャットダウン
図15 スナップショットの取得確認
図15 スナップショットの取得確認

ここまでRedshiftクラスタの起動から接続までを行いました。起動は非常に簡単で、また他のRDBMSと同様SQLも一部機能を除き自由に書けるため、データベースに触れたことがある方にとっては違和感が無く操作できるのではないでしょうか。次回は、Redshiftクラスタへのデータのロードやクエリの実行といったことを説明していきたいと思います。


筆者が所属する Hapyrusでは、Amazon Redshift を使いはじめるための継続データインテグレーションサービスFlyData for Amazon Redshiftを提供しています。また、Amazon Redshift の導入コンサルティングも無料で行なっていますので、興味がある方はぜひお気軽に info@hapyrus.com にお問い合わせください。

おすすめ記事

記事・ニュース一覧