2015年1月23日金曜日

Yahoo!ビッグデータインサイトとTableauOnlineを連携させる

先日、IDCフロンティアさんのハンズオンセミナーに行ったのですが、
TableauのMyPageをアクティベーションの問題(凄い時間かかる)から作る事が出来ず、
失意のままセミナーが終わってしまったので、復習がてら資料読みながらやってみます。

ハンズオンセミナーは定期的にやるという話ですので、
是非、以下URLをウォッチして確認してみてください。
http://idcf.doorkeeper.jp/

今回のゴールは、
YBIとTableauOnlineを連携させて、TableauOnline上でグラフ化してみる。
ところまでやりたいと思います!
※Tableauのグラフ生成操作や詳しく解析手法を説明するという事は、
 今回の記事ではしませんのでご注意下さい!

今回用意する環境

IDCFクラウド
  light.S1
  Ubuntu Server 14.04 LTS 64-bit
Yahoo!ビッグデータインサイト(以降YBI)のアカウント
TableauOnlineのアカウント
です。
YBIもTableauもクレジットカードは今回不要です。
YBIは無料コースがありますし、Tableauは試用期間があります。
気楽に進めて下さい。

IDCFの初期構築はめちゃ楽ガイドをご参照ください。
http://www.idcf.jp/pdf/cloud/IDCFCloud_installation_guide.pdf

ちなみに2015/01/22時点で、新規ユーザは3000円分のクーポンついてます。
(3000円はlight.S1を半年上げっ放しでもOKな金額なので安心して検証出来ます!)
お友達紹介キャンペーンも併用すると最大6000円分のクーポンがついてきますので、
是非ご活用ください!(ご紹介は taka3110_pcc でお願いします!w)


その他のサイトのアカウント類は先に作っておきましょう。
(特にTableauはアクティベーションに1時間くらい掛かります。)

Yahoo!ビッグデータインサイトのアカウント作成

以下URLにアクセス
https://console-ybi.idcfcloud.com/users/sign_up


・・・簡単ですね。
SignUpをするとMyPageに飛んでデモが始まるので適当に流してください。
最初からいくつかサンプルデータが入ってますので、HiveやPrestoを使う事が出来ます。
HiveやPrestoを使う環境をSignUpのたった5項目書くだけで揃っちゃう。
ちょっと使ってみたいなーっていうときは便利ですね。

MyPageの右上、自分の名前が書いてあるメニューをクリックすると、
My Profile画面に移動できます。こちらでAPIKeyを取得します。

APIKeyを取得する為にパスワードを入力します。


APIKeyが表示されるので、今回はWrite-Only API Keysを使用します。
こちらをコピーしてメモ帳等にでも保存しておいてください。
(あとでtd-agentのコンフィグに記載する必要がある為)



TableauOnlineのアカウント作成

以下、URLにアクセス
https://www.tableau.com/ja-jp/products/online
無料で試すボタンを押すと以下のように入力画面が出てきます。
項目を埋めて下さい。

リクエスト送信後、1時間くらいでMyPage作成についてのリンクが記載されたメールが来ます。
かなり時間がありますので先にサーバを作ってしまいましょう。


サーバ構築


さて、それでは中身を構築しましょう。
ハンズオンセミナーに忠実に作ります。
今後、本サーバを使用した記事を書く予定ですが、今回の記事では実は使いません。
従って、YBIとTableauの連携だけ確認する方は飛ばしていただいて結構です。
ただAPIのサーバ指定を変更すればトレジャーデータでも使用できますので、
一般的にtd-agentとnginxの連携方法の練習と捉えていただければ。

連携についてはハンズオンセミナーの方で聞いて頂ければと思います。


apt-get install nginx
curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh
mkdir -p /usr/local/ybi/data
cd /usr/local/ybi/data
echo "export TD_API_SERVER=https://ybi.jp-east.idcfcloud.com" > ~/.bash_profile
source ~/.bash_profile
td account -f
#-----------------------------------------------
#以下対話式になるので記入(#は不要)
Enter your Treasure Data credentials.
Email: #YBIに登録したメールアドレス#
Password (typing will be hidden): #YBIに登録したメールアドレス#
Authenticated successfully. #←成功するとこのメッセージになります。
Use 'td db:create <db_name>' to create a database.
#-----------------------------------------------

td db:create handson
td table:create handson
apt-get install openjdk-7-jre
cp -p /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.org
vi /etc/td-agent/td-agent.conf
#-----------------------------------------------
#以下内容を記入。#APIキーを記入#の部分をYBIのAPIキーになおす。(#は不要)

# Tailing the Nginx Log
<source>
  type tail
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx-access.pos
  tag td.handson.streaming
  format nginx
