Content uploaded by Shuuji TAKAHASHI
Author content
All content in this area was uploaded by Shuuji TAKAHASHI on Sep 25, 2020
Content may be subject to copyright.
ストレージコネクタ
spark-ceph-connectorの
書き込み性能の改善
2020/09/25(Fri.) 第176回 HPC研究発表会
高橋 宗史 1) 建部 修見 2)
1) 筑波大学 大学院 システム情報工学研究科
コンピュータサイエンス専攻 HPCS研究室
2) 筑波大学 計算科学研究センター
1
研究の背景: Apache Spark
■Apache Spark (Zaharia et al., 2012, USENIX NSDI '12)[1][2]
● Hadoopが苦手とする反復的な処理が高速
●機械学習を含む充実した標準ライブラリ
●データ解析の広い分野で人気
● spark-operatorやKubeflowに対応し、Kubernetesを含む幅
広いプラットフォームに対応
4
MLlib
[1] Spark: Cluster Computing with Working Sets |
USENIX HotCloud '10 - Usenix
https://www.usenix.org/conference/hotcloud-10/spark
-cluster-computing-working-sets
[2] Apache Spark™ - Unified Analytics Engine for Big
Data - https://spark.apache.org/
研究の背景: 分散オブジェクトストレージ Ceph
■Ceph (Sage A. Weil, 2006, USENIX OSDI '06) [3]
●Linux Foundation 傘下の Ceph Foundation で RedHat 等
を中心に活発に開発が行われているオープンソースの分散
オブジェクトストレージ
●特徴: メタデータサーバーが不要なRADOSをベースとし、高
いスケーラビリティを持つ
5
[3] Ceph: a scalable, high-performance distributed file
system, Weil, Sage A. et al. OSDI '06
DOI: 10.5555/1298455.1298485
研究の背景: 分散オブジェクトストレージ Ceph
■Ceph (Sage A. Weil, 2006, USENIX OSDI '06) [4]
●利用例: CERN, Yahoo などでの10 - 100 PB級の大規模な
データの格納など[4][5]
●最新版で完全にコンテナ化され、Rookを利用した
Kubernetesクラスター上でのストレージクラスタの自動構築
が可能 [6]
6
[4] Storage for Open Infrastructure. Dan Van Der Ster |
CERN IT Storage Group
https://indico.cern.ch/event/860733/contributions/3
625111/attachments/1938852/3214034/2019-intro-
ceph.pdf
[5] Yahoo Cloud Object Store - Object Storage at
Exabyte Scale | Yahoo Engineering
https://yahooeng.tumblr.com/post/116391291701/y
ahoo-cloud-object-store-object-storage-at
[6] Rook: Open-Source, Cloud-Native Storage for
Kubernetes - https://rook.io/
提案手法: DataFrameを使用したシリアライズの利用
■DataFrameを使用したシリアライズの利用
●最適な書き込みデータのシリアライズ方法を検証
■シリアライズ形式
●JSON形式
●Apache ORC形式
●Apache Parquet形式
■Apache ORC, Apache Parquet
●データ解析用の列指向のシリアライズフォーマット
●Apache ORC: "High-Performance Columnar Storage for
Hadoop"
●Apache Parquet: "efficient columnar data representation
available to any project in the Hadoop ecosystem"
24
関連研究: CephFS-Hadoop プラグイン
■CephFS-Hadoop プラグイン
●POSIX 準拠 CephFS インターフェイスを利用
●Hadoop バージョン1.1系列が必要
●CephFS のオーバーヘッドが多い
Ceph : ceph/cephfs-hadoop: cephfs-hadoop
https://github.com/ceph/cephfs-hadoop
Using Hadoop with CephFS — Ceph Documentation
⟨https://docs.ceph.com/docs/master/cephfs/hadoop/⟩
45
CephFS-
Hadoop
RADOS
librados CephFS
RBD RADOS
Gateway
POSIX
API
関連研究: zero-rename committer
■AWS S3オブジェクトストレージ向けのS3Aストレージコネクタの
ために開発されたCommitter
■名前の通り、rename操作を行わないように改良されたオブジェ
クトストレージ向けのCommitter
Steve Loughran: A Zero-Rename Committer: Object-storage as a destination for
Apache Hadoop and Spark , (online), available from
⟨https://github.com/steveloughran/zero-rename-committer (2020-08-20) ⟩
46
関連研究: ストレージコネクタStocator
■zero-rename committerと同様の改善を独自のアプローチで
実装したストレージコネクタ
■Amazon S3やSwiftでの利用は考慮されているが、Ceph向け
には開発されておらず、Stocator用のストレージプラグインを追
加で開発する必要がある
Vernik, G., Factor, M., Kolodner, E. K., Michiardi, P., Ofer, E. and Pace, F.: Stocator:
Providing High Performance and Fault Tolerance for Apache Spark Over Object
Storage, 2018 18th IEEE / ACM International Symposium on Cluster, Cloud and
Grid Computing ( CCGRID ), IEEE, (online), DOI: 0.1109/ccgrid.2018.00073 (2018).
47
Appendix 51
実験と手法 - 性能劣化の原因 (1)
■原因1: Apache Spark によるデータ保存時の書き込み方法
と Ceph の CRUSH アルゴリズムの相性の悪さ
■ Spark のデータ書き込みプロセス
● (1) 分散タスクが attempt というファイルを書き込む
● (2) データの書き込みの成功後、当該タスクごとにファイ
ルシステム上の一時ファイルに rename する
● (3) すべてのタスクが成功したら、一時ファイルを最終的
な書き込み場所に移動するために rename を実行
54
attempt
Object
temp
Object Object
rename()
write() rename()