Optimalkan penggunaan layanan - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Optimalkan penggunaan layanan

Pertimbangan tingkat layanan mencakup jumlah beban kerja yang Anda jalankan per akun, kuota layanan tidak hanya untuk Athena, tetapi di seluruh layanan, dan pemikiran tentang cara mengurangi kesalahan 'kehabisan sumber daya'.

Mengoperasikan beberapa beban kerja dalam akun yang sama

Athena menggunakan kuota untuk membatasi konkurensi kueri dan tingkat permintaan API di tingkat akun. Melebihi kuota ini dapat menyebabkan kueri gagal selama eksekusi atau pada waktu pengiriman. Untuk informasi lebih lanjut tentang kuota ini, lihatService Quotas.

Jika Anda mengoperasikan beberapa beban kerja dalam AWS akun yang sama, beban kerja Anda bersaing untuk mendapatkan kuota tingkat akun yang sama. Misalnya, jika satu beban kerja mengalami ledakan kueri yang tidak terduga, Anda mungkin mengalami pembatasan pengiriman kueri atau waktu antrian yang meningkat.

Kami menyarankan Anda menggunakan CloudWatch untuk memantau penggunaan layanan Anda melalui grafik dan dasbor. Anda juga dapat mengonfigurasi CloudWatch alarm yang mengingatkan Anda saat penggunaan mendekati kuota layanan untuk kueri bersamaan, sehingga Anda dapat mengambil tindakan sebelum mencapai batas kuota. Untuk informasi selengkapnya, lihat Pantau metrik penggunaan Athena dengan CloudWatch.

Untuk mengontrol konkurensi kueri dan mengisolasi beban kerja dalam akun Anda, gunakan reservasi kapasitas. Reservasi kapasitas menyediakan kapasitas pemrosesan kueri khusus dalam satu akun. Kapasitas diukur dalam Unit Pemrosesan Data (DPUs) dan dapat ditambahkan atau dihapus untuk menambah atau mengurangi konkurensi kueri, masing-masing. Reservasi kapasitas memungkinkan Anda untuk mengisolasi beban kerja dalam akun Anda dari satu sama lain dengan menetapkan kapasitas ke satu atau beberapa kelompok kerja. Untuk informasi selengkapnya, lihat Kelola kapasitas pemrosesan kueri.

Meskipun memisahkan beban kerja ke dalam AWS akun yang berbeda mungkin berguna untuk tujuan organisasi (seperti mengisolasi pengembangan dari lingkungan produksi), pendekatan ini tidak menyediakan cara yang dapat diskalakan untuk meningkatkan konkurensi kueri. Sebagai gantinya, gunakan reservasi kapasitas untuk mengelola dan menskalakan kebutuhan pemrosesan kueri Anda dalam satu akun.

Pertimbangkan kuota di layanan lain

Ketika Athena menjalankan kueri, ia dapat memanggil layanan lain yang memberlakukan kuota. Selama eksekusi kueri, Athena dapat melakukan panggilan API ke, Amazon S3 AWS Glue Data Catalog, dan layanan AWS lain seperti IAM dan. AWS KMS Jika Anda menggunakan kueri federasi, Athena juga menelepon. AWS Lambda Semua layanan ini memiliki batas dan kuota sendiri yang dapat dilampaui. Ketika eksekusi kueri menemukan kesalahan dari layanan ini, gagal dan menyertakan kesalahan dari layanan sumber. Kesalahan yang dapat dipulihkan dicoba ulang, tetapi kueri masih bisa gagal jika masalah tidak teratasi dengan sendirinya tepat waktu. Pastikan untuk membaca pesan kesalahan secara menyeluruh untuk menentukan apakah pesan tersebut berasal dari Athena atau dari layanan lain. Beberapa kesalahan yang relevan tercakup dalam bagian tuning kinerja ini.

Untuk informasi selengkapnya tentang mengatasi kesalahan yang disebabkan oleh kuota layanan Amazon S3, lihat Hindari memiliki terlalu banyak file nanti di dokumen ini. Untuk informasi selengkapnya tentang pengoptimalan kinerja Amazon S3, lihat Pola desain praktik terbaik: mengoptimalkan kinerja Amazon S3 di Panduan Pengguna Amazon S3.

Mengurangi kesalahan 'kehabisan sumber daya'

Athena menjalankan kueri di mesin kueri terdistribusi. Saat Anda mengirimkan kueri, perencana kueri mesin Athena memperkirakan kapasitas komputasi yang diperlukan untuk menjalankan kueri dan menyiapkan sekelompok node komputasi yang sesuai. Beberapa query seperti query DDL berjalan hanya pada satu node. Kueri kompleks pada kumpulan data besar berjalan pada cluster yang jauh lebih besar. Node seragam, dengan konfigurasi memori, CPU, dan disk yang sama. Athena meningkatkan, bukan meningkatkan, untuk memproses pertanyaan yang lebih menuntut.

Terkadang permintaan kueri melebihi sumber daya yang tersedia untuk cluster yang menjalankan kueri. Ketika ini terjadi, kueri gagal dengan kesalahan Sumber daya yang habis Kueri pada faktor skala ini.

Sumber daya yang paling sering habis adalah memori, tetapi dalam kasus yang jarang terjadi juga bisa berupa ruang disk. Kesalahan memori biasanya terjadi ketika mesin melakukan fungsi gabungan atau jendela, tetapi mereka juga dapat terjadi dalam jumlah dan agregasi yang berbeda.

Bahkan jika kueri gagal dengan kesalahan 'kehabisan sumber daya' sekali, itu mungkin berhasil ketika Anda menjalankannya lagi. Eksekusi kueri tidak deterministik. Faktor-faktor seperti berapa lama waktu yang dibutuhkan untuk memuat data dan bagaimana dataset menengah didistribusikan melalui node dapat menghasilkan penggunaan sumber daya yang berbeda. Misalnya, bayangkan kueri yang menggabungkan dua tabel dan memiliki kemiringan berat dalam distribusi nilai untuk kondisi gabungan. Kueri semacam itu dapat berhasil sebagian besar waktu tetapi kadang-kadang gagal ketika nilai yang paling umum akhirnya diproses oleh node yang sama.

Untuk mencegah kueri Anda melebihi sumber daya yang tersedia, gunakan kiat penyetelan kinerja yang disebutkan dalam dokumen ini. Khususnya, untuk tips tentang cara mengoptimalkan kueri yang menghabiskan sumber daya yang tersedia, lihat Optimalkan bergabungKurangi ruang lingkup fungsi jendela, atau hapus, danOptimalkan kueri dengan menggunakan perkiraan.