Data platformProcessingApache SparkSpark Client-server Boundary & Spark Connect

Spark Client-server Boundary & Spark Connect

Từ Spark classic/Py4J tới Spark Connect: client gửi plan/command tới server runtime.

Câu hỏi

Spark classic khác Spark Connect ở boundary client-server nào?

Mental model

Trong PySpark classic, Python process thường nói với JVM driver qua Py4J:

Python user code
  -> Py4J gateway
  -> JVM Spark driver
  -> executors

Python có thể cầm handle tới nhiều object JVM. Điều này tiện, nhưng trong môi trường multi-user/governed runtime thì nguy hiểm vì Python có thể gọi sâu vào JVM API surface.

Spark Connect đổi boundary:

Client
  -> gửi unresolved logical plan / request qua protocol
  -> Spark Connect server
  -> Spark runtime/executors

Client không còn cầm trực tiếp SparkContext/JVM handle như classic.

Vì sao liên quan Databricks Runtime

Databricks cần vừa giữ compatibility với Spark classic, vừa hạn chế bypass trong shared/serverless/UC mode. Vì vậy khi đọc snapshot, cần để ý:

  • mode nào còn Py4J/JVM handle;
  • mode nào chuyển sang Spark Connect;
  • sc, spark.sparkContext, RDD API bị chặn ở đâu;
  • Python TripWire/RemoteContext chỉ là UX guard hay security boundary thật;
  • JVM Py4J security manager mới là rào thật hay không.

Đọc tiếp

On this page