แชร์ผ่าน


รวบรวมบันทึกแอปพลิเคชัน Apache Spark และเมตริกของคุณโดยใช้บัญชีที่เก็บข้อมูล Azure (ตัวอย่าง)

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

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

รวบรวมบันทึกและเมตริกไปยังบัญชีเก็บข้อมูล

ขั้นตอนที่ 1: สร้างบัญชีเก็บข้อมูล

เพื่อรวบรวมบันทึกการวินิจฉัยและเมตริก คุณสามารถใช้บัญชีที่เก็บข้อมูล Azure ที่มีอยู่ได้ ถ้าคุณไม่มี คุณสามารถสร้างบัญชีที่เก็บข้อมูล Azure blob หรือสร้างบัญชีเก็บข้อมูลเพื่อใช้กับ Azure Data Lake Storage รุ่น2

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

ตัวเลือกที่ 1: กําหนดค่าด้วย Azure Storage URI และคีย์ Access

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

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

    spark.synapse.diagnostic.emitters: MyStorageBlob
    spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage"
    spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyStorageBlob.uri:  "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>"
    spark.synapse.diagnostic.emitter.MyDestination1.auth: "AccessKey"
    spark.synapse.diagnostic.emitter.MyDestination1.secret: <storage-access-key>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    กรอกพารามิเตอร์ต่อไปนี้ในไฟล์การกําหนดค่า: <my-blob-storage>, <container-name>, <folder-name>, <storage-access-key> สําหรับรายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ ดู การกําหนดค่าที่เก็บข้อมูล Azure

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

หมายเหตุ

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

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

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

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

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

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

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

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

    spark.synapse.diagnostic.emitters: <MyStorageBlob>
    spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage"
    spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyStorageBlob.uri:  "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>"
    spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey"
    spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    กรอกพารามิเตอร์ต่อไปนี้ในไฟล์การกําหนดค่า: <my-blob-storage>, <container-name><folder-name>, , <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME> สําหรับรายละเอียดเพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ ดู การกําหนดค่าที่เก็บข้อมูล Azure

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

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

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

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

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

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

หมายเหตุ

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

ขั้นตอนที่ 4: ดูไฟล์บันทึกในบัญชีที่เก็บข้อมูล Azure

หลังจากส่งงานไปยังเซสชัน Spark ที่กําหนดค่าแล้ว คุณสามารถดูไฟล์บันทึกและเมทริกซ์ในบัญชีเก็บข้อมูลปลายทางได้ รายการบันทึกจะถูกจัดเก็บไว้ในเส้นทางที่สอดคล้องกันโดยยึดตามแอปพลิเคชันอื่นที่ระบุโดย<workspaceId>.<fabricLivyId> ไฟล์บันทึกทั้งหมดอยู่ในรูปแบบบรรทัด JSON (หรือที่เรียกว่า JSON ที่คั่นด้วยตัวคั่นแบบใหม่หรือ ndjson) ซึ่งสะดวกสําหรับการประมวลผลข้อมูล

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

การกำหนดค่า คำอธิบาย
spark.synapse.diagnostic.emitters จำเป็น ชื่อปลายทางที่คั่นด้วยจุลภาคของตัวปล่อยการวินิจฉัย ตัวอย่างเช่น MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type จำเป็นต้องใช้ ประเภทปลายทางที่มีอยู่ภายใน เมื่อต้องการเปิดใช้งานปลายทาง AzureStorage ที่เก็บข้อมูล Azure จําเป็นต้องรวมอยู่ในเขตข้อมูลนี้
spark.synapse.diagnostic.emitter.<destination>.categories เลือกได้ ประเภทไฟล์บันทึกที่เลือกที่ใช้จุลภาคเป็นตัวคั่น ค่าที่พร้อมใช้งานประกอบด้วย DriverLog, ExecutorLog, EventLogMetrics ถ้าไม่ได้ตั้งค่า ค่าเริ่มต้นคือประเภททั้งหมด
spark.synapse.diagnostic.emitter.<destination>.auth จำเป็นต้องใช้ AccessKeyสําหรับการใช้การอนุญาตคีย์การเข้าถึงบัญชีเก็บข้อมูล SAS สําหรับการ อนุญาตลายเซ็นการเข้าถึง ที่ใช้ร่วมกัน
spark.synapse.diagnostic.emitter.<destination>.uri จำเป็นต้องใช้ uri โฟลเดอร์คอนเทนเนอร์ blob ปลายทาง ควรตรงกับรูปแบบhttps://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>
spark.synapse.diagnostic.emitter.<destination>.secret เลือกได้ เนื้อหาลับ (AccessKey หรือ SAS)
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault จําเป็นถ้า .secret ไม่ได้ระบุไว้ ชื่อ ชุดเก็บ คีย์ของ Azure ที่จัดเก็บข้อมูลลับ (AccessKey หรือ SAS)
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName จําเป็น ถ้ามี .secret.keyVault การระบุ ชื่อลับชุดเก็บคีย์ของ Azure ที่จัดเก็บข้อมูลลับ (AccessKey หรือ SAS)
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
spark.fabric.pools.skipStarterPools จำเป็นต้องใช้ คุณสมบัติ Spark นี้ถูกใช้เพื่อบังคับใช้เซสชัน Spark ตามความต้องการ คุณควรตั้งค่า เป็น True เมื่อใช้กลุ่มเริ่มต้นเพื่อทริกเกอร์ไลบรารีเพื่อปล่อยไฟล์บันทึกและเมตริก

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

นี่คือตัวอย่างบันทึกระเบียนในรูปแบบ 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 Blob เป้าหมาย สําหรับคําแนะนําโดยละเอียด โปรดดูที่สร้างและใช้จุดสิ้นสุดส่วนตัวที่มีการจัดการใน Microsoft Fabric - Microsoft Fabric

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

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