こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。
もはやWeb解析だけの時代は終わり、様々なデバイス・チャネルからの顧客データを集めて分析して最適化して行くというのをやろうとすると、やはり出てくるのがビッグデータの処理。
というわけで、今回からはAdobe AnalyticsやCRMなどからあらゆるデータをGoogle Cloud Platform上に集約して繋げて分析して、ディープラーニングして最適化して、自動的にセグメント分けして、などなどの施策を実施するための技術的なメモを不定期連載して行きます
なぜGoogle Cloud Platformなのかというと、無料トライアルが12ヶ月あるのと、常時無料使用プランもあるので、クラウド初心者エンジニアでも試しやすいという点です。
まずは、Adobe Analyticsのデータフィードファイルを、Google Compute Engine上のLinuxVMインスタンスにSFTPで転送する事から始めてみます。
やるべき事は
1. Google Compute EngineでLinuxVMインスタンスを立てる。
2. VMにAdobe Analyticsのデータフィード受け取り用のLinuxユーザーを追加する
3. Adobe Analyticsのデータフィード配信設定を作成する
4. Adobeの公開鍵を.sshディレクトリに設置する
です。
1. Google Compute EngineでLinuxVMインスタンスを立てる
まずは受け皿となるGCEを用意します。
Google Cloud Platformをまだ使っていない場合は、まずは無料トライアルから始めましょう。
Google Cloud Platform無料トライアル
https://cloud.google.com/free/?hl=ja
GCP登録後、[Compute Engine] > [VMインスタンス] を開き、インスタンスを追加します。
常時無料プランの下記スペックで試します。
マシンタイプ: f1-micro
ゾーン: us-west1-a
ディスク: 標準の永続ディスク 30GB (CentOS7)
ファイアウォール: HTTP,HTTPSを許可
外部IP: 固定IP
固定IPだと、インスタンスを削除して未使用状態のまま保持してると課金されてしまうようですので、注意しましょう。
あと、GCPをコマンドラインで管理出来るCloud SDKをPCにインストールしておきます。
ローカルPCのターミナルから、VMにsshでログインしたりファイル転送する事が出来ます。
Cloud SDK
https://cloud.google.com/sdk/?hl=ja
2. Adobe Analyticsのデータフィード受け取り用のLinuxユーザーを追加する
VMにログインして、datafeedユーザーを追加します。
$ sudo useradd datafeed $ sudo passwd datafeed #パスワードを設定
任意でデータフィードファイルアップロード用のディレクトリを作っておきます。
私はfilesというディレクトリを作りました。
また、.sshディレクトリも作成しておきます。
.sshディレクトリのパーミッションは700にします。
$ su - datafeed Password: #パスワードを入力 $ mkdir files $ mkdir .ssh $ chmod 700 .ssh
3. Adobe Analyticsのデータフィード配信設定を作成する
データフィード設定の前に、VMインスタンスのIPアドレスを調べておきます。
Compute Engineの管理画面で見るか、またはCloud SDKのgcloudコマンドで調べます。
構文は、gcloud compute instances list [インスタンス名]です。
mac:~ $ gcloud compute instances list myvmtest NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS myvmtest us-west1-a f1-micro 10.***.*.* 35.***.***.** RUNNING
IPアドレスをメモしたらデータフィードの設定に進みます。
1. Adobe Analyticsにログインし、[管理者] > [データフィード]を開きます。
2. [+追加]ボタンを押して、データフィードを作成します。
3. データフィード設定を入力します。
■フィード情報
データフィード名: 任意の名前をつけます。
レポートスイート: データフィードを配信する対象RSを選択
メールアドレス: 配信完了や失敗の通知メールを受けとるメアドを入力
フィード間隔: 1時間または毎日を選びます。今回は単発で試すので[毎日]を選択。
遅延処理: 配信時間を意図的に遅らせたい場合は遅延時間を選びます。今回は[遅延なし]を選択。
開始日と終了日: データフィードの対象期間を選択。[連続フィード]を選ぶと、終了日なしでずっと配信され続けます。
今回は単発テストなので、開始日終了日を昨日(2017-05-17)にしました。
■宛先
タイプ: SFTP
ホスト: VMインスタンスのIPアドレス
パス: データフィードをアップロードするディレクトリ(ホームディレクトリからの相対パスで指定)
ユーザー名: さっきVMで作ったdatafeed用のユーザー名
ここに表示されている[RSA鍵をダウンロード]をクリックして、公開鍵をダウンロードしておきます。
■データ列の定義
エスケープ文字を削除: チェック入れる
列テンプレート: 選択しない。
圧縮形式: gzip
パッケージタイプ: 単一のファイル
マニフェスト: マニフェストファイル
今回はとりあえず全部のカラムを取り出すので、[すべてを追加]をクリックして、全カラムを選択します。
パッケージタイプはデフォルトの「複数ファイル」を選ぶとデータファイルが分割されてしまうので、「単一のファイル」を選んでおくと、全ページビューのデータがhit_data.tsvという一つのファイルにまとまります。
ただしトラフィックが膨大なレポートスイートだと、ファイルが大きすぎて大変なので、「複数のファイル」で良いです。
分割された場合、配信されたファイル名はマニフェストファイルに載っているので、それを見て処理をする事になります。
そしてここまでで入力したら、保存しないで公開鍵の設置に進みます。
[保存]はまだしません。
※さきに保存してしまうと、SFTP接続が失敗してエラーになります。
4. Adobeの公開鍵を.sshディレクトリに設置する
データフィード作成画面からダウンロードした公開鍵[private_sftp_key-2013-10.pub]をVMに転送します。
gcloud compute copy-filesコマンド または、 scpを使い慣れてるならgcloud beta compute scpコマンドで転送します。
mac:~ $ gcloud beta compute scp private_sftp_key-2013-10.pub myvmtest:~/ --zone us-west1-a
アップロードしたファイルを、datafeedユーザーの.sshディレクトリにauthorized_keysというファイル名で設置します。
mac:~ $ gcloud compute ssh myvmtest $ sudo su $ mv private_sftp_key-2013-10.pub /home/datafeed/.ssh/authorized_keys $ cd /home/datafeed/.ssh/ $ chown datafeed:datafeed authorized_keys $ chmod 600 authorized_keys
そしてsshd_configを修正して、sshdを再起動します。
$ vim /etc/sshd/sshd_config
下記の2行のコメントを外して有効化します。
RSAAuthentication yes PubkeyAuthentication yes
そしてsshdの設定をテストをして、問題なければサービスを再起動
$ /usr/sbin/sshd -t $ service sshd restart
それからデータフィード管理画面に戻って[保存]ボタンをクリックします。
しばらくするとデータフィード配信完了のメールが来て、指定したディレクトリにデータフィードファイルが配信されていればOKです。
$ ls files exturedev_2017-05-17.tar.gz exturedev_2017-05-17.txt
今回はAdobeのデータフィードファイルをGCEのVMインスタンスにSFTPでアップロードする方法について説明しました。
次回は、データフィードファイルを展開して、BigQueryに取り込んでクエリを実行する方法などについて書いてみます。
続き: Adobe Analytics: データフィードをGoogle BigQueryのテーブルにロードする
ブログへの記事リクエストはこちらまで