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