LoginSignup
1
1

More than 5 years have passed since last update.

AWSのチュートリアル 〜Analyze Big Data with Hadoop編〜

Posted at

AWSのチュートリアルの日本語メモ

はじめに

最近業務でAWS上に構築したHiveを利用するのですが、より理解を深めたいと思い、今回はAWSのチュートリアルを利用して、Hadoop + Hive環境を1から構築してみました。

チュートリアルの内容

Step1: Set Up Prerequisites for Your Sample Cluster

Sign Up for AWS

以前登録していたため、今回はスキップ

Create an Amazon S3 Bucket

S3とは、データを保存するサービス、詳しい内容はここ
以前に利用したことがあったのでここもスキップ

Create an Amazon EC2 Key Pair

EC2とは、Amazonが提供してくれているWEBサーバ、詳しくはここ
sshでログインするために、key pairを発行する必要がある。
今回はここのサイトを参考に、以前作成したkey-pairを利用。

  • EC2のコンソールページのネットワーク&セキュリティタブのキーペアをクリック
  • 上のキーペアのインポートをクリック
  • key-pairの名前とkey-pair.pubの中身をペーストして登録

Step2: Launch Your Sample Amazon EMR Cluster

Launch the Sample Cluster

EMRのクラスタを作成する。EMRとは、AWS上でHadoopを使用するためのサービス。
詳しくはここを参照

  • EMRのコンソールページに移動
  • クラスターの作成をクリック
  • EC2キーペアの部分で、先ほど登録したkey-pairを指定する
  • クラスターの作成をクリック

Step3: Prepare Your Sample Data and Script

ここでは提供されているサンプルログデータとサンプルhiveコードの説明

Sample Data Overview

サンプルのログデータは、s3://[region].elasticmapreduce.samplesに格納されているらしい。
ただし、[region]には自分が使用しているリージョン名が入る。

Sample Hive Script Overview

Hiveのサンプルコードはs3://[region].elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.qにある。
記録されているコードは以下の通り

Hive_CloudFront.q
-- Summary: This sample shows you how to analyze CloudFront logs stored in S3 using Hive

-- Create table using sample data in S3.  Note: you can replace this S3 path with your own.
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
  DateObject Date,
  Time STRING,
  Location STRING,
  Bytes INT,
  RequestIP STRING,
  Method STRING,
  Host STRING,
  Uri STRING,
  Status INT,
  Referrer STRING,
  OS String,
  Browser String,
  BrowserVersion String
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$"
) LOCATION '${INPUT}/cloudfront/data';

-- Total requests per operating system for a given time frame
INSERT OVERWRITE DIRECTORY '${OUTPUT}/os_requests/' SELECT os, COUNT(*) count FROM cloudfront_logs WHERE dateobject BETWEEN '2014-07-05' AND '2014-08-05' GROUP BY os;

CREATE EXTERNAL TABLE table-name ... LOCAL data-pathはdata-pathにあるファイルを新しく作成したテーブルtable-nameにinsertするコード。

INSERT DIRECTORY path SELECT ...は、s3上のpathにselect以下の結果を出力するコード。

Step4: Process Your Sample Data By Running a Hive Script

ここからは作成したEMR上でhiveのコードを実行していく。

Submit the Hive Script as a Step

  • EMRのコンソール画面を開く
  • クラスターリストの中から、先ほど起動したクラスターを指定する。
  • ステップの追加をクリックする。
  • ステップタイプをhive programにする
  • スクリプトs3の場所に、s3://[region].elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.qを指定する。
  • S3 の場所の入力に、s3://[region].elasticmapreduce.samplesを指定
  • 引数に-hiveconf hive.support.sql11.reserved.keywords=falseを記述(予約語と同じ列名を許可するためのオプション)
  • 追加をクリック

実行されたsqlはSELECT os, COUNT(*) count FROM cloudfront_logs WHERE dateobject BETWEEN '2014-07-05' AND '2014-08-05' GROUP BY osで、2014-07-05から2014-08-05期間のosの種類を集計するというもの。

出力されたファイルは

Android 855
Linux 813
MacOS 852
OSX 799
Windows 883
iOS 794

Step5

最後はシャットダウンするための処理、これを忘れると永遠に課金され続ける・・・

To terminate your Amazon EMR cluster

  • EMRのコンソール画面を開く
  • コンソールリストから起動中のコンソールを選択
  • 上の削除ボタンを押す

最後に

今回はAWSのチュートリアルページの内容をそのまま実行しました。

自分でhqlファイルを書いて、s3上にアップロードして実行すると自分のしたい処理が出来たり、sshでemrのマスタノードに入り、hiveを実行することでインタラクティブに操作することもできます。

時間のある時に、AWSの勉強を続けていきたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1