</source>
# Treasure Data Input and Output
<match td.*.*>
  type tdlog
  apikey #APIキーを記入#
  auto_create_table
  buffer_type file
  buffer_path /var/log/td-agent/buffer/td
  endpoint https://ybi.jp-east.idcfcloud.com
  flush_interval 10s
  use_ssl true
</match>
#-----------------------------------------------
chmod +x /var/log/nginx/
/etc/init.d/td-agent restart
/etc/init.d/nginx restart

これでnginxのログをtd-agentを経由してYBIへ自動的に送る設定が完了しました。

念の為テストしてみましょう。
curl http://localhost/
curl http://localhost/
curl http://localhost/
curl http://localhost/
curl http://localhost/
sleep 10
td query -w -t presto -d handson "SELECT * FROM streaming"

上記を実行すると5行(5 rows in set)のアクセスデータがテーブル型で表示されると思います。
表示されない場合はggrksで。

TableauOnlineを使う


Tableauはタブローと読みます。タブローソフトウェアという会社のBIツールです。
YBIにしろ中身であるtreasuredataにしろ、分析、結果の出力までは行います。
それを見やすいようにビジュアライズしたりするのが、
今回Tableauに代表されるBI(Business Intelligence)ツールが必要になります。

百聞は一見に如かず。早速やってみてみましょう。

アクティベートが完了していればメールが来ていると思います。
文中のCreate Your SiteのリンクをクリックしてMyPageを作成しましょう。
ログインをすると完成したMyPageのワークブックが表示されている状態となります。

管理者ボタンをクリックしてプロジェクトを追加していきましょう。


プロジェクトをクリックして追加のリンクをクリックします。




名前と説明を適当にいれて追加ボタンをクリックします。


追加したプロジェクトがプロジェクトの一覧に表示されていると思います。



YBIとTableauの連携


さて、次はYBIの方を触ります。
今回はYBI --> Tableauへクエリ結果を出力させるやり方を取ります。

それではYBIにクエリを用意しましょう。
New Queryをクリックし、Databaseドロップダウンメニューからsample_datasetsを選択します。
クエリを記入(下記コピペ)して、下図青枠のResult Exportのaddボタンをクリックします。


クエリはこちら
------------------------------------------------------------------------------
SELECT
  CAST(TD_TIME_FORMAT(time, 'YYYY-MM-dd', 'JST') AS TIMESTAMP) AS Datetime,
  method AS Method,
  COUNT(1) AS Count
FROM
  www_access
GROUP BY
  TD_TIME_FORMAT(time, 'YYYY-MM-dd', 'JST'),
  method
------------------------------------------------------------------------------

Result Exportの画面でExport toにTableau Server を選択。
HostにはTableauOnlineのドメインを記入します。
Username/PasswordはTableauOnlineにログインした際に使用したものを記入します。
Datasourceは適当に入力をして、画面をスクロールします。
最後にProjectに先ほど作成したProjectの名前を記入してUseをクリックします。


UseをクリックするとNew Queryの画面に戻るのでRunをクリックして、
Queryを走らせると自動的にJobの画面に遷移します。

Jobが完了すると下図のようにJOB番号の横がrunningからsuccessになります。
今回のQueryだと平均で30秒程度で終わると思います。

successになったらTableauの方で確認してみましょう。
先ほど追加したプロジェクトにデータソースが追加されていると思います。



BIツールでのビジュアル化


最後にグラフを作成してビジュアル化します。

データソース名の横にあるチェックボックスにチェックを入れて、
新しいワークブックのリンクをクリックするとグラフ作成画面に遷移します。

グラフ作成画面では左にあるディメンションやメジャーを列/行へドラッグ&ドロップする事で、
グラフを簡単に作成する事ができます。
Datetimeは+を押すことでより期間をスコープして確認する事ができます。
習うより慣れろですので、先ずは下図のような図を作ってみて色々と変更してみて下さい。




今回はYBIとTableauの連携でした。
上記内容は定期的にハンズオントレーニングをやっています。
詳細はIDCFのイベントページをご確認下さい!
http://idcf.doorkeeper.jp/

それでは、よいクラウド構築を!

2015年1月14日水曜日

クラウド比較に使うWRSとは

WRSとは、WordpressResponseSpeedの略です。
知ってる人が居たら結構怖いです。
なぜなら私が勝手に考えたベンチマーク単位だからです(微笑)
簡単に言うと、「完全初期状態のwordpressの読みだし性能」です。

