74
1

今さら聞けないHadoop セントラルソフト株式会社(20120119)

Embed Size (px)

Citation preview

Page 1: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

1

Page 2: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

今さら聞けないHadoop!

2

セントラルソフト株式会社システム開発課瀧澤徹

Page 3: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

3

Hadoop は象のぬいぐるみ

Page 4: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

4

Page 5: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

5

おしまい

Page 6: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

本セミナーの目的

6

Page 7: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

セミナーの目的

7

Hadoop 初心者の方に、動作概念をロールプレイを通して理解してもらう。

Page 8: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

アジェンダ

8

データの大規模化 Hadoop

HDFS ロールプレイ HDFS 編

MapReduce ロールプレイ MapReduce 編

まとめ

Page 9: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

データの大規模化

9

Page 10: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

世界のデジタルデータの推移

10

2006 年で 18 万ペタバイト

2009 年で 80 万ペタバイト

2011 年で 2 ゼタ (200 万ペタ ) バイト

2020 年で 35 ゼタ (3500 万ペタ ) バイト ( 予想 )

Page 11: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

データ量の目安

11

Page 12: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

大量データへの対応(1)

12

ハードディスク容量の増加にアクセス速度が追い付いていない。 1 テラバイトのデータを読み出すのに、

転送速度が 100MB/s ならば、 2 時間半かかる。

Page 13: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

大量データへの対応(2)

13

転送時間を短縮する方法。 100 台のドライブに 1/100 ずつデータを保

管。 保管したデータを並列に取り出す。 転送時間が 2 時間半から 2 分以内に短縮。

ただし、次の問題が発生する。 障害の発生する確率が増える。 データを結合する仕組みが必要。

Page 14: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

14

Page 15: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

問題の解決

15

耐障害性 分割したデータをコピーして複数台のマシンに保存する

ため、一部のストレージサーバが故障しても正常に稼働。 デフォルトのコピー数は3。

データ結合 分散ファイルシステム。

Page 16: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

スケーラビリティ

16

RDB とは異なり、並列台数を増やしただけ性能が向上

Bitqull: Data harvesting with MapReduce から

(マシンの台数)

(合計処理能力)

Page 17: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Hadoop

17

Page 18: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Hadoop とは

18

ビッグデータを分散処理するためのミドルウェア ビッグデータ:大量・非定型・リアルタイム性の高いデー

Google の GFS 論文と MapReduce 論文を元に作成

Java で記述 オープンソース

Page 19: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

分散処理のイメージ

19

Page 20: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Hadoop を使った事例

20

楽天        120 時間(1 日の購入履歴 )    

クックパッド  7000 時間(1 年分のデータ処理 )

Yahoo   624 時間(3 年分のログ解析 )  

VISA 720 時間(2 年分のデータ解析 )  

5 時間( 1/24 )

30 時間( 1/233 )

20 分( 1/1872 )

13 分( 1/3323 )

Hadoop 適用前

適用後

Page 21: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Hadoop を構成する技術

21

HDFS 分散ファイルシステム

MapReduce 分散処理フレームワーク

Page 22: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

HDFS

22

Page 23: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

HDFS (Hadoop Distributed File System)

23

複数のストレージにファイルを分散する クライアントから HDFS を通してみると、一

つのファイルのように見える

二種類のサーバで構成される ネームノード( NameNode ) データノード( DataNode )

Page 24: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

24

マスターサーバ分割されているデータがどのデータ

ノードにあるか管理している。

ネームノード(マス

ター)

split0

ここには分割データ 0が入ってる

データノード

分割データ0

split0分割データ

1

split0分割データ

2

Page 25: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

データノード

25

スレーブサーバブロック(分割したデータ)の読み書

きを行う。データノードデータ A の分割データ

0データ B の分割データ

1データ C の分割データ

3

Page 26: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ロールプレイHDFS 編

26

Page 27: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライアント クライアントがファイルをネームノードに渡す。

ネームノードクライアント

Page 28: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード 渡されたファイルをデータノードの数に分割しそれ

ぞれに渡す。

ネームノード

データノード

Page 29: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

29

実践!

Page 30: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

役割

30

クライアント( 1 名)ネームノード( 1 名)データノード(4名)

Page 31: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライアント クライアントがファイルをネームノードに渡す。

ネームノードクライアント

Page 32: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード 渡されたファイルをデータノードの数に分割しそれ

ぞれに渡す。

ネームノード

データノード

Page 33: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

補足 実際はレプリケーションと呼ばれる、データのコ

ピーを複数のノードへの保存が行われる。(デフォルトは3 か所)

ネームノード

データノード

Page 34: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

