IDCF Tech-Blog

読者です 読者をやめる 読者になる 読者になる

IDCF Tech-Blog

クラウド・ビッグデータ・データセンターを提供するIDCフロンティアの公式エンジニアブログ

Yahoo!ビッグデータインサイト + Pentahoによるアクセスログの可視化

ビッグデータ TreasureData

※2016年10月1日より、サービス名称が「Yahoo!ビッグデータインサイト」から「トレジャーデータサービス by IDCF」に変更となっております。

今回紹介すること

今回ご紹介することの概要とアウトプットのイメージは以下となります。 Yahoo!ビッグデータインサイト(以下「YBI」)へのデータアップロードからYBIでの集計、MariaDBへResultExportしてその結果をPentahoで閲覧する方法までをご紹介します!

f:id:aueno1986:20150624110824p:plain

pentaho_analysis_report_9.png

はじめに

はじめまして、またはお久しぶりです、ビッグデータ戦略グループの上野です!部署名が変わりました!
梅雨で空気がまとわりつく今日この頃ですがいかがお過ごしでしょうか。

さて早速本題ですが少し前ならビッグデータ、最近だとIoTというのがバズワードとなっていると思いますが、皆さん実際にやられているでしょうか?なかなか実践出来ていないのではないでしょうか?
例えばマーケティング部門の方なら、

  • 「やりたいけど、データ取得はインフラ部門にお願いしないといけない」

データ取得をお願いされた、インフラ部門、アプリケーション開発者の方なら、

  • 「データは取りたいけど、保管する場所を確保しないといけないし、リソース管理が面倒だし、取得項目がころころ変わるから、対応が難しい」

ということが多いのではないでしょうか?
そういったときに、以下の特長を持つYahoo!ビッグデータインサイトの価値が出てくると思います。

  • マネージドクラウドサービス
  • 容量の制限がない
  • スキーマレス

上記お困りの方は本ブログを読んで少しでもYahoo!ビッグデータインサイトを知って頂ければと思います。
#すいません、宣伝ですm( )m

さて今回はWebのアクセスログをYahoo!ビッグデータインサイトを利用して傾向の可視化する方法を書かせて頂きます。 しばしお付き合いをお願いします。

Yahoo!ビッグデータインサイトとは

さてそもそもYahoo!ビッグデータインサイト(以下、YBI)とはなのですが、詳細はコーポレートサイトや以前のブログに譲りますが、一言で言えば以下だと思います。

  • 時系列データベース

そのため以前も書きましたが、実際の分析結果を視覚化(Visualization)するためには別途Visualizationツールを用意する必要があります。

最近のVisualizationツールではTableauが有名であり、実際にYBIを導入されている多くのお客様にも利用されています。 ただ手軽にやるにはフリーツールの方が良いと思いますので、今回はOSSであるPentahoとの連携方法についてご紹介します。

Pentahoとは

Pentaho社が提供するBI(Business intelligence)スイーツツールであり、データ統合、分析、マイニング、ダッシュボードの作成、レポートまでを行うことができるツールです。 なので一つのツールでデータ解析の全てができてしまうツールとなります。

ここまで言うとPentahoだけで充分では?と思ってしまうかもしれません。 しかし、Pentahoは結局はアプリケーションなので大規模データを扱うときはそれを保存する箱とそれを高速に分析するエンジンは自前で用意する必要があります。 その箱とエンジンを提供するのがYBIで、今回は検証がてら連携させてみたのでご紹介させて頂きます。

追記: OSSのBIツールには最近ですと、Re:dashがあり、巷では結構使えるという話なので今度試してみようと思います。

前提条件

以下前提条件となります。

  • ログイン可能なCentOS7があること

手順

YBIへのSignUp

YBI SignUpページにアクセスしてemailアドレスを登録すれば、認証メールが飛んできます。 その認証メール経由でSignUpができます。 無料です!

Pentahoのインストール

CentOS7へのPentahoのインストールは、以下を参考にして頂ければと思います。
Memo: Pentaho BAサーバーインストール - Qiita

MariaDBのインストール

MariaDBのインストール方法は以下を参考にして頂ければと思います。 以下の設定で作成します。

  • username: ybi
  • password:${password}
  • database: ybi

Memo: MariaDBのインストール/初期設定 - Qiita

