「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
Hadoop MapReduceと同様に
- 複数の計算機を用いてデータ処理を行う並列データ処理系
- JVM上で動作するOSSの並列分散処理系フレームワーク
背景 †
- データ処理してHDDに都度書き出す方式
- ディスクIOを並列化してスループット高める。
- データ処理してHDDに都度書き出す方式よりも高速。
特徴 †
分散処理 †
以下の順序で、タスクにブレークダウンされる。
- ジョブ
- 一連のデータフロー(処理の全体)
- 若しくは、SQLが生成した実行プラン
- パーティション
- 各ステージが処理する分割されたデータ
- パーティション数はが何か?によって決まる。
・データソース(例えば、HDFSなら128MB)
・中間データ(APIのパラメタや設定で決まる)
・Spark SQL(既定値200パーティションから自動シュリンク)
- タスク
ステージの処理をパーティションを処理する。
- シャッフル
- ネットワーク越しのデータ転送を伴うデータの再分散。
- 当該ステージのパーティションの出力を、
次のステージのパーティションの入力にマップする。
SQLライク †
Spark SQLによる、SQLライクな分散処理の隠蔽
トレードオフ †
利点 †
- RDDに対する数十種類のオペレータを利用可能。
- 多様な並列データ処理をシンプルに記述できる。
- オペレータを組み合わせれば、ジョブを組み合わせる必要がない。
- 複数のオペレータは1つのタスクとしてRDDのパーテョションごとにコピーされる。
- パーティション並列性を活用でき、中間データI/Oを削減できる。
欠点 †
苦手な処理。
- クラスタ全体のメモリに乗り切らない 巨大なデータ処理(TB級以上)
- 大きなデータセットを少しずつ更新する処理
- 秒以下の特に短いレスポンスが必要な処理
シナリオ †
適合するビッグデータ シナリオ
抽出、変換、読み込み (ETL) †
- Filtering
- Sorting
- Aggregating
- Joining
- Cleaning
- Deduplicating
- Validating
バッチ処理 †
詳細 †
アーキテクチャとコンポーネントの関係が謎い(詳細が見えて来たら書き足す予定)。
アーキテクチャ †
ドライバ †
- Spark セッション
プログラムを受け取り、それを小さなタスクに分割する。
小さくなったタスクはエグゼキュータで処理される。
エグゼキュータ †
クラスタ †
- クラスター マネージャ
次の目的でドライバとエグゼキュータの両方と通信する。
- リソースの割り当てを管理する
- プログラム分割を管理する
- プログラム実行を管理する
コンポーネント †
Resilient Distributed Dataset (RDD) †
Hadoop MapReduceが苦手としていた、
スループットとレイテンシの両立が必要な領域にアプローチ
- 分散共有メモリを提供する分散プログラムのワーキングセット。
- 永続化先として、主に、計算機のメモリ(キャッシュ)と二次記憶を利用できる。
- メモリと二次記憶を組み合わせることも可能
- メモリに保持しきれないパーティションを一時的に二次記憶に退避
- 当該パーティションを利用する際に再び二次記憶から読み出す。
Spark Core †
- API(Java、Python、Scala、R)を介して公開
- 分散タスクディスパッチ
- スケジューリング
- および基本I/O機能
- DataFrame?というオンメモリのテーブルに対し、LINQ的に処理を行うことが出来る。
- 裏側では、
クエリ・エンジン経由で実行プラン生成し
その他、用途向けのライブラリ †
- 昨今はML Pipelinesの開発が活発
Scikit-Learnのような機械学習全体のパイプラインをサポートするAPIが提供される。
耐障害性 †
≒ 再実行するタスクの数を最少にする機構。
ジョブ †
物理ロギングに依る。
- 中間データをシャッフルする際に、
- 中間データを二時記憶に書き出す。
以下の2つの方法に依る。
CLI †
spark-submit †
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
, etc. †
参考 †
NTTデータ †
先端技術株式会社 †
技術開発本部 †
https://www2.slideshare.net/nttdata-tech/presentations
- Open Source Conference2020 Online…
システム技術本部 †
https://www.slideshare.net/hadoopxnttdata/presentations
Qiita †
YARN †
gihyo.jp … 技術評論社 †
Hadoopはどのように動くのか
─並列・分散システム技術から読み解くHadoop処理系の設計と実装