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

第5回 Amazon Redshiftのアーキテクチャ ~スケーリングとリストアを試してみよう

この記事を読むのに必要な時間:およそ 3 分

この連載の第3回第4回で,Amazon Redshiftの起動をはじめデータのロード,そしてローカルマシンからのクエリ実行と,一通りの操作に触れてきました。今回は,よりAmazon Redshiftの内部に踏み込み,Redshiftクラスタのアーキテクチャからスケーリングとリストアの方法について説明を行います。

Amazon Redshiftのアーキテクチャ

まずは,Amazon Redshiftのアーキテクチャについて見ていきましょう。

図1 Amazon Redshiftアーキテクチャ

図1 Amazon Redshiftアーキテクチャ

図1のように,Redshiftクラスタの内部は,大きくはクライアントとのインタフェースの役割を担うLeader Node(リーダーノード)⁠およびリーダーノードから送られてくるタスクの処理を担当するCompute Node(コンピューティングノード)に分かれます。それでは,図1のそれぞれの項目について見ていきましょう。

Leader Node(リーダーノード)

リーダーノードは,クライアントのアプリケーションとのやりとりを行い,SQLの解析,コンピューティングノードへのタスクの割り振りなどを行います。また,Redshift上で保持するテーブルの情報や統計情報などもこのリーダーノードで保持し,コンピューティングノードに問い合わせをする必要が無いクエリはリーダーノードで処理され,クライアントへ結果を返します。1つのクラスタにつき1つのリーダーノードが存在し,このリーダーノードの利用に対する課金は行われません。なお,第3回のようにシングルノードで起動した場合は,リーダーノードとコンピューティングノードの機能を合わせもった1台の構成となります。

Compute Node(コンピューティングノード)

コンピューティングノードは,リーダーノードがSQLを解析して生成したタスクを受け取り,実際の処理を行います。このノードは,数を増やしたり,もしくはノードのタイプを変更することで容量,性能ともにスケールさせることが可能です。ノードタイプは容量2TBのXLノードタイプと,16TBの8XLノードタイプをサポートします。ノードは最大100台並べることができ,最大容量としては8XLノードタイプを100台並べた1.6PBになります。課金もこのコンピュータノードのタイプと台数に応じて行われます。料金やノードタイプの詳細はこちらに記載されています。

Node Slice(ノードスライス)

コンピューティングノードの内部は,1コアあたり1つのスライスとして複数のスライスに分割され,それぞれのスライスにメモリやディスクのスペースが割り当てられます。リーダーノードは,スライスに対してデータの配置を管理し,SQLの実行などもスライスに対して行います。なお,各スライスは独立しているため,並列に処理させることが可能です。

Amazon S3

コンピューティングノードは,Redshiftクラスタに保存されているデータのバックアップ(スナップショットの配置)先として,Amazon S3を用いています。Redshiftクラスタをシャットダウンする際にも,S3にスナップショットをとっておくことで,次回S3上のスナップショットからリストアして起動することができます。起動中のクラスタと同じ容量(最小構成の場合は2TB)まで無料で利用でき,デフォルトで1日に1回自動でスナップショットが保存されるようにスケジュールされています。なお,ユーザが直接S3のバケットにアクセスすることはできません。

このように,Redshiftはコンピューティングノードの増減により,容易に容量と性能をスケールさせることを可能としています。次はスケールの方法について説明します。

Redshiftクラスタのスケーリング(リサイズ)の方法

Redshiftクラスタをスケール(リサイズ)させる際のパラメータとして,ノードタイプとノード台数を変更することが可能です。リサイズの方法は非常に簡単で,クラスタ詳細画面から"Resize"ボタンをクリックし,リサイズ後のノードタイプとノード数を指定するだけでリサイズを行うことができます図2)⁠リサイズをすればそのクラスタ構成に応じた料金が課されることになりますので,ご自身でリサイズをテストされる際には注意してください。

図2 リサイズ設定

図2 リサイズ設定

Node Tpye(ノードタイプ)
変更後の新しいノードタイプを指定します。
Cluster Type(クラスタタイプ)
Single Node(シングルノード)もしくはMdlti Node(マルチノード)が選択でき,マルチモードの場合にはクラスタのノード数を設定することができます。
Number Of Nodes(ノード数)
クラスタのノード数を指定します。

次に,実際にどのようなステップでスケールが行われるかについて説明します。

著者プロフィール

宮崎真(みやざきまさし)

HapyrusのソフトウェアエンジニアとしてAmazon Redshift向けプロダクトを開発中。

学生時代にIPA未踏ユースの経験を経て,卒業後ITコンサルティング会社に入社。この会社では基幹システムを対象としたミドルウェアの開発やiOSアプリ開発を経験。

その後米国グリーンカードの抽選に当選したのを機に,2012年にカリフォルニアベイエリアに移住しHapyrusに参画。

Twitter:@sockspaw


藤川幸一(ふじかわこういち)

学生時代からStartup (電脳隊・PIM)に関わり,PIMがYahoo! JAPANに買収された後は,エンジニアとしてYahoo!モバイルを開発。アジャイル開発コンサルやデリバティブ取引システムなどの開発経験を経て,シリウステクノロジーズでテクニカルマネージャ&夜はIPA未踏人材育成事業でHadoopのミドルウェア開発プロジェクト。日本JRubyユーザグループ発起人。

シリウスがYahoo! JAPANに買収されたのを機に,2010年FlyData Inc.(旧社名Hapyrus)をUSにて起業。カリフォルニアSunnyvale在住。

Twitter:@fujibee

コメント

コメントの記入