Memantau aplikasi Apache Spark dengan analitik log Azure (pratinjau)
Ekstensi emiter diagnostik Fabric Apache Spark adalah pustaka yang memungkinkan aplikasi Apache Spark memancarkan log, log peristiwa, dan metrik ke beberapa tujuan, termasuk analitik log Azure, penyimpanan Azure, dan hub peristiwa Azure.
Dalam tutorial ini, Anda mempelajari cara mengonfigurasi dan memancarkan log dan metrik Spark ke analitik Log di Fabric. Setelah dikonfigurasi, Anda dapat mengumpulkan dan menganalisis metrik dan log aplikasi Apache Spark di ruang kerja Analitik log Anda.
Mengonfigurasi informasi ruang kerja
Ikuti langkah-langkah ini untuk mengonfigurasi informasi yang diperlukan di Fabric.
Langkah 1: Buat ruang kerja Analitik Log
Konsultasikan salah satu sumber daya berikut untuk membuat ruang kerja ini:
- Membuat ruang kerja di portal Microsoft Azure.
- Membuat ruang kerja dengan Azure CLI.
- Membuat dan mengonfigurasikan ruang kerja di Azure Monitor menggunakan PowerShell.
Langkah 2: Membuat artefak lingkungan Fabric dengan konfigurasi Apache Spark
Untuk mengonfigurasi Spark, buat Artefak Lingkungan Fabric dan pilih salah satu opsi berikut:
Opsi 1: Mengonfigurasi dengan ID dan Kunci Ruang Kerja Analitik Log
Membuat Artefak Lingkungan Fabric di Fabric
Tambahkan properti Spark berikut dengan nilai yang sesuai ke artefak lingkungan, atau pilih Tambahkan dari .yml di pita untuk mengunduh file yaml sampel, yang sudah berisi properti yang diperlukan.
<LOG_ANALYTICS_WORKSPACE_ID>
: ID ruang kerja Analitik Log.<LOG_ANALYTICS_WORKSPACE_KEY>
: Kunci Analitik Log. Untuk menemukannya, di portal Azure, buka Kunci utama Agen ruang>kerja Azure Log Analytics>.
spark.synapse.diagnostic.emitters: LA spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics" spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics" spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID> spark.synapse.diagnostic.emitter.LA.secret: <LOG_ANALYTICS_WORKSPACE_KEY> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Atau, untuk menerapkan konfigurasi yang sama dengan Azure Synapse, gunakan properti berikut, atau pilih Tambahkan dari .yml di pita untuk mengunduh file yaml sampel.
spark.synapse.logAnalytics.enabled: "true" spark.synapse.logAnalytics.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID> spark.synapse.logAnalytics.secret: <LOG_ANALYTICS_WORKSPACE_KEY> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Simpan dan terbitkan perubahan.
Opsi 2: Mengonfigurasi dengan Azure Key Vault
Catatan
Masalah umum: Tidak dapat memulai sesi menggunakan Opsi 2 secara provisikan. Saat ini, menyimpan rahasia di Key Vault mencegah sesi Spark dimulai. Harap prioritaskan mengonfigurasinya menggunakan metode yang diuraikan dalam Opsi 1.
Anda perlu memberikan izin baca rahasia kepada pengguna yang akan mengirimkan aplikasi Apache Spark. Untuk informasi selengkapnya, lihat Memberikan akses ke kunci Key Vault, sertifikat, dan rahasia dengan kontrol akses berbasis peran Azure.
Untuk mengonfigurasi Azure Key Vault guna menyimpan kunci ruang kerja, ikuti langkah-langkahnya:
Buka Key Vault Anda di portal Azure.
Pada halaman pengaturan untuk brankas kunci, pilih Rahasia, lalu Buat/Impor.
Pada layar Buat rahasia, Masukkan nilai berikut ini:
- Nama: Masukkan nama untuk rahasia tersebut. Untuk default, masukkan
SparkLogAnalyticsSecret
. - Nilai: Masukkan
<LOG_ANALYTICS_WORKSPACE_KEY>
untuk rahasia tersebut. - Biarkan nilai lainnya mengikuti default. Lalu pilih Buat.
- Nama: Masukkan nama untuk rahasia tersebut. Untuk default, masukkan
Membuat Artefak Lingkungan Fabric di Fabric
Tambahkan properti Spark berikut dengan nilai terkait ke artefak lingkungan, atau Pilih Tambahkan dari .yml pada pita di artefak Lingkungan untuk mengunduh file yaml sampel yang mencakup properti Spark berikut.
<LOG_ANALYTICS_WORKSPACE_ID>
: ID ruang kerja Analitik Log.<AZURE_KEY_VAULT_NAME>
: Nama brankas kunci yang Anda konfigurasikan.<AZURE_KEY_VAULT_SECRET_KEY_NAME>
(opsional): Nama rahasia di brankas kunci untuk kunci ruang kerja. Default adalahSparkLogAnalyticsSecret
.
// Spark properties for LA spark.synapse.diagnostic.emitters LA spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics" spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics" spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID> spark.synapse.diagnostic.emitter.LA.secret.keyVault: <AZURE_KEY_VAULT_NAME> spark.synapse.diagnostic.emitter.LA.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Atau, untuk menerapkan konfigurasi yang sama dengan Azure Synapse, gunakan properti berikut, atau pilih Tambahkan dari .yml di pita untuk mengunduh file yaml sampel.
spark.synapse.logAnalytics.enabled: "true" spark.synapse.logAnalytics.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID> spark.synapse.logAnalytics.keyVault.name: <AZURE_KEY_VAULT_NAME> spark.synapse.logAnalytics.keyVault.key.secret: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Catatan
Anda juga dapat menyimpan ID ruang kerja di Key Vault. Atur nama rahasia ke
SparkLogAnalyticsWorkspaceId
, atau gunakan konfigurasispark.synapse.logAnalytics.keyVault.key.workspaceId
untuk menentukan nama rahasia ID ruang kerja.Untuk daftar konfigurasi Apache Spark, lihat Konfigurasi Apache Spark yang tersedia
Simpan dan terbitkan perubahan.
Langkah 3: Lampirkan artefak lingkungan ke notebook atau definisi pekerjaan spark, atau atur sebagai default ruang kerja
Untuk melampirkan lingkungan ke notebook atau definisi pekerjaan Spark:
- Navigasi ke notebook atau definisi pekerjaan Spark Anda di Fabric.
- Pilih menu Lingkungan pada tab Beranda dan pilih lingkungan yang dikonfigurasi.
- Konfigurasi akan diterapkan setelah memulai sesi Spark.
Untuk mengatur lingkungan sebagai default ruang kerja:
- Navigasikan ke pengaturan Ruang Kerja di Fabric.
- Temukan pengaturan Spark di pengaturan Ruang Kerja Anda (Pengaturan ruang kerja -> Rekayasa Data/Sains -> Pengaturan Spark)
- Pilih tab Lingkungan dan pilih lingkungan dengan properti spark diagnostik yang dikonfigurasi, dan klik Simpan.
Catatan
Hanya admin ruang kerja yang dapat mengelola konfigurasi. Nilai akan berlaku untuk notebook dan definisi pekerjaan Spark yang dilampirkan ke Pengaturan Ruang Kerja. Untuk detail selengkapnya, lihat Pengaturan Ruang Kerja Fabric.
Mengirimkan aplikasi Apache Spark dan menampilkan log dan metriknya
Untuk mengirimkan aplikasi Apache Spark:
Kirim aplikasi Apache Spark, dengan lingkungan terkait, yang dikonfigurasi pada langkah sebelumnya. Anda dapat menggunakan salah satu cara berikut untuk melakukannya:
- Jalankan notebook di Fabric.
- Kirimkan pekerjaan batch Apache Spark melalui definisi kerja Apache Spark.
- Jalankan aktivitas Spark Anda di Alur Anda.
Buka ruang kerja Analitik Log khusus, lalu lihat metrik dan log aplikasi saat aplikasi Apache Spark mulai berjalan.
Tulis log aplikasi kustom
Anda dapat menggunakan pustaka Apache Log4j untuk menulis log kustom. Berikut adalah contoh untuk Scala dan PySpark:
Contoh Scala:
%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
1/0
} catch {
case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()
Contoh PySpark:
%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
Mengkueri data dengan Kusto
Untuk mengkueri peristiwa Apache Spark:
SparkListenerEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Untuk mengkueri driver aplikasi Spark dan log eksekutor:
SparkLoggingEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Untuk mengkueri metrik Apache Spark:
SparkMetrics_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc
Batasan data
Fabric mengirim data log ke Azure Monitor dengan menggunakan HTTP Data Collector API. Data yang diposting ke API pengumpulan Data Azure Monitor tunduk pada batasan tertentu:
- Maksimum 30 MB per postingan ke Azure Monitor Data Collector API. Ini adalah batas ukuran untuk satu posting. Jika ukuran data dari satu kiriman melebihi 30 MB, Anda harus membagi data menjadi bagian yang lebih kecil dan mengirimkannya secara bersamaan.
- Maksimal 32 KB untuk nilai bidang. Jika nilai bidang lebih besar dari 32 KB, data akan dipotong.
- Jumlah maksimal bidang yang direkomendasikan untuk jenis tertentu adalah 50. Ini adalah batas praktis dari perspektif penggunaan dan pengalaman pencarian.
- Tabel di ruang kerja Analitik Log hanya mendukung hingga 500 kolom.
- Maksimal 45 karakter untuk nama kolom.
Membuat atau mengelola pemberitahuan
Pengguna dapat mengkueri untuk mengevaluasi metrik dan log pada frekuensi yang ditetapkan dan memberi pemberitahuan berdasarkan hasilnya. Untuk informasi selengkapnya, lihat Membuat, menampilkan, dan mengelola pemberitahuan log menggunakan Azure Monitor.
Ruang kerja Fabric dengan jaringan virtual terkelola
Azure Log Analytics saat ini tidak dapat dipilih sebagai tujuan untuk log Spark dan emisi metrik di jaringan virtual terkelola karena titik akhir privat terkelola tidak mendukung Analitik Log sebagai sumber data.