Windows系エンジニアのためのElastic Map Reduce 1

初めに・・・
MapReduceが世に出て早10年、Amazon Elastic Map Reduce(以降EMR)のようにパブリッククラウド上でHadoopを使った分散処理を行えるようになって5年ほどが過ぎました。実際活用しようとするとLinuxを中心とするOpenSource界隈の知識が必要になるため、Windows系のエンジニアからはどうしても遠い存在になりがちです。
ところが最近EMRのWEBインターフェースが刷新されました。以前はコマンドラインでの操作が必須だったのが、WEBからの操作でもずいぶんと使いやすくなりました。この機会にEMRを使いこなしてBigDataの処理など学びたいと思います。
さてBigData処理には大別して二つあります。一つは大量の非構造化データを扱う処理。二つ目は大量の構造化データを扱う処理です。非構造化データの処理は自然言語処理、機械学習といった高度なソフトウェアサイエンスの知識が必要不可欠で、Hadoopで分散処理ができるようになったから一朝一夕に実現できる類のものではありません。二つ目の構造化データなら高度なコンピュータサイエンスの知識がなくとも、手元のデータを解析して何らかの答えを得ることは可能です。だから、ここでは構造化データを扱うことを最初の目標としたいと思います。
構造化データならRDBを使えばHadoopなんか要らないのでは?と考えるかもしれませんが、RAWレベルのログデータなんかを1年分集めると、中小企業でも数十GB~数百GBに達してしまいローレベルのサーバーでは到底解析できないサイズになってしまいます。これを解析できるサーバーを別途用意するというのは、中小企業にとっては大きなハードルなのです。
Hadoopの基本はMap Reduceにあるわけだけど、実際に使うためにはプログラムを開発せざる得ない。そしてプログラムを開発するとなると、テストやら何やらで結構時間がかかるもの。特に私みたいなWindows中心の開発者だと、Linux環境でのプログラミングに不慣れなこともあって、やたらと時間がかかったりします。でも構造化データを扱うならばMap Reduceは必要ありません。HadoopにはHiveやPigといった構造化データを手軽に扱うための仕組みが用意されています。
HiveはHadoop上で動作する簡易RDBです。一般的なRDBと異なりSELECT文は充実していますが、INSERTやUPDATEと言ったデータを更新するための機能が著しく制限されています。カンマ区切りやタブ区切り形式で保存されたテキストファイルや、Hive独自形式のデータベースファイルに対して集計処理を行えます。Hiveに与えたSQL文は数段階の処理に分解されMap Reduceアプリケーションにより集計されます。下手なMap Reduceアプリケーションを作るより余程高速に動作するので、まずはHiveを使った集計処理を学びたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です