MapReduce

34

Page 35: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

MapReduce とは

35

大量のデータを分散処理するフレームワーク。 各ノードが自身の持つデータを処理する。

3 種類のフェーズから構成される。 Map Shuffle & Sort Reduce

Page 36: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ワードカウントとは

36

ある文書中にある単語数をカウントし、単語ごとに使われた回数を結果として出力する。

Page 37: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ワードカウントの MapReduce の流れ

37

ローカルファイル

ローカルファイル

ローカルファイル

ローカルファイル

Shuffle & Sort 処理

Page 38: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Map

38

入力データの中で自身のノードが持っているデータを処理し、中間データとして出力する。

入出力の形式は key と value のペア。

<key A , value B>

<key C , value D>

Map

中間データ

入力データ

処理

Page 39: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

dog cat cat

bird dog

dog dog dog

cat

cat dog

入力ファイル( HDFS 上)

ワードカウントの Map( 入力データ )

39

ファイルの 1 行を読み込んで Map の入力にする key  :行の先頭文字がファイルの開始から何文字目か

の数値 (バイトオフセット) value : 1 行の内容そのまま

dog cat cat

入力ファイル(実ファイル)

入力データ( <key , value> )<0 , “dog cat cat”

>

<12 , “bird dog” >

<21 , “dog dog dog”>

<33 , “cat” >

<37 , “cat dog” >

catcat dog

dog dog dog

bird dog

ノード 1

ノード 2

ノード 3

ノード 4

Page 40: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ワードカウントの Map( 処理・中間データ )

40

入力の value を単語に分割して、それを中間データの key 、数字の 1 を value にする

ノード 4 上の処理

入力データ( <key , value> )

中間データ( <key , value> )

< “dog” , 1 >

< “cat” , 1 >

< “cat” , 1 >

<33 , “cat” >

<37 , “cat dog” >

Page 41: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ワードカウントの Map(全体の流れ )

41

ノード 4 上の処理

<33 , “cat” >

<37 , “cat dog”>

catcat dog

Map 処理 < “dog” , 1

>

< “cat” , 1 >

< “cat” , 1 >

ファイルからのデータの読み込み1 行を単語へ分割 中間データの出力

Page 42: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Shuffle & Sort

42

Map が終了すると、生成された中間データを Reduce に渡す前に Shuffle & Sort が行われる。

Shuffle & Sort ではデータの key に基づいて、ソートと value の集約、 ハッシュを用いて Reduce へのデータの割り振りを行う。

Map

Shuffle & Sort

Reduce

Map

Map

Map

Reduce

Page 43: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ワードカウントの Shuffle & Sort

43

Map の出力を同じ key の value を一つに集約し、 key の順にソート、ハッシュでどちらの Reduce へ渡すのか決める

< “dog” , 1 >

< “cat” , 1 >

< “cat” , 1 >

ノード 1 の Map 出力

< “dog” , 1 >

< “bird” , 1 >

ノード 2 の Map 出力

< “dog” , 1 >

ノード 3 の Map 出力

< “dog” , 1 >

< “dog” , 1 >

< “cat” , 1 >

ノード 4 の Map 出力

< “cat” , 1 >

< “dog” , 1 >

Reduce1 の入力

< “dog” , {1,1,1,1,1,1} >

Reduce2 の入力

< “bird” , {1} >

< “cat” , {1,1,1,1} >

Page 44: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Reduce

44

Shuffle & Sort で処理されたデータを受け取り、処理を行って HDFS 上に結果を書きだす。

入出力の形式は key と value のペア。

出力

処理されたデータ

処理

<key A , values B>

Reduce

key C value D

B は同じ key A のvalue (B1,B2,…) の集

まり

Page 45: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ワードカウントの Reduce ( 処理・出力 )

45

入力の value にある 1 の数を数えて、ファイルに key とペアで出力する。

Reduce2 の処理入力

< “bird” , {1} >

< “cat” , {1,1,1,1} >

出力( HDFS 上)

bird 1cat 4

Page 46: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

(再掲)ワードカウントの MapReduce の流れ

46

ローカルファイル

ローカルファイル

ローカルファイル

ローカルファイル

Shuffle & Sort 処理

Page 47: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ロールプレイMapReduce 編

Page 48: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライアント ネームノードにワードカウントを命令する

ネームノードクライアント

Page 49: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード データノードに処理を指示する。

ネームノード

データノード

Page 50: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Map 入力データの単語ごとに、それぞれの単語を key に

して、 value に1とする。 keyごとにソートしまとめる。 ネームノードにまとめたデータを渡す。

ネームノード<“cat”,1

>

<“dog”,1>

