「情シスから始まるデータ分析」連載第3回は日々の分析に役立つ技術について、前編では、情シス部門に向けて、エンジニアの視点からデータ分析に有用な統計言語のRやそれにひもづくライブラリ、Pythonなどを説明した。後編でもエンジニア視点でデータ分析に役立つさまざまな技術やツールを紹介する。
データの収集
収集方法
中間データ作成などにおいて、分析用のデータを取得する方法として、よくあるのは以下のような方法だろう。
- サービス運用中のDBサーバからアドホックに取得する
- サービス運用中のDBから定期的に分析用データ格納サーバにダンプする
- ログデータをログ記録時に分析用データ格納サーバにも書き込む
(1)、(2)の用途については前編の「集計処理の自動化・分析レポートの継続化」で紹介した技術を用いれば対処可能である。
Fluentd
そして、(3)の用途に威力を発揮するのがログ収集用ツールのFluentdだ。さまざまなインプット、アウトプットがプラグイン化されており、用途によって使い分けることで、効率的なログ収集環境を構築することが可能だ。
参考文献のFluentdのプラグイン一覧を見れば、多種多様な入出力に対応していることがわかるだろう。複数台のサーバ上のログをFluentdで1カ所に集約した後、適切な格納先に振り分けるようにすれば、各サービスのログデータを一元管理できるようになるので、管理が非常に楽になる。
分析用データの蓄積
Hadoopの周辺技術
次はデータウェアハウス、大規模データの倉庫として用いる技術を見ていこう。クラウド型サービスが利用できない環境、つまりインハウスで全てデータを抱えなければならない場合の大規模ストレージの第1候補になるのはHadoopだ。
Hadoopは大規模データ向けストレージとしての役割と、そこからデータを効率よく計算し取り出す役割の組み合わせである。データストレージ機構として、HDFSという分散ファイルシステム、HBaseという列指向の分散データベースなどが存在する。また、データの取得、計算処理機構として、Javaなどのプログラミング言語によるMapReduce処理の記述、Hive、Pig、ImpalaなどによるSQLライクなデータの取得や処理が可能である。処理内容に合わせて柔軟に使い分けよう。