รวบรวมบันทึกแอปพลิเคชัน 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
สร้างสิ่งประดิษฐ์สภาพแวดล้อม Fabric ใน Fabric
เพิ่มคุณสมบัติ 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 สําหรับการจัดเก็บคีย์พื้นที่ทํางาน:
สร้างและไปที่ Key Vault ของคุณในพอร์ทัล Azure
บนหน้าการตั้งค่าสําหรับชุดเก็บคีย์ เลือกข้อมูลลับ จากนั้นสร้าง/นําเข้า
บนหน้าจอ สร้างข้อมูลลับ ให้เลือกค่าต่อไปนี้:
- ชื่อ: ป้อนชื่อสําหรับข้อมูลลับ
- ค่า: ป้อน
<storage-access-key>
สําหรับข้อมูลลับ - ปล่อยค่าอื่นๆ ไว้เป็นค่าเริ่มต้น จากนั้น เลือก สร้าง
สร้างสิ่งประดิษฐ์สภาพแวดล้อม Fabric ใน Fabric
เพิ่มคุณสมบัติ 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บันทึกและเผยแพร่การเปลี่ยนแปลง
ขั้นตอนที่ 3: แนบสิ่งประดิษฐ์สภาพแวดล้อมกับสมุดบันทึกหรือข้อกําหนดงานของ Spark หรือตั้งค่าเป็นค่าเริ่มต้นของพื้นที่ทํางาน
เมื่อต้องการแนบสภาพแวดล้อมเข้ากับข้อกําหนดงานของสมุดบันทึกหรือ Spark:
- นําทางไปยังสมุดบันทึกหรือข้อกําหนดงาน Spark ที่ระบุใน Fabric
- เลือก เมนู สภาพแวดล้อม บนแท็บ หน้าแรก และเลือกสภาพแวดล้อมที่มีคุณสมบัติ Spark การวินิจฉัยที่กําหนดค่าไว้
- การกําหนดค่าจะถูกนําไปใช้เมื่อคุณเริ่ม เซสชัน Spark
วิธีตั้งค่าสภาพแวดล้อมเป็นค่าเริ่มต้นของพื้นที่ทํางาน:
- นําทางไปยังการตั้งค่าพื้นที่ทํางานใน Fabric
- ค้นหาการตั้งค่า Spark ในการตั้งค่าพื้นที่ทํางานของคุณ (การตั้งค่าพื้นที่ทํางาน -> วิศวกรข้อมูล ing/วิทยาศาสตร์ -> การตั้งค่า Spark)
- เลือกแท็บ สภาพแวดล้อม และเลือกสภาพแวดล้อมที่มีการกําหนดค่าคุณสมบัติ 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 , EventLog Metrics ถ้าไม่ได้ตั้งค่า ค่าเริ่มต้นคือประเภททั้งหมด |
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 ได้