ビッグデータ管理基盤ソフトウェア · hadoop 0.23について ......
TRANSCRIPT
ビッグデータ管理基盤ソフトウェア Hadoop入門
NECラーニング テクノロジー研修事業部 土井 正宏
アジェンダ
▌ Hadoopとは? ▌ HDFSの概要 ▌ Map/Reduceのしくみ ▌ Hadoopのエコシステム(関連製品) ▌ Hadoop 0.23について
Page 2 © NEC Corporation 2010
Hadoopの概要
▌高スケーラブルな分散管理基盤 ▌グリッドコンピューティング ▌2つのコア機能 ▌分散ファイルシステム(HDFS) ▌分散処理フレームワーク(Map/Reduce)
▌高スケーラブル(簡単かつ大規模に拡張可能)
NEC Group Internal Use Only
OS OS OS
分散処理基盤(Map/Reduce)
分散ファイルシステム(HDFS)
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
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に番号を振りなおしただけ(機能的差異はほとんどない)
Hadoopクラスタの構成
Page 6 © NEC Corporation 2010
マスターノード群
スレーブノード群
NameNode JobTracker Secondary NameNode
TaskTracker DataNode
TaskTracker DataNode
TaskTracker DataNode
▌ マスタースレーブ方式 マスター:スレーブ=1:多
▌ マスター HDFSのメタデータを管理 (NameNode) ジョブを監視(JobTracker)
▌ スレーブ データを保存(DataNode) タスクを実行(TaskTracker)
分散ファイルシステム(HDFS)
▌ スレーブノード(DataNode)のディスクを仮想的に一台に見せる ▌ マシンを追加するだけで簡単に拡張可能 ▌ ファイルをデータブロックに分割 ▌ 常に一定数のレプリカ(ブロックのコピー)を保持
Page 7 © NEC Corporation 2010
100G 100G 100G
300G
ブロックA ブロックA
ブロックB
ブロックB
ブロックC ブロックC
ファイル
ブロックA
ブロックB
ブロックC
分散ファイルシステム(HDFS)
▌ NameNodeがブロックの位置情報とノードの死活を管理 ▌ DataNode障害時は自動的にレプリカを作成
Page 8 © NEC Corporation 2010
NameNode
ブロックA
データB ブロックC
ブロックA データB
ブロックC
ブロックA ブロックC
Map/Reduce
▌ 分散処理のフレームワーク ▌ Jobの自動管理 プログラマーはTaskが実行される場所を意識しなくてよい プログラマーはTaskを実行するノードの障害を意識しなくてよい
Page 9 © NEC Corporation 2010
プログラム(Job)
Job
Task Task Task
Task Task Task
JobTracker= JobをTaskに分解
TaskTracker= Taskを実行
Map/Reduceのしくみ
▌ Map 分析の対象となる<Key,Value>ペアを作成
▌ Shuffle&Sort Keyの値でソートし集約
▌ Reduce 各<Key,Value>ペアに対し、処理を行う (例:Valueの値の合計値を求める)
Page 10 © NEC Corporation 2010
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>というペアを抽出
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(ここでは文字)のペアに集約
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(ここでは数値)の値の合計を求める
Map/Reduceのしくみ
▌ 可能な限り、操作対象のデータブロックが保存されているノードでMapperを起動 通信の削減 “処理”を“データ”の方に持っていく(データローカリティ)
▌ Map/Reduceの結果を、次のMap/Reduceの入力値にすることも可能(多段Map/Reduce)
Page 14 © NEC Corporation 2010
Flume
▌ Flume 点在するデータソースから、HDFSへ一元的にデータをロード
▌ Sqoop SQl to hadOOp RDBからHDFS(またはHDFSからRDB)へデータロード いくつかの製品でダイレクトパスロード(高速ロード)をサポート
Page 15 © NEC Corporation 2010
HDFS
Webサーバー群
Collecter
RDB HDFS RDB
HBase
▌ Hadoopデータベース ▌ HDFSにappend(追記)機能を追加 ▌ 列指向のNoSQLデータベース
Page 16 © NEC Corporation 2010
OS OS
HBase
HDFS
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;
その他
▌ Zookeeper 分散システムの設定情報の集中管理や同期化などを行う
▌ Mahout 機械学習のライブラリ(レコメンド、クラスタリングなど)
▌ Cassandra AP特性のNoSQL
▌ Asakusa FW 基幹系バッチ処理のためのライブラリ
▌ その他 Avro HUE Oozie・・・など
Page 18 © NEC Corporation 2010
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(新機能をマージ)
HDFS Federation
▌ DataNodeを共有するNameNodeの“連合” ▌ 従来のHDFS(Single NameNode)の問題点 スケーラビリティ
•HDFS上のファイルやデータブロックの増加が単一のNameNodeを圧迫 (機能的な)独立性の欠落
•テスト環境と本番環境が共存→テスト環境の操作が本番環境に影響を及ぼす 可用性の欠落
•NameNodeに障害が起きるとクラスタ全体が停止
▌ NameNodeが管理するデータを水平分割し、複数のNameNodeがクラスタを管理することで、上記問題を解決
Page 20 © NEC Corporation 2010
HDFS Federation
Page 21 © NEC Corporation 2010
▌ NameNode Namespace:HDFS上のディレクトリ、ファイル、ファイルを構成するデータブロックの情報 Block Pool:データブロックとDataNodeの対応情報
NS
BP
NS
BP
NS
BP
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
YARN(MapReduce2)
▌ Yet Another Resource Negotiator ▌ クラスタ上で動くアプリケーションへのリソース割り当てのためのフレーム
ワーク ▌ 用語 ResourceManager(ApplicationManager、Schejuler)
•(AppMsrを含む)Containerの起動、監視 ApplicationMaster
•クラスタ上で動くアプリケーションの監視(JobTrackerに相当) Container
•クラスタ上で動くアプリケーションの本体、またはリソース割り当ての単位 •従来のTaskに相当 NodeManager
•ノードの状態(リソースの使用状況など)をRMに通知
Page 23 © NEC Corporation 2010
YARN(MapReduce2)
Page 24 © NEC Corporation 2010
RM
AM S
AppMsr
ClientAP
C C
C
NN NN
NN
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