これなら使える!ビッグデータ分析基盤のエコシステム

第1回 ビッグデータ分析を始めよう

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

ビッグデータ分析の今

ビッグデータという流行と共に,Amazon RedshiftAmazon Elastic MapReduceGoogle BigQueryTreasure Data Serviceなど,ビッグデータ分析基盤を作る上でスモールスタートで始められる分析エンジンを提供するクラウドサービスが普及し,ビッグデータを用いた分析への敷居が下がりつつあります。

そこで,まずはクラウドで提供されているビッグデータ分析エンジンの特徴を比べてみましょう。

表1 ビッグデータ分析エンジンの比較表

比較対象 Amazon Redshift Amazon Elastic MapReduce Google BigQuery Treasure Data Service
レイテンシ アドホック(数秒~数十秒) バッチ(数分~数時間の処理) アドホック アドホック/バッチ
処理エンジン SQL(PostgreSQL互換) Hive / Pig / MapReduce / etc. SQL(独自SQL) Hive / Pig / Presto
ストレージ 一体型 分離型 一体型 一体型
スケジューリング 外部ツール 外部ツール 外部ツール 外部ツール / 一体型
ジョブの依存管理 外部ツール 外部ツール 外部ツール 外部ツール
データインポート バッチ バッチ ストリーミング / バッチ ストリーミング / バッチ
インスタンス管理 ユーザ管理 ユーザ管理 フルマネージド フルマネージド
BIツールとの接続方法 ODBC/JDBC ODBC/JDBC ODBC/JDBC ODBC(制限有り)/JDBC

ビッグデータ分析エンジンを比較してみると,ビッグデータを処理する一般的なインターフェースとしてSQLが提供されていることが主となっています。こうして見ると,最近流行っているビッグデータを使った分析とは,SQLによる分析が主となっていることがわかります。

さらに,他の機能を見てみると,スケジューリングや依存関係を考慮したジョブの実行,データの可視化などは分析エンジン自体は備えておらず,別途用意する利用必要があります。

このように考えてみると,以下の点が気になってきます。

  • ビッグデータ分析基盤で何をできるようにするのか?
  • ビッグデータ分析基盤と考えたときに他にどういったツールが必要になるのか?
  • SQLによる集計を基にした分析ではどういったことができるのか?

本稿では,ビッグデータ分析基盤を構築するために必要な分析エンジンではなく,主にその周辺のエコシステムについてを中心に紹介し,ビッグデータ分析基盤を構築する流れを通しながら,SQLを用いたビッグデータ分析の一連の流れを実際に行っていきます。

ビッグデータ分析基盤で何をできるようにするのか?

ビッグデータ分析基盤を作ることを考えたときに,そもそもビッグデータ分析基盤では何をできるようにするのでしょうか?

ビッグデータ分析という観点から考えると,レポーティング分析とアドホック分析の2つを行えるようにできることが挙げられます。

1つ目のレポーティング分析とは,ユーザが分析を始めるための最初の入り口です。レポーティング分析を通して,チーム全体に共有するための基本KPI(Key Performance Indicator)を用いた定型レポートを作り,同じ視点でデータを把握し,かつ簡単に情報を閲覧できるようにします。そして,この基本KPIを定期的に更新しながら,長期間にわたって,定点観測していくことにより,いつもと違う,という気づきを得ることができます。

図1は,レポーティング分析に向いたダッシュボードBI(Business Intelligence)ツールの一つであるMetricInsightsの画面です。このようにレポーティング分析ではさまざまなKPIを一元的に見て,全体を把握することが重要となるでしょう。

図1 レポーティング分析例(MetricInsights)

図1 レポーティング分析例(MetricInsights)

2つ目のアドホック分析とは,レポーティングで得られた気づきから,その気づきを元に,具体的な根拠を得るためにさまざまな条件や分析視点でデータを深掘りをしていくことを目的とします。また,それだけでなく,ユーザが今までに無い条件を元に分析をするようなケースでも当てはまります。そのため,レポーティング分析を始める際に基本KPIを見つけ出すためにも利用されます。

