AWSのチュートリアル 〜Analyze Big Data with Hadoop編〜
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にある。
記録されているコードは以下の通り
-- 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の勉強を続けていきたいと思います。
Author And Source
この問題について(AWSのチュートリアル 〜Analyze Big Data with Hadoop編〜), 我々は、より多くの情報をここで見つけました https://qiita.com/kenchin110100/items/a221e671f865cbcb0369著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .