Hadoop Introduction
はじめに
Agenda Hadoopおさらい 1 HadoopStreaming 2 Hive 3 Demo (Apacheログ解析) 4 5 まとめ
Hadoop の概要
Hadoop の特徴
Hadoop クラスタ構成 マスターサーバ バッチの進捗状況管理 Map/Reduce タスク割振り NameNode JobTracker HDFS 管理 DataNode 管理 Map/Reduce タスク起動 DataNode TaskTracker DataNode TaskTracker データ ブロック送受信 HDFS Map Reduce HDFS Map Reduce スレーブサーバ #1 スレーブサーバ #N
Hadoop 適用範囲
Hadoop RDBMS
MapReduce
MapReduce ProgrammingModel
MapReduce ProgrammingModel Mapper Reducer Output Data1 Input Data Mapper Shuffle &Sort Reducer Output Data2 Mapper Map Phase Shuffle Phase Reduce Phase
MapReduce の各フェーズ
Hadoop で MapReduce JobTracker Assign Map Task Assign Reduce Task HDFS Mapper HDFS Reducer Output Data1 Input Data Mapper Shuffle &Sort Reducer Output Data2 Mapper Map Phase Shuffle Phase Reduce Phase
MapReduce Example WordCount
MapReduce Example:WordCount
MapReduce Example:WordCount JobTracker HDFS Input file : doc1 foo foo foo bar bar buz
MapReduce Example:WordCount JobTracker HDFS doc1:foo doc1:foo Mapper Input file : doc1 foo foo foo bar bar buz doc1:foo doc1:bar Mapper doc1:bar doc1:buz Mapper Map Phase
MapReduce Example:WordCount JobTracker HDFS Mapper foo:1 foo:1 Input file : doc1 foo foo foo bar bar buz Mapper foo:1 bar:1 bar:1 buz:1 Mapper Map Phase
MapReduce Example:WordCount JobTracker HDFS Mapper foo:1 foo:1 foo:<1,1,1> Input file : doc1 foo:1 bar:1 Reducer foo foo foo bar bar buz Mapper Shuffle &Sort bar:<1,1> buz:<1> bar:1 buz:1 Reducer Mapper Shuffle Phase
MapReduce Example:WordCount JobTracker HDFS Mapper foo:3 Input file : doc1 Reducer foo foo foo bar bar buz Mapper bar2 buz:1 Reducer Mapper Reduce Phase
MapReduce Example:WordCount JobTracker HDFS Mapper foo:3 HDFS Input file : doc1 Reducer foo foo foo bar bar buz Mapper bar2 buz:1 foo:3 bar:2 buz:1 Reducer Mapper Reduce Phase
Hadoop で MapReduce
public static void main...
Java 以外の言語じゃ 利用できないの?
そんなことは ありません
Hadoop で MapReduce http://pig.apache.org/ http://hive.apache.org/
Agenda Hadoopおさらい 1 HadoopStreaming 2 Hive 3 Demo (Apacheログ解析) 4 5 まとめ
Hadoop Streaming Input Data STDIN Mapper Streaming Reducer STDOUT Output Data STDOUT Shuffle & Sort STDIN
Hadoop Streaming hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming.jar -input inputdata -output outputdata -mapper map_exec -reducer reduce_exec
Ruby で WordCount
mapper.rb
reducer.rb
InputData( 入力データの準備 )
実行
途中経過
途中経過
OutputData( 出力結果の取得 )
Hadoop Streaming まとめ
Agenda Hadoopおさらい 1 HadoopStreaming 2 Hive 3 Demo (Apacheログ解析) 4 5 まとめ
Hive # hive -e 'select count(distinct user_id) from logs; Hive history file =/tmp/root/hive_job_log_root_2xxxxxxx_xxx.txt Total MapReduce jobs = 1... Tracking URL = ********* map = 0%, reduce = 0% map = 5%, reduce = 0%...
メリット #!/usr/bin/ruby Map.rb Reducer.rb #!/usr/bin/ruby ARGF.each do line line.chomp! line.split.each do word puts "#{word} t1" end end data = Hash.new { h,k h[k] = 0} ARGF.each do line line.chomp! key, value = line.split(/ t/) data[key] += 1 end data.each do k,v puts "#{k} t#{v}" end select count(distinct user_id) from logs; MapReduce を意識することなく SQL ライクに記述可能
デメリット
HiveQL
HiveQL
テーブル作成
テーブル作成 型の種類 データ型名 内容 TINYINT 1Byteの整数 整数型 SMALLINT 2Byteの整数 INT 4Byteの整数 BIGINT 8Byteの整数プリミティブ型 FLOAT 単精度の浮動小数点浮動小数点型 DOUBLE 倍精度の浮動小数点 論理型 BOOLEAN TRUEとFALSE 文字列型 STRING 文字列 配列型 ARRAY < データ型 > データ型を配列として扱う マップ型 MAP < プリミティブ型, データ型 > Key, Value 形式でデータを扱う 構造型 STRUCT< カラム名 : データ型,,,> 複数のデータ型を構造化する
テーブル作成
テーブル作成 構文 FIELDS COLLECTION ITEMS MAP KEYS LINES SERDE 内容 フィールド ( 項目 ) の区切り文字を指定する デフォルトは 0x01 コレクション ( 配列 ) の区切り文字を指定する デフォルトは区切り文字無し マップのキーと値の区切り文字を指定する デフォルトは区切り文字無し 行の区切り文字を指定する デフォルトは n SerDe( シリアライズ デシリアライズ ) クラスを指定する
テーブル作成 CREATE TABLE logs(id INT, created_at STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY, LINES TERMINATED BY' n'; CREATE TABLE logs(id INT, created_at STRING) PARTITIONED BY(date STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY, LINES TERMINATED BY' n';
テーブル操作
テーブル情報表示
データの格納
データの格納 LOAD DATA LOCAL FILEⅩ INTO table_name FILEⅩ HIVE HDFS LOAD DATA FILEY INTO table_name FILEY
データの格納
データの抽出
データの絞込み
データの並び替え
データの集計処理
テーブルの結合
Hive
Agenda Hadoopおさらい 1 HadoopStreaming 2 Hive 3 Demo (Apacheログ解析) 4 5 まとめ
Apache ログ解析 googlebot.com - - [01/May/2012:00:07:57 +0900] "GET /robots.txt HTTP/1.1" 404 216 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" rate-limited-proxy-209-85-238-7.google.com - - [01/May/2012:00:07:59 +0900] "GET / HTTP/1.1" 200 21120 "-" "DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" rate-limited-proxy-209-85-238-7.google.com - - [01/May/2012:00:28:53 +0900] "GET /?feed=rss2 HTTP/1.1" 304 0 "-" "Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 2 subscribers; feed-id=16492007851965158684)" niederhausen.tm.informatik.uni-leipzig.de - - [01/May/2012:00:33:56 +0900] "GET /robots.txt HTTP/1.1" 404 216 "-" "findlinks/2.5 (+http://wortschatz.uni-leipzig.de/findlinks/)" 61-23-123-166.rev.home.ne.jp - - [01/May/2012:01:06:33 +0900] "GET /wp-content/themes/inove_labsot/style.css HTTP/1.1" 200 29755 "http://labs.opentone.co.jp/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 61-23-123-166.rev.home.ne.jp - - [01/May/2012:01:06:33 +0900] "GET /wp-content/themes/inove_labsot/style.css HTTP/1.1" 200 29755 "http://labs.opentone.co.jp/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 61-23-123-166.rev.home.ne.jp - - [01/May/2012:01:06:33 +0900] "GET /wp-content/themes/inove_labsot/pagenavi-css.css?ver=2.60 HTTP/1.1"
Apache ログ解析 : テーブル作成
Apache ログ解析 : データ格納
Apache ログ解析 : 集計
Apache ログ解析 : 結果
Agenda Hadoopおさらい 1 HadoopStreaming 2 Hive 3 Demo (Apacheログ解析) 4 5 まとめ
まとめ
まとめ
ご清聴ありがとうございました