7

Click here to load reader

[Scalameetup]spark shuffle

  • Upload
    huy-do

  • View
    362

  • Download
    1

Embed Size (px)

Citation preview

Page 1: [Scalameetup]spark shuffle

SparkのShuffle周り@huydx

Page 2: [Scalameetup]spark shuffle

Shuffleについて• Map - Reduce モデル • Map段階からReduce段階への中間レイヤーは「Shuffle」と呼ぶ

• Shuffleでは • SparkがPullモデル(まずディスクに結果書いて、Reduceジョブが取りに行く)

• SparkはReduceジョブに必要なデータはメモリフィットしないといけない

Page 3: [Scalameetup]spark shuffle

いつShuffleが発生する• Join

• Cogroup

• *ByKeyオペレーション

Page 4: [Scalameetup]spark shuffle

Shuffleの問題• Shuffleファイル数

• Mapの数がM、Reduceの数がRとしたらディスクに書くファイル数が M * R (M = 5000, R = 1024 だと 500万ファイル!)

• Reduceするときにソートアルゴリズムが必要

• 並列にソートする必要ができるもの

• 通信が重い

Page 5: [Scalameetup]spark shuffle

Shuffleの問題解決• Shuffleファイル数:

• O(M * R) じゃなくて O(R)まで抑えられる

• Hashed base shuffle(一つのRひとつのファイル)じゃなくて Sort base shuffle

• 参考:https://issues.apache.org/jira/secure/attachment/12637642/Consolidating%20Shuffle%20Files%20in%20Spark.pdf

• https://issues.apache.org/jira/browse/SPARK-2045

Page 6: [Scalameetup]spark shuffle

Shuffleの問題解決• Sortのアルゴリズム選択

• https://databricks.com/blog/2014/10/10/spark-petabyte-sort.html

• Timsortを実装する

• 色々なソートアルゴリズムの組む合わせで平均Worst Caseパーフォマンスを減らす

Page 7: [Scalameetup]spark shuffle

Shuffleの問題解決• ネットワークモジュールを改善

• https://issues.apache.org/jira/browse/SPARK-2468

• Netty ベースデータ転送の実装 (FileChannel.transferToでzero copy)