ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ......

25
ビッグデータ管理基盤ソフトウェア Hadoop入門 NECラーニング テクノロジー研修事業部 土井 正宏

Transcript of ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ......

Page 1: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

ビッグデータ管理基盤ソフトウェア Hadoop入門

NECラーニング テクノロジー研修事業部 土井 正宏

Page 2: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

アジェンダ

▌ Hadoopとは? ▌ HDFSの概要 ▌ Map/Reduceのしくみ ▌ Hadoopのエコシステム(関連製品) ▌ Hadoop 0.23について

Page 2 © NEC Corporation 2010

Page 3: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Hadoopの概要

▌高スケーラブルな分散管理基盤 ▌グリッドコンピューティング ▌2つのコア機能 ▌分散ファイルシステム(HDFS) ▌分散処理フレームワーク(Map/Reduce)

▌高スケーラブル(簡単かつ大規模に拡張可能)

NEC Group Internal Use Only

OS OS OS

分散処理基盤(Map/Reduce)

分散ファイルシステム(HDFS)

Page 4: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Hadoopの歴史

▌ Google社が検索インデックスを作成するために使用していた技術 GFS(Google File System):クローラが収集したドキュメントを格納するための分散ストレージ Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築するための分散処理基盤

▌ Doug Cutting氏らにより、GFSとMap/Reduceのオープンソースクローン

が開発される⇒Hadoop

Page 4 © NEC Corporation 2010

GFS

Map/Reduce

HDFS

Map/Reduce

Page 5: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Hadoopのバージョン

▌ 最新安定版は1.0(0.20.205) ▌ 最新版は0.23(今後2.0になる?)

参考文献: http://www.cloudera.co.jp/hadoop/column/apache-hadoop-1-update.html

Page 5 © NEC Corporation 2010

0.20系

0.23系 0.20 1.0

0.23

Trunk(新機能をマージ)

※1.0のリリースと0.23のリリースは時系列的に前後しているが、実際は0.23より前にリ

リースされた0.20.205に番号を振りなおしただけ(機能的差異はほとんどない)

Page 6: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Hadoopクラスタの構成

Page 6 © NEC Corporation 2010

マスターノード群

スレーブノード群

NameNode JobTracker Secondary NameNode

TaskTracker DataNode

TaskTracker DataNode

TaskTracker DataNode

▌ マスタースレーブ方式 マスター:スレーブ=1:多

▌ マスター HDFSのメタデータを管理 (NameNode) ジョブを監視(JobTracker)

▌ スレーブ データを保存(DataNode) タスクを実行(TaskTracker)

Page 7: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

分散ファイルシステム(HDFS)

▌ スレーブノード(DataNode)のディスクを仮想的に一台に見せる ▌ マシンを追加するだけで簡単に拡張可能 ▌ ファイルをデータブロックに分割 ▌ 常に一定数のレプリカ(ブロックのコピー)を保持

Page 7 © NEC Corporation 2010

100G 100G 100G

300G

ブロックA ブロックA

ブロックB

ブロックB

ブロックC ブロックC

ファイル

ブロックA

ブロックB

ブロックC

Page 8: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

分散ファイルシステム(HDFS)

▌ NameNodeがブロックの位置情報とノードの死活を管理 ▌ DataNode障害時は自動的にレプリカを作成

Page 8 © NEC Corporation 2010

NameNode

ブロックA

データB ブロックC

ブロックA データB

ブロックC

ブロックA ブロックC

Page 9: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Map/Reduce

▌ 分散処理のフレームワーク ▌ Jobの自動管理 プログラマーはTaskが実行される場所を意識しなくてよい プログラマーはTaskを実行するノードの障害を意識しなくてよい

Page 9 © NEC Corporation 2010

プログラム(Job)

Job

Task Task Task

Task Task Task

JobTracker= JobをTaskに分解

TaskTracker= Taskを実行

Page 10: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Map/Reduceのしくみ

▌ Map 分析の対象となる<Key,Value>ペアを作成

▌ Shuffle&Sort Keyの値でソートし集約

▌ Reduce 各<Key,Value>ペアに対し、処理を行う (例:Valueの値の合計値を求める)

Page 10 © NEC Corporation 2010

Page 11: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

To Be Or Not To Be This Is The Question

data

HDFSに格納

To Be Or Not To Be

This Is The Question

Map(wordcountの例)

To,1

Be,1

Or,1

Not,1

To,1

Be,1

This,1

Is,1

The,1

Question,1

データブロック

Map処理:<文字,1>というペアを抽出

Page 12: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Shuffle&Sort(wordcountの例)

Page 12 © NEC Corporation 2010

Be,1,1

Is,1

Not,1

Or,1

Question,1

The,1

This,1

To,1,1

To,1

Be,1

Or,1

Not,1

To,1

Be,1

This,1

Is,1

The,1

Question,1

同じKey(ここでは文字)のペアに集約

Page 13: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Reduce(wordcountの例)

Page 13 © NEC Corporation 2010

Be,1,1

Is,1

Not,1

Or,1

Question,1

The,1

This,1

To,1,1

Be,2

Is,1

Not,1

Or,1

Question,1

The,1

This,1

To,2

Be,2 Is,1 Not,1 Or,1

Question,1 The,1 This,1 To,2

HDFSに格納

Reduce処理:Value(ここでは数値)の値の合計を求める

Page 14: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Map/Reduceのしくみ