<“bird”,1>

<“cat”,1>

<“dog”,1>

Map

dog catdog bird catdog …

入力データ中間データ

<“dog”,1>

Page 51: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

51

中間データをマージします。 マージしたデータを二つを分ける。 Reduce に渡す。

Reduce

<“dog” ,{1,1,1}>

<“bird” , {1}>

<“cat” ,{1,1}>

<“bird” , {1}>

<“cat” ,{1,1}>

<“dog” ,{1,1,1}>

<“cat”,1>

<“dog”,1>

<“bird”,1>

<“cat”,1>

<“dog”,1>

中間データ

<“dog”,1>

Page 52: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Reduce 単語ごとにまとめられた value を足して出力する。 ネームノードに渡す。

Reduce

<“dog” ,3>

<“cat” ,2><“bird” , 1>

ネームノード

Page 53: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

53

出力結果をデータノードにそれぞれ渡す。

ネームノード

データノード

Page 54: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライント

54

ネームノードに対し、結果のファイルを要求する。

ネームノードクライアント

Page 55: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

55

出力結果のファイルを渡すように指示する。

ネームノード データノード

Page 56: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

データノード

56

ネームノードにファイルを渡す。

ネームノードデータノード

Page 57: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

57

ファイルをクライアントに渡す。

ネームノード クライアント

Page 58: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライアント

58

受け取ったファイルの確認をする。

bird 1cat 2dog 3

クライアント確認

出力ファイル

Page 59: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

役割

59

クライアント( 1 名)ネームノード( 1 名)Map ( 4 名)Reduce ( 2 名)

Page 60: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライアント ネームノードにワードカウントを命令する

ネームノードクライアント

Page 61: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード データノードに処理を指示する。

ネームノード

データノード

Page 62: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Map 入力データの単語ごとに、それぞれの単語を key に

して、 value に1とする。 keyごとにソートしまとめる。 ネームノードにまとめたデータを渡す。

ネームノード<“cat”,1

>

<“dog”,1>

<“bird”,1>

<“cat”,1>

<“dog”,1>

Map

dog catdog bird catdog …

入力データ中間データ

<“dog”,1>

Page 63: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

63

中間データをマージします。 マージしたデータを二つを分ける。 Reduce に渡す。

Reduce

<“dog” ,{1,1,1}>

<“bird” , {1}>

<“cat” ,{1,1}>

<“bird” , {1}>

<“cat” ,{1,1}>

<“dog” ,{1,1,1}>

<“cat”,1>

<“dog”,1>

<“bird”,1>

<“cat”,1>

<“dog”,1>

中間データ

<“dog”,1>

Page 64: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

Reduce 単語ごとにまとめられた value を足して出力する。 ネームノードに渡す。

Reduce

<“dog” ,3>

<“cat” ,2><“bird” , 1>

ネームノード

Page 65: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

65

出力結果をデータノードにそれぞれ渡す。

ネームノード

データノード

Page 66: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライント

66

ネームノードに対し、結果のファイルを要求する。

ネームノードクライアント

Page 67: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

67

出力結果のファイルを渡すように指示する。

ネームノード データノード

Page 68: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

データノード

68

ネームノードにファイルを渡す。

ネームノードデータノード

Page 69: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

ネームノード

69

ファイルをクライアントに渡す。

ネームノード クライアント

Page 70: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

クライアント

70

受け取ったファイルの確認をする。

bird 1cat 2dog 3

クライアント確認

出力ファイル

Page 71: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

(再掲)ワードカウントの MapReduce の流れ

71

ローカルファイル

ローカルファイル

ローカルファイル

ローカルファイル

Shuffle & Sort 処理

Page 72: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

まとめ

72

Page 73: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

まとめ

73

Hadoop はデータの分散処理システムであり、 HDFS と MapReduce で構成される

HDFS はデータファイルを分散管理するシステムであり以下のような構成である 分割したデータの保存場所を管理する「ネームノード」 実際にデータを保存する「データノード」

MapReduce は以下の 3 つのフェーズで構成される 入力データの加工を行う「Map」 データの整理と分配を行う「 Shuffle & Sort」 まとめられたデータに対して処理を行う「 Reduce」

Page 74: 今さら聞けないHadoop セントラルソフト株式会社(20120119)

今後の発表ネタ

74

MapReduce 関連 アルゴリズム

転置インデックス ・・・基本的な MapReduce TF-IDF ・・・複数回の MapReduce k-means 法 ・・・条件による MapReduce の分岐

MapReduce プログラミング手法 複数ファイルのデータのマージ パラメータ引渡し etc

Hadoop 関連のシステム(エコシステム) HBase Hive