当サイトではWRSを使用して比較をしていきます。
WRSとは、apache / mysql / wordpress3.0 を全てデフォルトの状態でインストールし、
そのトップページにabで取得した1秒間のレスポンス回数です。
wordpressを3.0にしているのは、最適化されておらず、ほどよい負荷が掛かる為です。
回数ならTimeじゃないか。という突っ込みもあるかもしれませんが、
WRTだとDD-WRTと被ってしまい、DD-WRTを検索したい人に恨まれるので、
WRTではなく、WRSとしました。ちなみにWRSで検索してもIT系は殆どヒットしませんでした。

デフォルトのwordpress構成なので、phpがボトルネックになります。
CPUを上手く使えないので、CPUに負荷が掛かる形になり、
CPUの性能によって大きく結果が変わります。
従って、CPUの性能が顕著に出る比較となり、また完全デフォルト状態での実施の為、
Diskの性能も少し加味される形になります。
出してみて比較すると意外に良い感じな指標になるため、この方式を採用しました。

現在は以下構成で比較をおこなっています。

#OS:Ubuntu 12.04.1 LTS(64bit)
#apache 2.2.22
#MySQL 5.5
#PHP 5.3

Ubuntu 12.0.4 LTS(64bit)のapt-getでインストールされる最新のミドルウェアが
上記となっており、それを使用しています。
以下、環境構築方法と計測ルールになります。

環境構築


・以下、Ubuntu上で実施
apt-get update
apt-get install apache2 mysql-server php5 php5-mysql
wget http://ja.wordpress.org/wordpress-3.0-ja.tar.gz
tar xzvf wordpress-3.0-ja.tar.gz
mv wordpress/wp-config-sample.php wordpress/wp-config.php
mv wordpress /var/www/
/etc/init.d/apache2 restart
mysql -uroot -hlocalhost -e "create database database_name_here"
mysql -uroot -hlocalhost -e "grant all privileges on *.* to username_here@localhost identified by 'password_here'"