▌ 可能な限り、操作対象のデータブロックが保存されているノードでMapperを起動 通信の削減 “処理”を“データ”の方に持っていく(データローカリティ)

▌ Map/Reduceの結果を、次のMap/Reduceの入力値にすることも可能(多段Map/Reduce)

Page 14 © NEC Corporation 2010

Page 15: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Flume

▌ Flume 点在するデータソースから、HDFSへ一元的にデータをロード

▌ Sqoop SQl to hadOOp RDBからHDFS(またはHDFSからRDB)へデータロード いくつかの製品でダイレクトパスロード(高速ロード)をサポート

Page 15 © NEC Corporation 2010

HDFS

Webサーバー群

Collecter

RDB HDFS RDB

Page 16: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

HBase

▌ Hadoopデータベース ▌ HDFSにappend(追記)機能を追加 ▌ 列指向のNoSQLデータベース

Page 16 © NEC Corporation 2010

OS OS

HBase

HDFS

Page 17: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Hive/Pig

▌ 独自言語でMap/Reduceを実行 Hive:HiveQL Pig:Pig Latin

▌ 構造化されたデータに対応しやすい

Page 17 © NEC Corporation 2010

Coffee,Short,280,drink Coffee,Tall,380,drink Coffee,Grande,480,drink Cake,NULL,580,food

data Hive

SELECT category, count(name) FROM menu GROUP BY categories;

Pig

gl = GROUP products BY menu; cnt = FOREACH gl GENERATE group AS categories, COUNT(menu) AS total; DUMP cnt;

Page 18: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

その他

▌ Zookeeper 分散システムの設定情報の集中管理や同期化などを行う

▌ Mahout 機械学習のライブラリ(レコメンド、クラスタリングなど)

▌ Cassandra AP特性のNoSQL

▌ Asakusa FW 基幹系バッチ処理のためのライブラリ

▌ その他 Avro HUE Oozie・・・など

Page 18 © NEC Corporation 2010

Page 19: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

Hadoop 0.23

▌ ここまでにリリースされたすべての機能を備えたバージョン(18か月ぶり)

▌ 2つの新機能 HDFS Federation YARN(Map/Reduce2)

▌ CDH4(現在ベータ版)で採用

Page 19 © NEC Corporation 2010

0.20系

0.23系 0.20 1.0

0.23

Trunk(新機能をマージ)

Page 20: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

HDFS Federation

▌ DataNodeを共有するNameNodeの“連合” ▌ 従来のHDFS(Single NameNode)の問題点 スケーラビリティ

•HDFS上のファイルやデータブロックの増加が単一のNameNodeを圧迫 (機能的な)独立性の欠落

•テスト環境と本番環境が共存→テスト環境の操作が本番環境に影響を及ぼす 可用性の欠落

•NameNodeに障害が起きるとクラスタ全体が停止

▌ NameNodeが管理するデータを水平分割し、複数のNameNodeがクラスタを管理することで、上記問題を解決

Page 20 © NEC Corporation 2010

Page 21: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

HDFS Federation

Page 21 © NEC Corporation 2010

▌ NameNode Namespace:HDFS上のディレクトリ、ファイル、ファイルを構成するデータブロックの情報 Block Pool:データブロックとDataNodeの対応情報

NS

BP

NS

BP

NS

BP

Page 22: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

HDFS Federation

▌ データブロックは単一のBlock Poolに属する ▌ 障害の局所化 NameNodeの障害は、他のBlock Poolに影響を及ぼさない

▌ 独立性の確保 異なるNameSpace間のでの独立性が確保される テスト環境用のNameNodeを立てておけば、本番環境用のNameNodeに影響を及ぼさない

▌ 参考文献:https://issues.apache.org/jira/secure/attachment/12440257/Block+pool+proposal.pdf http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/Federation.html Page 22 © NEC Corporation 2010

Page 23: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

YARN(MapReduce2)

▌ Yet Another Resource Negotiator ▌ クラスタ上で動くアプリケーションへのリソース割り当てのためのフレーム

ワーク ▌ 用語 ResourceManager(ApplicationManager、Schejuler)

•(AppMsrを含む)Containerの起動、監視 ApplicationMaster

•クラスタ上で動くアプリケーションの監視(JobTrackerに相当) Container

•クラスタ上で動くアプリケーションの本体、またはリソース割り当ての単位 •従来のTaskに相当 NodeManager

•ノードの状態(リソースの使用状況など)をRMに通知

Page 23 © NEC Corporation 2010

Page 24: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

YARN(MapReduce2)

Page 24 © NEC Corporation 2010

RM

AM S

AppMsr

ClientAP

C C

C

NN NN

NN

Page 25: ビッグデータ管理基盤ソフトウェア · Hadoop 0.23について ... Map/Reduce:収集した膨大なドキュメントを解析し、検索インデックスを構築す

YARN(MapReduce2)

▌ プログラマーが作成するのはClientプログラム、AppMsr、Containerの3つ

▌ ただし従来のM/RをそのままYARN上で動かすことは可能 ▌ M/R以外のプログラム(BSPなど)を動かすことも可能 ▌ リソースの柔軟な割り当て コンテナのサイズや数をプログラマーが指定できる(※現状ではメモリサイズのみ指定可能)

参考文献:

https://issues.apache.org/jira/secure/attachment/12486023/MapReduce_NextGen_Architecture.pdf http://www.cloudera.com/blog/2012/02/mapreduce-2-0-in-hadoop-0-23/

Page 25 © NEC Corporation 2010