case-kの備忘録

日々の備忘録です。データ分析とか基盤系に興味あります。

【GCP入門】大規模データの前処理に!Dataprocクラスタ上で、Datalabを活用したデータ分析環境構築

今回は、GCPの可視化分析ツールDatalab [Goolge Cloud Datalab] の環境構築に関する記事を書いてみました。
Dataproc [Goolge Cloud Dataproc]クラスタ上でDatalabを構築するメリットを実際のユースケースも考慮して書いてみます。

本記事の目的

本記事は以下を目的としています。
・Datalabの理解を深めること
・Dataproc上にDatalab環境を構築するメリットを理解すること
・ただの備忘録

Datalabとは

GCPが提供するJupyter Notebook形式の可視化・分析ツールです。
データを格納するストレージであるGCS[Googel Cloud Storage]やデータウェアハウスのBigQueryからデータを操作・可視化・分析したい際に活用します。

Dataproc上で構築するメリット

Dataproc上で構築するメリットは大規模データの前処理を行えることです。
DatalabはGCE [Google Compute Engine] でも構築できます。数百レコードのデータを扱う場合、Dataproc上でDatalabを構築するメリットはないように思えますが、大規模データを扱う場合はメリットがあります。ユースケースとして1億レコードのデータに前処理として新しくカラムを追加したい場合、1台のサーバではマシンパワーが足りず、メモリエラーになるかと思います。
このような場合、Dataprocクラスタ上で実装していれば、PySprkなど膨大なデータの前処理をJupyter Notebook形式のインタラクティブ性を持ったまま処理することができます。
case-k.hatenablog.com

Dataprocクラスタを再構築

Dataproc上でDatalabを使う場合、Dataprocクラスタを再構築するのが好ましいです。
DatalabはブラウザからPythonの2系と3系を選択し両方扱うことができますが、以前構築したようにDataprocクラスタはデフォルトではPython2系がメイン・ワーカーノードで使われいるからです。
case-k.hatenablog.com

以下のコマンドを実行し、Dataprocクラスタ構築時に、DatalabとPythonのanacondaをインストールしたいと思います。
※ Datalabの最新バージョンは3.5.5なので、初期化処理でanacondaのバージョンも統一する必要があります。
バージョンを指定しない場合、Dataprocクラスタの各ノードのバージョンは「Python 3.6.5 :: Anaconda, Inc.」となります。

gcloud dataproc clusters create my-3-cluster[クラスタ名] --zone us-central1-a \
        --metadata 'CONDA_PACKAGES="python==3.5.5"' \
        --scopes cloud-platform \
        --initialization-actions gs://dataproc-initialization-actions/conda/bootstrap-conda.sh,gs://dataproc-initialization-actions/conda/install-conda-env.sh,gs://dataproc-initialization-actions/datalab/datalab.sh \
        --master-machine-type n1-standard-1 --master-boot-disk-size 50 \
        --num-workers 2 --worker-machine-type n1-standard-1 \
        --worker-boot-disk-size 50 --network=default 

ファイアウォールを設定する

フィアウォールで以下の設定を行い、ブラウザからDatalabを確認してみます。
ツールバーの「VPCネットワーク」より、「ファイアウォール ルール」を選択し、「ファイアウォール ルールの作成」より以下の設定をしてください。

名前:default-allow-dataproc-access
ターゲット:「ネットワーク上の全てのインスタンス」
ソースフィルタ:「IP範囲」
ソース IP の範囲:「自身のマシンのIPアドレス」
その他のプロトコル:tcp:8088;tcp:9870;tcp:8080
※指定したプロトコルとポート選択

※ 自身のマシンのIPアドレスは以下より確認
http://ip4.me/


f:id:casekblog:20180921211411p:plain

ブラウザからDatalabを確認する

実際にブラウザからDatalabを確認してみたいと思います。
Dataprocクラスタを選択し、該当するクラスタを選択してください。
VMインスタンス」よりメインノードを選択し、「外部IPアドレス」をコピーしてください。
外部IPアドレス末尾に先ほど、ファイアウォール設定時にポート指定した「:8080」を末尾に付与しブラウザから確認してください。
※ Datalabはデフォルトではポート「:8080」を利用します。

f:id:casekblog:20180921182734p:plain

無事Datalabをブラウザで確認することができました。
次は実際にDataprocクラスタ上のDatalabを活用しBigQueryやPySparkを実行してみたいと思います。

参考
GoogleCloudPlatform/dataproc-initialization-actions
https://github.com/GoogleCloudPlatform/dataproc-initialization-actions/tree/master/datalab
【GCP入門編・第13回】 Cloud Datalab でデータの可視化を行ってみよう! | 株式会社トップゲート