YBIへのデータインポート

データの準備

今回は以下の形式のファイルをインポートさせます。 アクセスログとなります。


time date    host    method  status  agent   userid
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224789  2015-02-18 10:59:49 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b
1424224790  2015-02-18 10:59:50 158.205.104.203 GET 200 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36  6ee4d54a-331d-4f8d-ab11-076e6daa455b

データインポート

データのインポート方法は大きく分けて以下5つがあります。

  • バルクインポート
  • ストリーミングインポート
  • SDKインポート
  • ブラウザインポート
  • Data Connector

Data Connectorはつい最近リリースされたものですが、これはYBIから対象のリソースにアクセス可能ならばYBI側でデータの取得から保存をやってくれるものとなります。 バルクインポートでクライアント側で行っていた処理をサーバー側でやってくれるので、クライアント側には負荷がかからずより気軽にデータをYBIにデータを溜めることができると思います。 今はS3/Riak CSだけのようですが、今後拡張していくようなので期待しています。 詳細は以下を参照してください。
(新機能)「Data Connector for Amazon S3」によるデータロード革命 - トレジャーデータ(Treasure Data)公式ブログ

追記: このブログを書いている途中にMySQLにも対応したようです。やはり開発が早いですね。
(新機能)「Data Connector for MySQL」がトレジャーデータへの定時バルクロードをクライアントレスで実現

今回はブラウザインポートでインポートします。 詳細な手順は以下を参照してください。インポート先のデータベース名はybi、テーブル名はaccessとします。
YBI - Yahoo!ビッグデータインサイト - ブラウザアップロード - Qiita

データエクスポート

YBIではクエリの処理結果を外部のサーバーに吐き出す、ResultExport機能があります。 ここでは、先ほどインポートしたデータを分析してMariaDBにエクスポートさせます。

MariaDBテーブル作成

エクスポートさせるデータを保存するためのテーブルを用意する必要があります。 MariaDB上で以下のコマンドによってテーブルを作成します。 ybiというデータベース名、accessというテーブル名で作成しています。

MariaDB [ybi]> CREATE TABLE access (access_date DateTime, count INT);

アクセスログのサマリー情報を格納するテーブルなので、access_dateでアクセスされた日付、countにアクセス数を格納出来るように定義しています。

YBI ResultExport

さてこれでYBIからMariaDBに解析結果を出力する準備が整いました。

Consoleにアクセス

Yahooǃ ビッグデータインサイト にアクセスして、メールアドレス、パスワードを入力してLog inボタンを押下してログインしてください。
スクリーンショット 2015-02-23 18.00.43.png

クエリ画面を表示

ログイン後にサイドメニュータブのNew Queryをクリックしてクエリ画面を表示します。
ybi_query_1.png

ybi_query_2.png

クエリ記入

ここでは日々のアクセス数を抽出するクエリを記載します。
以下のように記載します。

  • Database: 先ほど作成したYBI上で作成したデータベース名を入力してください。

SELECT
  TD_TIME_FORMAT(time,
    'yyyy-MM-dd',
    'JST') access_date,
  COUNT(1) COUNT
FROM
  access
GROUP BY
  TD_TIME_FORMAT(time,
    'yyyy-MM-dd',
    'JST')

終了したら、画面中央部のResult ExportのAddボタンを押下して、ResultExport設定画面を表示してください。

ResultExport設定

次にResultExport先を設定します。 以下のように設定してください。 MariaDBはMySQLと互換性がありますので、Export toにはMySQLを指定します。

  • Export to: MySQL
  • Host: MariaDBをインストールしたサーバーのGlobalIPアドレス
  • Username: ybi
  • Password: ${password}
  • Use SSL?: no checked
  • Database: ybi
  • Table: access
  • Mode: replace

ybi_export_1.png

ybi_export_2.png

設定が完了したらUseボタンを押下して、ResultExport設定画面を閉じます。

ResultExport

さて実際にResult Exportを行います。
Runボタンを押下することで実行されます。
ybi_export_4.png

MariaDB Export確認

MariaDBにデータがExportされているかを以下のコマンドで確認します。