図2 アドホック分析例(Jupyter)

図2 アドホック分析例(Jupyter)

最後に,これらレポーティング分析とアドホック分析は相互に補完できるようにすることにも注意が必要です。レポーティング分析で得られた気づきから,違う視点で検証していくためには,別な条件でアドホックに分析をしていくことが必要になります。レポーティング分析によって発見された疑問を元に,アドホック分析によって疑問に対する更なる回答を得ることが可能になります。

その一方で,アドホック分析で得られた気づきや,その気づきを元にした知見を分かりやすい形で表現したレポートを,社内で共有することによって次の施策への一歩となります。そのためにはレポーティング分析の結果を保存,再利用できる環境が必要となります。

このように,ビッグデータ分析基盤では,レポーティング分析とアドホック分析の環境は相互に補完し合い,スムーズに連携できる環境を提供することが重要となります。

ビッグデータ分析基盤に必要なエコシステムとは?

さて,このようにスムーズに連携できるビッグデータ分析基盤を作るためには,ビッグデータ分析エンジンだけでは難しそうです。それではどんなエコシステムが必要になるでしょうか? 以降では,ビッグデータ分析基盤のためのエコシステムを具体的なツールとともに紹介します。

データ収集

企業内では,さまざまな場所にデータが置かれています。Webサーバやアプリケーションサーバのログのようにリアルタイムに生成されるログだけでなく,マスターデータのように定期的に更新されるデータベースに格納されたデータ,外部サービスから定期的にCSVファイルなどで出力されるデータなどさまざまです。

これらを集めるためには,データの生成される頻度に着目して2つのツールを使い分けます。

Webサーバやアプリケーションログのようにリアルタイムに生成されるデータに対してはストリーミングログコレクタであるFluentdを利用します。また,1時間に1度や1日に1度,定期的にデータを収集するためにはEmbulkを用います。

可視化

分析エンジンで分析した結果は,目に見えるグラフ形にする必要があります。レポーティング分析であれば,多くのグラフを一元的に可視化できるツールが重要となります。また,大勢で参照することを考えると,ログデータすべてを参照させるのではなく,ログデータを元に集約された集計結果を参照させる仕組みにしておく必要があります。つまり,レポーティング分析のためのデータマートを参照させたり,データマート自体を内部に内包していることが望ましいです。

また,アドホック分析であれば可視化の切り口を簡単に変更できるツールが良いでしょう。こうした可視化に特化したツールは,多様なニーズに応えるために商用ツールを利用することが多いです。

たとえば,上記で図で紹介したMetricInsightsやMotionBoardやDomoなどがデータマートを内部に備え,一元的に可視化するのに便利です。また,アドホック分析という観点ではTableau Desktop/Tableau ServerやJupyter/Pandasの組み合わせが最近では人気です。

今回は,アドホック分析での可視化に焦点を当てて,JupyterとPandasというツールを紹介していきたいと思います。

ワークフロー管理/自動化

分析の最初ではあまり重要ではありませんが,集計の複雑さやインポート元の多様化が進むと,ワークフロー管理を行うツールが重要となります。それは,ジョブのスケジュール実行,依存関係の解決,エラー時の通知や自動リトライ,指定したジョブの再実行,過去の実行履歴の管理などを行う必要が有ります。

こうしたことを実現するには,Jenkinsや国内だとJP1などが有名です。また最近では,Azkaban,Luigi,Airflowなどさまざまなワークフロー管理のためのツールが作られています。

著者プロフィール

高橋達(たかはしとおる)

Treasure Data Inc.でテクニカルサポートエンジニアとして,毎日,日米問わず顧客のサポートを担当。サポートエンジニアのエンジニアとしての地位向上を目指して色々模索中。そのために,秋葉原幻橙館で今日も元気にOSS活動を行っている。

URL:http://toru-takahashi.gitbooks.io/secret-ninja/content/

コメント

コメントの記入