รวบรวมบันทึกแอปพลิเคชัน Apache Spark และเมตริกโดยใช้ Azure Event Hubs (ตัวอย่าง)

ส่วนขยาย emitter ของ Fabric Apache Spark คือไลบรารีที่ช่วยให้แอปพลิเคชัน Apache Spark สามารถปล่อยไฟล์บันทึก บันทึกเหตุการณ์ และเมตริกไปยังปลายทางต่าง ๆ รวมถึง Azure Log Analytics, Azure Storage และ Azure Event Hubs

ในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีการใช้ส่วนขยายตัวปล่อยการวินิจฉัย Fabric Apache Spark เพื่อส่งบันทึกแอปพลิเคชัน Apache Spark บันทึกเหตุการณ์ และเมตริกไปยัง Azure Event Hubs ของคุณ

รวบรวมบันทึกและเมตริกไปยัง Azure Event Hubs

ขั้นตอนที่ 1: สร้างอินสแตนซ์ Azure Event Hubs

เพื่อรวบรวมบันทึกการวินิจฉัยและเมตริก คุณสามารถใช้อินสแตนซ์ Azure Event Hubs ที่มีอยู่ได้ ถ้าคุณไม่มี คุณสามารถสร้าง ฮับเหตุการณ์

ขั้นตอนที่ 2: สร้างสิ่งประดิษฐ์สภาพแวดล้อมผ้าด้วยการกําหนดค่า Apache Spark

ตัวเลือกที่ 1: กําหนดค่าด้วยสตริงการเชื่อมต่อ Azure Event Hubs

  1. สร้างสิ่งประดิษฐ์สภาพแวดล้อม Fabric ใน Fabric

  2. เพิ่มคุณสมบัติ Spark ต่อไปนี้ด้วยค่าที่เหมาะสมลงในสิ่งประดิษฐ์สภาพแวดล้อม หรือเลือก เพิ่มจาก.yml ในริบบอน เพื่อดาวน์โหลดไฟล์ yaml ตัวอย่างซึ่งมีคุณสมบัติต่อไปนี้อยู่แล้ว

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret: <connection-string>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    กรอกพารามิเตอร์ใน <connection-string> ไฟล์การกําหนดค่า สําหรับข้อมูลเพิ่มเติม ดู การกําหนดค่า Azure Event Hubs

ตัวเลือกที่ 2: กําหนดค่าด้วย Azure Key Vault

หมายเหตุ

ปัญหาที่ทราบแล้ว: ไม่สามารถเริ่มเซสชันโดยใช้ตัวเลือกที่ 2 ในการเตรียมใช้งาน ในปัจจุบัน การจัดเก็บข้อมูลลับในชุดเก็บคีย์จะป้องกันไม่ให้เซสชัน Spark เริ่มทํางาน โปรดจัดลําดับความสําคัญของการกําหนดค่าโดยใช้วิธีการที่ระบุไว้ในตัวเลือกที่ 1

ตรวจสอบให้แน่ใจว่าผู้ใช้ที่ส่งแอปพลิเคชัน Apache Spark จะได้รับสิทธิ์ในการอ่านข้อมูลลับ สําหรับข้อมูลเพิ่มเติม ดู ให้การเข้าถึงคีย์ชุดเก็บคีย์ ใบรับรอง และข้อมูลลับด้วยการควบคุมการเข้าถึงตามบทบาทของ Azure

วิธีการกําหนดค่า Azure Key Vault สําหรับการจัดเก็บคีย์พื้นที่ทํางาน:

  1. สร้างและไปที่ Key Vault ของคุณในพอร์ทัล Azure

  2. บนหน้าการตั้งค่าสําหรับชุดเก็บคีย์ เลือกข้อมูลลับ จากนั้นสร้าง/นําเข้า

  3. บนหน้าจอ สร้างข้อมูลลับ ให้เลือกค่าต่อไปนี้:

    • ชื่อ: ป้อนชื่อสําหรับข้อมูลลับ
    • ค่า: ป้อน <connection-string> สําหรับข้อมูลลับ
    • ปล่อยค่าอื่นๆ ไว้เป็นค่าเริ่มต้น จากนั้น เลือก สร้าง
  4. สร้างสิ่งประดิษฐ์สภาพแวดล้อม Fabric ใน Fabric

  5. เพิ่มคุณสมบัติ Spark ต่อไปนี้ หรือเลือก เพิ่มจาก.yml บนริบบอน เพื่อดาวน์โหลด ไฟล์ yaml ตัวอย่าง ซึ่งรวมถึงคุณสมบัติ Spark ต่อไปนี้

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    กรอกพารามิเตอร์ต่อไปนี้ในไฟล์การกําหนดค่า: <AZURE_KEY_VAULT_NAME><AZURE_KEY_VAULT_SECRET_KEY_NAME> สําหรับรายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ ดูที่ การกําหนดค่า Azure Event Hubs

  6. บันทึกและเผยแพร่การเปลี่ยนแปลง

ขั้นตอนที่ 3: แนบวัตถุสภาพแวดล้อมกับสมุดบันทึกหรือข้อกําหนดงาน Spark หรือตั้งค่าเป็นค่าเริ่มต้นของพื้นที่ทํางาน

เมื่อต้องการแนบสภาพแวดล้อมเข้ากับข้อกําหนดงานของสมุดบันทึกหรือ Spark:

  1. นําทางไปยังสมุดบันทึกหรือข้อกําหนดงาน Spark ที่ระบุใน Fabric
  2. เลือก เมนู สภาพแวดล้อม บนแท็บ หน้าแรก และเลือกสภาพแวดล้อมที่มีคุณสมบัติ Spark การวินิจฉัยที่กําหนดค่าไว้
  3. การกําหนดค่าจะถูกนําไปใช้เมื่อคุณเริ่ม เซสชัน Spark