$ mysql -u${user_name} -D ${db_name} -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.41-MariaDB MariaDB Server

Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [ybi]>
MariaDB [ybi]> SELECT * FROM access;
+-------------+--------+
| access_date | count  |
+-------------+--------+
| 2014-09-05  |    401 |
...省略
MariaDB [ybi]>

PentahoによるVisualization

さてここから先にYBIからMariaDBにResutlExportしたデータを、Pentahoで視覚化していきます。

Pentahoデータソース設定(MariaDB)

ここでPentahoから先ほどExportしたデータを参照できるように設定します。

BAサーバーにログイン

Pentahoをインストールしたサーバーに設定したGlobalIPアドレス:8080に対してブラウザでアクセスしてみてください。 アクセスすると以下のように表示されるはずです。
pentaho_ba_signin.png

Login as an Evaluatorのドロップダウンをクリックして、AdministratorユーザーのGOボタンを押下してログインします。
ログインすると以下のように表示されます。

pentaho_ba_signin_2.png

データソース設定

次にデータソースを設定します。

接続設定

Home画面のManage Data Sourcesを選択します。
pentaho_web_create_datasource_1.png

次にConfigアイコンのプルダウンメニュでNew Connectionを選択します。 そうすると接続設定画面が表示されます。
pentaho_web_create_datasource_2.png

pentaho_data_source_2.png

以下の項目を入力してください。

  • Connection Name: YBI
  • Database Type: MySQL
  • Access: Native (JDBC)
  • Host Name: MariaDBをインストールしたサーバーのIPアドレス
  • Database Name: ybi
  • User Name: ybi
  • Password: password

入力後Testボタンを押下してください。 以下の画面が表示されれば接続されています。
pentaho_data_source_3.png

OKボタンを押下してそれぞれ閉じてください。

データソース設定

次にNew Data Sourceを選択します。
pentaho_data_source_4.png

pentaho_data_source_5.png

Data Source Wizardで以下の値を入力してNextボタンを押下します。

  • Data Source Name: access
  • Source Type: Database Table(s)
  • Connection: YBI
  • Create data source for: Reporting and Analysis

pentaho_data_source_6.png

以下のように設定してください。設定後Finishボタンを押下することでデータソースとして登録されます。

  • Schema: ybi
  • Selected Table: 'ybi'.'access'
  • Fact Table: 'ybi'.'access'

pentaho_data_source_6.png

グラフ表示

Home画面に戻ってCreate Newボタンを押下してください。
pentaho_analysis_report_1.png

そうすると、Analysis Reportメニュが表示されるのでこのAnalysis Reportを選択してください。
pentaho_analysis_report_2.png

選択後にどのデータソースを使うか聞かれるので、先ほど作成した、accessというものを選択してください。
pentaho_analysis_report_3.png

選択後にOKボタンを押下します。

表作成

さてこれからデータを色々いじることができます。 まずはフィールドリストにあるAccess dateというアイコンをドラッグして列ラベルにドロップしてください。 そしてMeasures > Countを数値フィールドにドロップしてください。 そうすると図のような表が作成されます。
pentaho_analysis_report_4.png

グラフ描画

さて時系列データなのでどうせならグラフで見たくなります。そのときは画面右上にあるグラフアイコンをクリックしてみてください。そうすると以下のように表示されます。
pentaho_analysis_report_5.png

グラフの種類はグラフアイコンのプルダウンメニューで選択することができます。 ここでは線グラフを選択してみます。 そうすると以下のように表示されます。
pentaho_analysis_report_6.png

フィルタリング

ただこのままではちょっと期間が長いので2014年10月分のみを表示させたいと思います。 フィールドリストにあるAccess dateをドラッグしてフィルターフィールドにドロップしてみてください。
そうすると以下の画面が表示されます。 特定の文字列にマッチにチェックを入れて2014-10-を含むという設定にしてください。
pentaho_analysis_report_8.png

設定後OKボタンを押下すると、以下のように2014年10月のデータのみが表示されます。
pentaho_analysis_report_9.png

おわりに

いかがでしたでしょうか。 手順的には長かったと思いますが、YBIを利用してグラフ化する方法を理解頂けたら幸いです。 YBIには定期的な処理設定が可能ですので、MariaDBなどにエクスポートしてやればPentahoによるレポートを定期的に行うことが可能です。 是非お試しください!

<関連記事>

Copyright © IDC Frontier Inc.