広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理...

24
1 広域分散ファイルシステムGfarm 上での MapReduce を用いた大規模分散データ処理 三上俊輔 1) 太田一樹 2) 建部修見 1) 1) 筑波大学 2) Preferred Infrastructure, Inc.

Transcript of 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理...

Page 1: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

1

広域分散ファイルシステムGfarm 上でのMapReduce を用いた大規模分散データ処理

三上俊輔1) 太田一樹2) 建部修見1)

1) 筑波大学

2) Preferred Infrastructure, Inc.

Page 2: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

2

発表の概要

研究の背景

MapReduceと分散ファイルシステム

研究の目的

提案システムの設計と実装

性能評価

関連研究

結論と今後の課題

Page 3: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

研究の背景

データの大規模化

インターネット規模

生命情報学,天文学,素粒子物理学

ペタバイト、エクサバイト級

分散ファイルシステム Google file system, HDFS,Gfarm, PVFS, Ceph

大容量,スケーラブルな並列I/Oバンド幅

コモディティで構成

分散処理

MPI (Message Passing Interface)

MapReduce

3

Page 4: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

MapReduce, Hadoop

MapReduce [2004 Dean] 大規模データの並列処理のフレームワーク

処理をMapフェーズとReduce フェーズにわける

Google の実装ではデータの入出力にGoogle File Systemを使用

Hadoop Google MapReduce のオープンソース実装

データの入出力にはHDFS(Hadoop Distributed File System)を使用

4

MapReduce

Google File System

Google の基盤技術

Hadoop MapReduce

Pig

Hadoop

Distributed File System

OSS の基盤技術

Sawzall Hive

Page 5: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

HDFS

マスター

ファイルのメタデータを管理し、単一名前空間を提供

スレーブ

データを保存

データの入出力はスレーブへ直接行われる

ファイルをブロック分割する(デフォルトでは64MB)

複製による信頼性の向上

Hadoopに対してデータの位置を提供

ストリーミングアクセスに特化している

5

Page 6: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

HDFS Architecture

6

仮想的な共有ファイルシステム(HDFS)

HDFS メタデータサーバー

HDFS ストレージサーバー

HDFS ストレージサーバー

HDFS ストレージサーバー

ClientMetadata ops

Read or WriteRead or Write

Page 7: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

HDFSの問題点

MapReduceのジョブ以外での利用が困難

APIがPOSIXに準拠していない

ファイルの任意の位置の修正ができない

複数クライアントからの単一ファイルへの書き込みができない

基本はJavaの特定APIからのアクセス

データのインポート,エクスポートが必要になる

コピーするために時間がかかる

ストレージの無駄

7

Page 8: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

研究の目的

汎用的な一つのファイルシステムでストレージを一元的に管理

大容量、高信頼、高性能、低コスト

MapReduce処理においてもHDFSと同等以上の性能

8

Hadoop

MapReduce

MPI

application

Distributed File System

Legacy

application

Hadoopデータ基盤 目的とするデータ基盤

Hadoop MapReduce

Pig

Hadoop

Distributed File System

Hive Pig Hive

Page 9: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

Gfarm[2002 建部ら]

広域分散ファイルシステム

マスター

ファイルのメタデータを管理し、単一名前空間を提供

スレーブ

データを保存

ファイルの局所性を利用したスケーラブルな性能

複製による信頼性の向上とアクセスの負荷分散

ファイル単位で保存

POSIX準拠のAPI

FUSEによって既存のソフトウェアから透過にアクセス可能

9

Page 10: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

提案システム Hadoop-Gfarmプラグインの概要

10

Hadoop MapReduce applications

File System API

HDFS client library Gfarm JNI shim layer

HDFS servers Gfarm servers

Gfarm client library

FUSEを使ってアクセスすることも考えられるが、FUSE

のオーバーヘッド、データの位置を取得できないなどの欠点

Hadoop から直接Gfarm上のファイルへアクセス プラグインを開発する必要

本研究で開発

ソフトウェアスタック

Page 11: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

Hadoop-Gfarmプラグインの実装

HadoopがHDFS以外のファイルシステムを利用できるように,抽象化されたFile System APIを備えている org.apache.hadoop.fs.FileSystem

Gfarm用にそのインターフェースを実装 initialize, terminate, checkPath, makeQualified, setWorkingDirectory,

getWorkingDirectory, open, create, rename, delete, getFileSize, delete,

listStatus, mkdirs, getFileStatus, getFileBlockLocations, read, isOpen,

write, flush, sync, seek, tell, close

ファイルの複製の格納場所一覧を返す関数getFileBlockLocationsを実装

Hadoop MapReduceがこの関数を使用し,Mapタスクをデータに近いノードに割り当てる

Java Native Interface(JNI) を使用 コピーは発生しない

11

Page 12: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

Hadoop-Gfarmプラグインの実装

Java 側のコード

private final static native long open(String path);

C++ のコード

#include <gfarm/gfarm.h>

JNIEXPORT jlong JNICALL

Java_org_apache_hadoop_fs_gfarmfs_GfarmFSNativeInputChannel_open

(JNIEnv *env, jclass cls, jstring jstrpath)

{

string path = jstr2cppstr(env, jstrpath);

GFS_File f = NULL;

gfarm_error_t e = gfs_pio_open(path.c_str(), GFARM_FILE_RDONLY, &f);

return (jlong)f;

}