วิธีตั้งค่าสภาพแวดล้อมเป็นค่าเริ่มต้นของพื้นที่ทํางาน:

  1. นําทางไปยังการตั้งค่าพื้นที่ทํางานใน Fabric
  2. ค้นหาการตั้งค่า Spark ในการตั้งค่าพื้นที่ทํางานของคุณ (การตั้งค่าพื้นที่ทํางาน -> วิศวกรข้อมูล ing/วิทยาศาสตร์ -> การตั้งค่า Spark)
  3. เลือกแท็บ สภาพแวดล้อม และเลือกสภาพแวดล้อมที่มีการกําหนดค่าคุณสมบัติ Spark การวินิจฉัย แล้วคลิก บันทึก

หมายเหตุ

เฉพาะผู้ดูแลระบบพื้นที่ทํางานเท่านั้นที่สามารถจัดการการกําหนดค่าพื้นที่ทํางานได้ การเปลี่ยนแปลงที่ทําไว้ที่นี่จะนําไปใช้กับสมุดบันทึกทั้งหมดและข้อกําหนดงาน Spark ที่แนบมากับการตั้งค่าพื้นที่ทํางาน สําหรับข้อมูลเพิ่มเติม ดู การตั้งค่าพื้นที่ทํางานของ Fabric

การกําหนดค่าที่พร้อมใช้งาน

การกำหนดค่า คำอธิบาย
spark.synapse.diagnostic.emitters จำเป็น ชื่อปลายทางที่คั่นด้วยจุลภาคของตัวปล่อยการวินิจฉัย
spark.synapse.diagnostic.emitter.<destination>.type จำเป็นต้องใช้ ประเภทปลายทางที่มีอยู่ภายใน เมื่อต้องการเปิดใช้งานปลายทาง Azure Event Hubs ค่าควรเป็นAzureEventHub
spark.synapse.diagnostic.emitter.<destination>.categories เลือกได้ ประเภทไฟล์บันทึกที่เลือกที่ใช้จุลภาคเป็นตัวคั่น ค่าที่พร้อมใช้งานประกอบด้วย DriverLog, ExecutorLog, EventLogMetrics ถ้าไม่ได้ตั้งค่า ค่าเริ่มต้นคือประเภททั้งหมด
spark.synapse.diagnostic.emitter.<destination>.secret เลือกได้ อินสแตนซ์ Azure Event Hubs สายอักขระการเชื่อมต่อ เขตข้อมูลนี้ควรตรงกับรูปแบบนี้ Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault จําเป็นถ้า .secret ไม่ได้ระบุไว้ ชื่อชุดเก็บคีย์ของ Azure ที่จัดเก็บข้อมูลลับ (สายอักขระการเชื่อมต่อ)
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName จําเป็น ถ้ามี .secret.keyVault การระบุ ชื่อลับชุดเก็บคีย์ของ Azure ที่จัดเก็บข้อมูลลับ (สายอักขระการเชื่อมต่อ)
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match เลือกได้ ชื่อเหตุการณ์ Spark ที่คั่นด้วยจุลภาค คุณสามารถระบุเหตุการณ์ที่จะรวบรวมได้ ตัวอย่าง: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match เลือกได้ ชื่อตัวบันทึก Log4j ที่คั่นด้วยจุลภาค คุณสามารถระบุบันทึกที่จะรวบรวมได้ ตัวอย่าง: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match เลือกได้ ส่วนต่อท้ายของชื่อเมตริก Spark ที่คั่นด้วยจุลภาค คุณสามารถระบุเมตริกที่จะรวบรวมได้ ตัวอย่าง: jvm.heap.used

หมายเหตุ

อินสแตนซ์ Azure Eventhub สายอักขระการเชื่อมต่อ ควรประกอบด้วย EntityPathซึ่งคือชื่อของอินสแตนซ์ Azure Event Hubs

ตัวอย่างข้อมูลบันทึก

นี่คือตัวอย่างบันทึกระเบียนในรูปแบบ JSON:

{
  "timestamp": "2024-09-06T03:09:37.235Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-id>",
  "fabricTenantId": "<my-fabric-tenant-id>",
  "capacityId": "<my-fabric-capacity-id>",
  "artifactType": "SynapseNotebook|SparkJobDefinition",
  "artifactId": "<my-fabric-artifact-id>",
  "fabricWorkspaceId": "<my-fabric-workspace-id>",
  "fabricEnvId": "<my-fabric-environment-id>",
  "executorMin": "<executor-min>",
  "executorMax": "<executor-max>",
  "isHighConcurrencyEnabled": "true|false",
  "properties": {
    // The message properties of logs, events and metrics.
    "timestamp": "2024-09-06T03:09:37.235Z",
    "message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
    "logger_name": "org.apache.spark.storage.BlockManager",
    "level": "INFO",
    "thread_name": "dispatcher-Executor"
    //...
  }
}

พื้นที่ทํางานผ้าที่มีเครือข่ายเสมือนที่มีการจัดการ

สร้างจุดปลายทางส่วนตัวที่มีการจัดการสําหรับ Azure Event Hubs เป้าหมาย สําหรับคําแนะนําโดยละเอียด โปรดดูที่สร้างและใช้จุดสิ้นสุดส่วนตัวที่มีการจัดการใน Microsoft Fabric - Microsoft Fabric

เมื่อปลายทางส่วนตัวที่ได้รับการจัดการได้รับการอนุมัติ ผู้ใช้สามารถเริ่มปล่อยบันทึกและเมตริกไปยังเป้าหมาย Azure Event Hubs ได้

ขั้นตอนถัดไป