ビッグデータ管理基盤ソフトウェア
Hadoop入門
NECラーニング テクノロジー研修事業部 土井 正宏
アジェンダ
▌
Hadoopとは?
▌
HDFSの概要
▌
Map/Reduceのしくみ
▌
Hadoopのエコシステム(関連製品)
▌
Hadoop 0.23について
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
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クラスタの構成
マスターノード群 スレーブノード群 NameNode JobTracker Secondary NameNode TaskTrackerDataNode TaskTracker DataNode
TaskTracker DataNode
▌
マスタースレーブ方式
マスター:スレーブ=1:多▌
マスター
HDFSのメタデータを管理 (NameNode) ジョブを監視(JobTracker)▌
スレーブ
データを保存(DataNode) タスクを実行(TaskTracker)分散ファイルシステム(HDFS)
▌
スレーブノード(DataNode)のディスクを仮想的に一台に見せる
▌
マシンを追加するだけで簡単に拡張可能
▌
ファイルをデータブロックに分割
▌
常に一定数のレプリカ(ブロックのコピー)を保持
Page 7 © NEC Corporation 2010
100G 100G 100G
300
G
ブロックA ブロックA ブロックB ブロックB ブロックC ブロックC ファイル ブロックA ブロックB ブロックC分散ファイルシステム(HDFS)
▌
NameNodeがブロックの位置情報とノードの死活を管理
▌
DataNode障害時は自動的にレプリカを作成
NameNode
ブロックA データB ブロックC ブロックA データB ブロックC ブロックA ブロックCMap/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の値の合計値を求める)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の例)
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 同じ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)
Flume
▌
Flume
点在するデータソースから、HDFSへ一元的にデータをロード▌
Sqoop
SQl to hadOOp RDBからHDFS(またはHDFSからRDB)へデータロード いくつかの製品でダイレクトパスロード(高速ロード)をサポートPage 15 © NEC Corporation 2010
HDFS
Webサーバー群
Collecter
HBase
▌
Hadoopデータベース
▌
HDFSにappend(追記)機能を追加
▌
列指向のNoSQLデータベース
OS OS HBase HDFSHive/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・・・など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
HDFS Federation
▌
DataNodeを共有する
NameNodeの“連合”
▌
従来のHDFS(Single NameNode)の問題点
スケーラビリティ •HDFS上のファイルやデータブロックの増加が単一のNameNodeを圧迫 (機能的な)独立性の欠落 •テスト環境と本番環境が共存→テスト環境の操作が本番環境に影響を及ぼす 可用性の欠落 •NameNodeに障害が起きるとクラスタ全体が停止▌
NameNodeが管理するデータを
水平分割
し、
複数のNameNode
がクラ
スタを管理することで、上記問題を解決
HDFS Federation
Page 21 © NEC Corporation 2010