12

Page 13: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

HadoopとGfarmの構成

13

Input0 Input1 Input2

仮想的な共有ファイルシステム(Gfarm)

Hadoop ジョブ管理サーバー

Gfarm メタデータサーバー

Hadoop 計算サーバー

Gfarm ストレージサーバー

Hadoop 計算サーバー

Gfarm ストレージサーバー

Hadoop 計算サーバー

Gfarm ストレージサーバー

タスク0

タスク0

タスク0

ファイルの複製が保存されているノード一覧を取得

ローカリティを考慮してタスクを配置し,Gfarm上のファイルへアクセス

Page 14: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

性能評価

マシン性能

14

CPU Xeon E5410 2.33GHz(2 ソケットx4 コア)

Memory 32GB

OS Linux 2.6.18-6-amd64 SMP

Disk Hitachi HUA72101 1TB

Hadoop Version 0.20.2

Gfarm Version 2.30

Network 10GE

Page 15: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

JNI shim layer に関するオーバーヘッドの評価

15

0

20

40

60

80

100

120

read read( JNI ) write write( JNI )

Th

rou

gh

pu

t (M

B / s

ec )

min

ave

max

•Gfarm ネイティブライブラリを直接呼んだ場合と,JNIを通してネイティブライブラリを呼んだ場合の比較•JNIのオーバーヘッドは読み込みで1%未満、書き込みで約6%

Page 16: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

並列書き込み性能

16

0

200

400

600

800

1000

1200

1400

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15Aggre

gate

thro

ughput (M

B/s

ec)

Number of nodes

HDFS

Gfarm

•Hadoop 付属のTestDFSIO ベンチマークを使用•各ノードが別々の50GBのファイルを書き込む(複製はなし)•ローカルに書き込むのでスケールする•Gfarmが約30%高い性能

Page 17: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

並列読み込み性能

17

0

200

400

600

800

1000

1 3 5 7 9 11 13 15

Aggre

gate

Thro

ughput

(MB

/sec)

Number of nodes

HDFS

Gfarm w/ affinity

Gfarm w/o affinity

•Hadoop 付属のTestDFSIO ベンチマークを使用•各ノードが5GBの別々のファイルを読み込む•HDFSとGfarmはほぼ同等の性能•Gfarm w/o ではデータの位置を考慮せずにタスクを配置•しかし、10GEのネットワークのためか大きな性能差はなかった

Page 18: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

grep

18

0

50

100

150

200

250

300

350

1 3 5 7 9 11 13 15

Perf

orm

ance (

MB

/sec)

Number of nodes

HDFS

Gfarm w/ affinity

Gfarm w/o affinity

•全体でノード数 x 5GB のランダムなテキストに対してgrep 処理•HDFSとGfarmはほぼ同程度の性能•15ノードにおいて,データ配置の考慮により約5倍の性能差•Gfarm w/o affinity はアクセスの競合が発生し、性能低下

データの位置を考慮したスケジューリングにより約5倍の性能差

Page 19: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

Hadoop のスケジューリング(並列読み込み)

w / affinity

w/o affinity

19

Mapタスク

Mapタスク

Mapタスク

Mapタスク

Mapタスク

Mapタスク

ネットワークI/Oが発生

Page 20: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

Hadoop のスケジューリング(grep)

w / affinity

w/o affinity

20

Mapタスク

Mapタスク

Mapタスク

Contention!

Mapタスク

Mapタスク

Mapタスク

Page 21: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

sort

Hadoop付属のTerasortプログラム

map関数、reduce関数は何もしない

keyでソートされ、valueはそのまま出力する

パーティション関数によってどのReduceタスクか決定

21

Map

Map

Map

Reduce

Reduce

aa, foo

baz,bar

zzz

hadoop

zoo

pig

aa

bar

baz

foo

hadoop

pig

zoo

zzz

[A-M]

[O-Z]

Page 22: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

sort

22

020406080

100120140160

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Perf

orm

ance (

MB

/sec)

Number of nodes

HDFS

Gfarm

•全体でノード数 x 5GB のランダムなテキストに対してソート処理Gfarmが若干劣っている•ReduceフェーズはGfarmの方が早いが,Mapフェーズで遅い

Page 23: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

関連研究

CloudStore

マスター・スレーブ,ブロック分割などHDFSと似た特徴

POSIXライクのC++のAPI,FUSE

認証やファイルパーミションなどの機能はない

Hadoop-PVFS

ストライピングクラスタファイルシステム

I/O バンド幅はネットワークに制限される

23

計算ノード

計算ノード

I/O ノード

I/O ノード

メタデータサーバ

ネットワーク

ファイルストライプ メタデータ

Page 24: 広域分散ファイルシステムGfarm上でのMapReduceを用いた大規模分散データ処理 @ SWoPP2010

結論と今後の課題

HadoopのファイルシステムとしてGfarmを利用

並列書き込み,並列読み込み,MapReduceアプリケーションにおいて,HDFSと同等以上の性能

Gfarmを基盤とするデータ処理

ストレージを一元的に管理

MapReduce, MPI-IO, 既存のソフトウェア

インポート、エクスポート時の無駄なコピーが要らない

今後の課題 ジョブのプロファイル

多様なアプリケーションによる評価

複製がある場合

大規模広域環境での評価24