こんにちは! JQです。
前回は『 ELB編~ELBのアクセスログ機能~ 』と題して、ELBの新機能であるアクセスログ機能を試してみました。
今回は『EMR編~ELBのアクセスログをEMRで解析~』と題して、ELBの新機能であるアクセスログ機能で取得したデータをEMRで解析してみたいと思います。
クラスターの起動
1. クラスターの起動
「Create Cluster」でクラスターを起動します。
Cluster名やログ設定を入力します。
ソフトウェアの設定を入力します。
「Hadoop distribution」にAmazonの3.0.4を選択します。
インスタンス設定を入力します。
アクセスの設定をします。
Bootstrapの設定をします。
StepでスクリプトやOutputの設定をします。
以下のスクリプトでステータス200以外を取得してみます。
1DROP TABLE elb_raw_access_logs;2CREATE EXTERNAL TABLE elb_raw_access_logs (3 Timestamp STRING,4 ELBName STRING,5 RequestIP STRING,6 RequestPort INT,7 BackendIP STRING,8 BackendPort INT,9 RequestProcessingTime DOUBLE,10 BackendProcessingTime DOUBLE,11 ClientResponseTime DOUBLE,12 ELBResponseCode STRING,13 BackendResponseCode STRING,14 ReceivedBytes BIGINT,15 SentBytes BIGINT,16 RequestVerb STRING,17 URL STRING,18 Protocol STRING19)20ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'21WITH SERDEPROPERTIES (2223 "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*):([0-9]*) ([.0-9]*) ([.0-9]*) ([.0-9]*) (-|[0-9]*) (-|[0-9]*) ([-0-9]*) ([-0-9]*) \"([^ ]*) ([^ ]*) (- |[^ ]*)\"$"24 )25LOCATION '${INPUT}';1DROP TABLE elb_raw_access_logs_s3;2CREATE TABLE elb_raw_access_logs_s3 (3 Timestamp STRING,4 ELBName STRING,5 RequestIP STRING,6 RequestPort INT,7 BackendIP STRING,8 BackendPort INT,9 RequestProcessingTime DOUBLE,10 BackendProcessingTime DOUBLE,11 ClientResponseTime DOUBLE,12 ELBResponseCode STRING,13 BackendResponseCode STRING,14 ReceivedBytes BIGINT,15 SentBytes BIGINT,16 RequestVerb STRING,17 URL STRING,18 Protocol STRING19)1ROW FORMAT DELIMITED FIELDS TERMINATED BY ','2LOCATION '${OUTPUT}';1INSERT OVERWRITE TABLE elb_raw_access_logs_s32SELECT * FROM elb_raw_access_logs WHERE BackendResponseCode <> 200;
開始されたのを確認します。
2. 確認
それでは確認してみます。
「Waiting after step completed」になっていれば成功しています。
実際にS3を確認してみます。
実際の結果も確認してみます。
ステータスが200が無ければ成功です。
最後にEMRを削除しましょう。
いかがでしたでしょうか?
次回もお楽しみに!!!