2017-10-14 12 views
1

最近、ラウル・エストラダの「SMACKスタックによる高速データ処理システム」という本を読んでみることにしました。私たちが見たように、それは を防ぐため遅延評価とデッドロック

は、遅延評価でも、デッドロックやボトルネックを防ぐ:2つの最初の章の後、私は私がいることに遭遇していない限り、それは「こんにちは世界」のそれほど悪くないコンパイルであることを考えました別のプロセスの結果を無期限に待つプロセス。

私は驚いたことに、怠惰な評価がデッドロックを防止するという主張について、何らかの議論を見つけようとしました。その声明はScalaとSparkに関するものです。残念ながら私は何の議論も見つけませんでした。私の知る限りでは、あなたがそれらの少なくとも一つが決して起こらないことを保証しなければならないデッドロックを避けるために:&は

  • んプリエンプション待つ
  • ロックを

    • 相互排他
    • 円形待ち

    どのように怠惰な評価がそれらを防ぐことができますか?

  • 答えて

    1

    遅延評価自体はデッドロックを防ぎませんが、計算グラフである別の概念と密接に関連しています。 Sparkは計算を依存関係の系列として記述するので、計算グラフが非周期的(有名なDAG)であることを検証できるため、循環待ちの原因となるケースはありません。

    高レベルのSparkでは、ネストされた変換とアクションを禁止することでこれを強制します。つまり、ステージ間に隠れた依存関係はありません。

    関連する問題