Azure HDInsightを使って、大量テキストの集計(1)

シェアする

目次
(1)HDInsight環境準備
(2)データの準備、SQL実行方法の確認
(3)データのロードと、抽出・集計の実行

大量に溜め込んでいた「スペース区切りテキスト形式」のログを集計したくなったため、バックエンドにHadoopの仕組みを使いつつ、手軽にSQLで集計できるHiveを使うことにしました。

最近Azureを使わざる得ないしがらみが、ありまして...HDInsightを使いました。

今までは、S3との連携が便利な「Amazon EMR」や、ログを突っ込んだ後は細かなことを考えなくてよい「Google Bigquery」の方が良さそうな気がしていましたが、しかし・・・

使ってみると「HDInsight」は、Azure の ブロック BLOB ストレージに保管したテキスト形式ファイルをそのまま加工できて、Azureユーザーにはとっても便利でした。(いいね!)

HDInsight環境準備

HDInsight、Hadoopバージョン

現在いくつかのバージョンが利用可能ですが、特段制約もない状況なので、最新版を利用することにします

HDInsight 3.2 -> Hortonworks Data Platform 2.2   (Hadoop 2.6) <-今回利用
HDInsight 3.1 -> Hortonworks Data Platform 2.1.7 (Hadoop 2.4) <-HDInsightデフォルト
HDInsight 3.0 -> Hortonworks Data Platform 2.0   (Hadoop 2.2)

提供バージョンの詳細
https://azure.microsoft.com/ja-jp/documentation/articles/hdinsight-release-notes/

HDInsight 3.2では、Hiveが使うメタデータを管理するバックエンドデータベースに、AzureのSQLデータベースを利用できるので、今回をその構成でいきます。

あと、Azure管理ポータルは旧来の方を使います。(プレビューじゃない方ですね)

Blob ストレージの作成

  1. 「新規」→「DATA SERVICE」→「ストレージ」→「簡易作成」
  2. パラメーターの入力を求められるので、以下の要領で適宜作成しますHadoopクラスターを西日本に作成するつもりなので、場所は「日本(西)」を選択します。

SQLデータベースの作成

  1. 「新規」→「DATA SERVICE」→「SQLデータベース」→「カスタム作成」ウィザードが開始されるので、以下の要領で適宜作成します。
  2. データベースの設定
  3. データベース管理ユーザーの指定「Microsoft Azureサービスに、サーバーへの許可」を忘れずにチェックします

Hadoopクラスターの作成

  1. 「新規」→「DATA SERVICE」→「HDINSIGHT」→「カスタム作成」ウィザードが開始されるので、以下の要領で適宜作成します
  2. クラスター名とバージョンを指定しますHDINSIGHTのバージョンを、3.2に変更します
  3. ノード構成の調整をします
    ヘッドノードの数は2で固定されています。調整できるのはデータノードの数ですとりあえず、ノード数が多いと課金も比例して大きくなるので、クラスター作成時点では、2台にします。(データノードの数は、クラスター作成後にも簡単に変更できるので適当で大丈夫です)この状態だと、ヘッドA3ノード x 2台、データノードA3ノード x 2台 になっているで、クラスター全体ではA3ノード 4台になっています。A3ノードは1時間あたり38.76円なので、クラスター全体で約156円/時間の課金ですね。データ集計処理をするときに、Hadoopクラスターを作成して、集計が終わったら小まめにクラスターの廃棄して、課金を節約するのが、経済的ですね。あと、ノードのサイズ(A3とか)は、クラスター構築後に変更できません。変更したいときは、Hadoopクラスターの作り直しをします。
  4. クラスターユーザーの構成
  5. メタストアの構成先ほど作成した、SQLデータベースの名前、管理ユーザー名を指定します
  6. ストレージの指定先ほど作成したストレージ名を指定します。

以上で、環境の準備は完了です。次回は、データのロードと、SQLでの集計実行に書きたいと思います。

目次
(1)HDInsight環境準備
(2)データの準備、SQL実行方法の確認
(3)データのロードと、抽出・集計の実行