・以下、WebUI(http://[GlobalIP]/wordpress/)にアクセスして設定
サイトのタイトル:pc-concierge.net
ユーザ名:admin
パスワード:adminadmin
メールアドレス:abc@abc.abc
チェックボックス:外す
(このサイトが Google や Technorati などの検索エンジンに表示されるのを許可する。)
上記でインストール実施


計測ルール


localhostから計測
以下アドレスで試験
http://localhost/wordpress/
apache、mysqlはオプション変更毎にリスタートして計測
ab -n 1 -c 1 http://localhost/wordpress/
ab -n 10 -c 10 http://localhost/wordpress/
ab -n 100 -c 10 http://localhost/wordpress/
ab -n 100 -c 100 http://localhost/wordpress/
ab -n 1000 -c 100 http://localhost/wordpress/
上記コマンド毎の3回の最速値を取得
計測取得値
Requests per second
計測手法に変更があれば更新していきます。
そのうち自動構築系の配布も考えますが、今はコピペでやってます。

皆さんも是非WRSを使って比較してみてください。


それでは良いクラウド構築を!

2015年1月12日月曜日

【クラウド体験記】新旧IDCFクラウドの性能を比較してみる

去年、IDCFクラウドが新しくなりました。
それ以来、結構な頻度で触っているのですが、細かく数値化してみていなかったので、
ちょっと今回は具体的に数字にして比較して、どの様な設計が合うかをみたいと思います。

やり方は、
 Wordpressをインストールして、レスポンス性能を確認する
というやり方です。

IDCFの導入方法やインスタンスの作成は「めちゃ楽ガイド」という冊子があり、
そこに書いてあるのが1番詳しいのでリンクを貼っておきます。
http://www.idcf.jp/pdf/cloud/IDCFCloud_installation_guide.pdf

この記事では細かいミドルウェアの構築方法は記載せず、
比較手法と比較結果を書いて考察したいと思います。

環境は以下。
 Ubuntu 12.04.1 LTS(64bit)
  apache2 2.2.22
  mysql-server 5.5
  php5 5.3.10
  wordpress3.0
上記環境をapt-getでインストールした"デフォルトの状態"でabを掛けて比較します。



新旧の違いを考える

 CPUクロックがパワーアップ。起動スピードはクラウド随一に


新旧で目に見える違いはCPUのクロック。
以前は1.6GHzでしたが、2015年1月現在ではXeon E5-2680で2.8GHzのようです。
視覚の部分で大きく変わったのがインターフェース。
オリジナリティのあるコンパネになりました。
体感の部分が一番大きく変わっており、起動スピードはクラウド随一となっています。
インスタンス作成のジョブを流してから起動するまでに20秒程度しか掛かりません。
私がIDCFクラウドを注目している理由は2つあり、1つはこの起動スピード。
これはとても大きい変更で、これだけでも使う価値が出てくると考えています。
もう1つはYahoo!Japanのインフラにリーチしていることが大きいと考えています。
最近ではYahoo!ビッグデータインサイトや、コンテンツキャッシュサービスなどがあげられます。
運用面では未だ苦労することが多く、例えばスナップショットに時間が掛かる等、
課題も多い為、運用設計に注視をしておく必要があります。
価格についてもエントリーのインスタンスが劇的に安いのですが、それ以外は若干割高です。
こちらも設計がとても重要になります。
エンジニアのかゆいところを残しておいてくれるのはAWSやオラクル等と同じなのですが、
少し残されすぎかなぁという印象です。ちょっとかゆすぎ。
ただ、前記している起動スピードはクラウドで最も重宝される部分ですし、
現状、ユーザは暖機以外に選択がないので、設計次第ではかなり柔軟な構成が可能です。



新旧を比較してみる

 クロックアップの分だけ応答性能はアップ


話がそれました。
IDCFクラウドでの設計はまたの機会として、新旧比較に一旦戻しましょう。

abのオプションとして
1. -n 1 -c 1
2. -n 10 -c 10
3. -n 100 -c 10
4. -n 100 -c 100
5. -n 1000 -c 100
で比較をしているのですが、4~5についてはメモリの問題で出来ない事もあり、
低価格インスタンスでは1~3で比較されています。


上記図の単位はリクエスト/秒です。
CPU性能が上がっている分、性能としては全体的に上がっている事が解ります。
light系0.8GHzの場合、ある一定の段階でガクンと性能が落ちます。
上記図の場合、n10c10の負荷では1cpuと変わらない速度で応答しますが、
n100c10になった途端に制限がかかっていることがわかります。
継続負荷には弱いですが、断続的な応答であれば1コア使っているような感覚でしょうか。
この辺はAWSのmicro等と考え方は一緒で問題ないかと思います。
低価格インスタンスの応答性能が高いため、メモリをそこまで使用しないサイトであれば、
light.s1インスタンスを並べて処理をする等で、耐障害性も高めながら今よりも安く設計する事が可能だと思います。

上記から個人サイトのようなものや、そこまでアクセスが多くないEC/Webサイトでは、
メモリさえ間に合ってしまえばlight.s1インスタンスでも十分に処理が出来るかと思います。



その他クラウドとはどう違うか


その他クラウドとは運用コストが変わったりするため、単純比較は難しいのですが、
ハイCPUインスタンスでもこの高い性能は変わりません。
例えば、8コアCPUのインスタンスを他社と単純に応答速度だけで比較してみると
意外にもIDCFに良い結果が出て驚きました。(失礼。。)


価格で軸を置いて比較をするか、応答速度で比較をするか、等々
なにを軸にして比較するかによってこのような比較は意味の無いものになります。
今回は単純にWordpress初期構築時の応答速度を他社と比較してみましたが、
価格帯がバラバラなものの、結果としては悪くない値になっています。
※この記事はIDCFについて記載しているため、他社名は記載していませんが、
  当ブログではパブリックな比較をする際には正式名称記載で比較を行っています。



新しいIDCFクラウドのバリューとは


light系の0.8GHz制限があるインスタンスについては他社クラウドと同じ制限イメージがある為、
とりあえずlightで複数台構成を行い、イベントや流入見込みの際にインスタンスをstandard以上に
変更するというような、いわゆるクラウド的な使用方法が見えてきます。
ただ、このあたりの閾値を決める設計はかなり難儀なため、standard以上を使う形になってしまいそうです。

新旧と比べてみましたが、性能や使い勝手の面で格段にアップしていると思います。
新IDCFクラウドでは価格が安いlight.s1を攻略する事で、予算内での設計幅がかなり広がります。
スナップショット等、運用機能が貧弱な為、バックアップ等の運用設計は、
導入時にしっかりしておく事が必要になります。

また3Tまではトラフィック無料ですが、課金自体はアカウント単位で課金が行われるので、
トラフィック量が多い場合は複数アカウントを用意し、DNSラウンドロビンを使用して
対処する事でシステム的なコストダウンは出来ると思います。
この辺の設計やテクニックについても今後ブログでご紹介していきます。

国内クラウドの注目株IDCFクラウドの新旧比較でした。




それでは、良いクラウド構築を!

2015年1月7日水曜日

はじめにおよみください

このブログではいろんなクラウドを使ってみてレビューしたり、
色んな連携方法、設計方法を提案していきます。
基本的には参考にならない情報が満載になると思います。

このブログの基本方針

1.比較の場合は数字で根拠

何かを比較する場合は数字を根拠にして比較するように心がけます。

2.放言主義

率直な意見を書いていくので、ネガティブな意見を書いた投稿も散見すると思います。


基本方針が増えていったら上記に追加していきます。