รองรับการทํางานพร้อมกันสูงใน Fabric Livy API

การทํางานพร้อมกันสูง (HC) ใน Fabric Livy API ช่วยให้สามารถดําเนินการ Spark แบบขนานที่ปรับขนาดได้สําหรับปริมาณงานที่เน้นระบบอัตโนมัติเป็นอันดับแรก แอปพลิเคชันไคลเอ็นต์สามารถเรียกใช้คําสั่ง Spark หลายรายการพร้อมกันในขณะที่ Fabric จัดการการนําเซสชันกลับมาใช้ใหม่ การแยก การตรวจสอบ และการเรียกเก็บเงิน

เซสชัน Livy ที่มีอยู่และปริมาณงานแบตช์ยังคงทํางานต่อไปโดยไม่มีการแก้ไข

เมื่อใดควรใช้การทํางานพร้อมกันสูง

การใช้งาน Livy มาตรฐานได้รับการปรับให้เหมาะสมสําหรับการดําเนินการตามลําดับหรือการทํางานพร้อมกันต่ํา เมื่อสถานการณ์ระบบอัตโนมัติเติบโตขึ้น คุณต้อง:

  • การดําเนินการ Spark แบบขนาน
  • การใช้ทรัพยากรที่คาดการณ์ได้
  • การแยกระหว่างปริมาณงานที่เกิดขึ้นพร้อมกัน
  • โมเดลการทํางานพร้อมกันที่มีการจัดการที่รวมเข้ากับการรักษาความปลอดภัย การตรวจสอบ และการเรียกเก็บเงินของ Fabric

หากไม่มีการสนับสนุน HC คุณต้องสร้างและจัดการเซสชัน Livy หลายเซสชันด้วยตนเองในฝั่งไคลเอ็นต์ สิ่งนี้จะเพิ่มความซับซ้อนและลดความสามารถในการสังเกต

โมเดลการดําเนินการพร้อมกันสูง

รูปแบบการดําเนินการ HC ทํางานดังนี้:

  1. ลูกค้าได้รับเซสชัน HC
  2. ระบบจะสร้างหรือนําเซสชัน Livy พื้นฐานมาใช้ซ้ํา และสร้าง Spark REPL (Read-Eval-Print Loop)
  3. ไคลเอ็นต์ ดําเนินการคําสั่ง Spark ภายในเซสชัน HC
  4. เซสชัน HC หลายเซสชันสามารถดําเนินการคําสั่งพร้อมกันได้
  5. ไคลเอ็นต์สามารถ ดึงข้อมูลยกเลิก หรือ ลบ เซสชัน HC ได้อย่างอิสระ

แต่ละเซสชัน HC:

  • แมปไปยัง Spark REPL
  • สามารถดําเนินการคําสั่ง Spark ได้อย่างอิสระ
  • แยกจากความล้มเหลวหรือการยกเลิกในเซสชัน HC อื่นๆ

การนําเซสชันกลับมาใช้ใหม่และ sessionTag

เมื่อคุณได้รับเซสชัน HC คุณสามารถเลือกระบุsessionTag

เปิดใช้งานsessionTagการบรรจุเซสชันฝั่งเซิร์ฟเวอร์:

  • ถ้าเซสชัน Livy ที่ใช้งานอยู่สําหรับมี sessionTag อยู่และมีความจุที่พร้อมใช้งาน บริการจะสร้าง Spark REPL ใหม่ภายในเซสชันนั้น
  • หากไม่มีเซสชันที่เหมาะสม เซอร์วิสจะสร้างเซสชัน Livy พื้นฐานใหม่

สังเกตลักษณะสําคัญดังต่อไปนี้:

  • การได้มาซึ่งเซสชัน HC ไม่ใช่ idempotent
  • คําขอรับหลายรายการที่มีเหมือนกันจะsessionTagส่งคืนรหัสเซสชัน HC ที่แตกต่างกัน
  • เซสชัน Livy พื้นฐานเดียวกันอาจยังคงสนับสนุนเซสชัน HC หลายเซสชัน

แนวคิดหลัก

รายการต่อไปนี้อธิบายพารามิเตอร์หลัก:

  • HC ID: ตัวระบุ Fabric สําหรับเซสชันการทํางานพร้อมกันระดับ REPL สูง API ส่งคืน GUID ที่ระบบสร้างขึ้น
  • รหัสเซสชัน Livy: เซสชัน Spark/Livy พื้นฐานที่สามารถโฮสต์ REPL ได้หลายรายการ
  • รหัส REPL: ตัวระบุของ REPL ภายในเซสชัน Livy รหัส REPL แต่ละรหัสจะแมปกับ HC ID
  • sessionTag (ไม่บังคับ): คําใบ้ที่ใช้ในการบรรจุ REPL ลงในเซสชัน Livy ที่มีอยู่เมื่อเป็นไปได้
  • ขีดจํากัด: ปัจจุบันบริการรองรับ REPL สูงสุดห้ารายการต่อเซสชัน Livy การเรียกใช้พร้อมกันอย่างรวดเร็วไปยัง API การรับเซสชัน HC อาจสร้างเซสชัน Livy หลายเซสชัน

รับเซสชัน Spark พร้อมกันสูง

หากมีเซสชัน Livy ที่ใช้งานอยู่แล้วและมี sessionTag สล็อต REPL ที่พร้อมใช้งาน เซอร์วิสจะสร้าง REPL ภายในเซสชันนั้น มิฉะนั้น บริการจะสร้างเซสชัน Livy ใหม่ที่มี REPL อยู่ภายใน

เพย์โหลดคําขอ (HighConcurrencySessionRequest)

เนื้อหาคําขอสําหรับการรับเซสชันการทํางานพร้อมกันสูงประกอบด้วยพารามิเตอร์ต่อไปนี้:

{
  "artifactName": "string",
  "sessionTag": "string",
  "tags": { "key": "value" },
  "name": "string",
  "file": "string",
  "className": "string",
  "args": ["string"],
  "jars": ["string"],
  "files": ["string"],
  "pyFiles": ["string"],
  "archives": ["string"],
  "conf": { "spark.some.config": "value" },
  "driverMemory": "string",
  "driverCores": 1,
  "executorMemory": "string",
  "executorCores": 1,
  "numExecutors": 2
}

โปรดสังเกตสิ่งต่อไปนี้เกี่ยวกับพารามิเตอร์คําขอ:

  • (lakehouse artifactName ) ใช้สําหรับแสดงงาน HC ในศูนย์กลางการตรวจสอบเป็นHC_<LakehouseName>_<LIVY_SESSION_ID>
  • เป็น sessionTag คําใบ้สําหรับการบรรจุ มันไม่ใช่การล็อคที่เข้มงวด คําขอ POST พร้อมกันอย่างรวดเร็วพร้อมสิ่งเดียวกัน sessionTag อาจสร้างเซสชัน Livy หลายเซสชัน
  • API เป็น nonidempotent โดยค่าเริ่มต้น คําขอ POST หลายรายการสามารถให้รหัส HC และ REPL ที่แตกต่างกันได้

เพย์โหลดการตอบสนอง (HighConcurrencySessionResponse)

เนื้อหาการตอบกลับประกอบด้วยฟิลด์ต่อไปนี้:

{
  "id": "string",
  "state": "string",
  "fabricSessionStateInfo": { "state": "string", "errorMessage": null },
  "sessionId": "string | null",
  "workspaceId": "string",
  "artifactId": "string | null",
  "creatorId": "string",
  "createdAt": "ISO 8601",
  "replId": "string | null",
  "sessionTag": "string | null"
}

รหัสตอบกลับ HTTP ที่เป็นไปได้: 200, 400, 401, 404, 409, 500

สําหรับข้อมูลจําเพาะ OpenAPI แบบเต็ม โปรดดู Livy API swagger define ในที่เก็บตัวอย่าง Fabric

Monitoring

งาน HC ปรากฏในฮับการมอนิเตอร์ด้วยชื่อ HC_<LakehouseName>_<LivySessionId> เพื่อรักษาความสอดคล้องกับชนิดงานอื่นๆ รูปแบบการตั้งชื่อนี้ให้การมองเห็นระดับบนสุด แต่จํากัดการยกเลิกระดับ REPL จากพอร์ทัล Fabric

แนวทางปฏิบัติที่ดีที่สุด

พิจารณาแนวทางปฏิบัติที่ดีที่สุดต่อไปนี้เมื่อใช้เซสชันการทํางานพร้อมกันสูง:

  • ใช้เพื่อ sessionTag บรรจุงานที่เกี่ยวข้องลงในเซสชัน Livy ที่ใช้ร่วมกันเมื่อยอมรับได้
  • สํารวจตําแหน่งข้อมูล GET ของเซสชัน HC เพื่อกําหนดว่าเมื่อใด state is Idle และ both sessionIdreplId และ มีการเติมข้อมูล