Throughput yang disediakan DynamoDB - Amazon DynamoDB

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

Throughput yang disediakan DynamoDB

Saat Anda mengeluarkan pernyataan HiveQL terhadap tabel DynamoDB eksternal, kelas DynamoDBStorageHandler membuat permintaan DynamoDB API level rendah yang sesuai, yang menggunakan throughput yang disediakan. Jika kapasitas baca atau tulis pada tabel DynamoDB tidak memadai, permintaan akan mengalami throttling, sehingga performa HiveQL menjadi lambat. Oleh karena itu, Anda harus memastikan bahwa tabel tersebut memiliki kapasitas throughput yang memadai.

Misalnya, anggaplah bahwa Anda telah menetapkan 100 unit kapasitas baca untuk tabel DynamoDB Anda. Ini akan memungkinkan Anda membaca 409.600 byte per detik (100 × 4 KB ukuran unit kapasitas baca). Sekarang, anggaplah bahwa tabel berisi 20 GB data (21.474.836.480 byte) dan Anda ingin menggunakan pernyataan SELECT untuk memilih semua data menggunakan HiveQL. Anda dapat memperkirakan durasi yang diperlukan untuk menjalankan kueri seperti ini:

21.474.836.480 / 409.600 = 52.429 detik = 14,56 jam

Dalam skenario ini, tabel DynamoDB adalah kemacetan. Menambahkan lebih banyak simpul Amazon EMR tidak akan membantu, karena throughput Hive dibatasi hanya 409.600 byte per detik. Satu-satunya cara untuk mengurangi waktu yang dibutuhkan untuk pernyataan SELECT adalah dengan meningkatkan kapasitas baca tabel DynamoDB yang disediakan.

Anda dapat melakukan penghitungan serupa untuk memperkirakan durasi yang diperlukan untuk memuat data secara massal ke dalam tabel eksternal Hive yang dipetakan ke tabel DynamoDB. Tentukan jumlah total unit kapasitas tulis yang dibutuhkan per item (kurang dari 1KB = 1, 1-2KB = 2, dll), dan kalikan dengan jumlah item yang akan dimuat. Ini akan menghasilkan jumlah unit kapasitas tulis yang diperlukan. Bagi angka tersebut dengan jumlah alokasi unit kapasitas tulis per detik. Ini akan menghasilkan jumlah detik yang dibutuhkan untuk memuat tabel.

Anda harus secara teratur memantau CloudWatch metrik untuk tabel Anda. Untuk gambaran umum singkat di konsol DynamoDB, pilih tabel Anda lalu pilih tab Metrik. Dari sini, Anda dapat melihat unit kapasitas baca dan tulis yang dikonsumsi dan permintaan baca dan tulis yang mengalami throttling.

Kapasitas baca

Amazon EMR mengelola beban permintaan terhadap tabel DynamoDB Anda, sesuai dengan pengaturan throughput yang ditetapkan tabel ini. Namun, jika Anda melihat sejumlah besar pesan ProvisionedThroughputExceeded dalam output tugas, Anda dapat menyesuaikan tingkat baca default. Untuk melakukannya, Anda dapat memodifikasi variabel konfigurasi dynamodb.throughput.read.percent. Anda dapat menggunakan perintah SET untuk mengatur variabel ini pada prompt perintah Hive:

SET dynamodb.throughput.read.percent=1.0;

Variabel ini hanya berlaku untuk sesi Hive saat ini. Jika Anda keluar dari Hive dan kembali lagi setelah beberapa saat, dynamodb.throughput.read.percent akan kembali ke nilai default.

Nilai dynamodb.throughput.read.percent bisa antara 0.1 dan 1.5, secara inklusif. 0.5 mewakili tingkat baca default, yang berarti bahwa Hive akan mencoba untuk menggunakan setengah dari kapasitas baca tabel. Jika Anda meningkatkan nilai di atas 0.5, Hive akan meningkatkan tingkat permintaan; menurunkan nilai di bawah 0.5 akan menurunkan tingkat permintaan baca. (Tingkat baca sebenarnya akan bervariasi, tergantung pada faktor-faktor seperti apakah ada distribusi kunci seragam dalam tabel DynamoDB.)

Jika Anda memperhatikan bahwa Hive sering menghabiskan kapasitas baca tabel yang disediakan, atau jika permintaan baca Anda terlalu dibatasi, cobalah mengurangi dynamodb.throughput.read.percent di bawah 0.5. Jika Anda memiliki kapasitas baca yang memadai dalam tabel dan ingin operasi HiveQL lebih responsif, Anda dapat mengatur nilai di atas 0.5.

Kapasitas tulis

Amazon EMR mengelola beban permintaan terhadap tabel DynamoDB Anda, sesuai dengan pengaturan throughput yang ditetapkan tabel ini. Namun, jika Anda melihat sejumlah besar pesan ProvisionedThroughputExceeded dalam output tugas, Anda dapat menyesuaikan tingkat tulis default. Untuk melakukannya, Anda dapat memodifikasi variabel konfigurasi dynamodb.throughput.write.percent. Anda dapat menggunakan perintah SET untuk mengatur variabel ini pada prompt perintah Hive:

SET dynamodb.throughput.write.percent=1.0;

Variabel ini hanya berlaku untuk sesi Hive saat ini. Jika Anda keluar dari Hive dan kembali lagi setelah beberapa saat, dynamodb.throughput.write.percent akan kembali ke nilai default.

Nilai dynamodb.throughput.write.percent bisa antara 0.1 dan 1.5, secara inklusif. 0.5 mewakili tingkat tulis default, yang berarti bahwa Hive akan mencoba untuk menggunakan setengah dari kapasitas tulis tabel. Jika Anda meningkatkan nilai di atas 0.5, Hive akan meningkatkan tingkat permintaan; menurunkan nilai di bawah 0.5 akan menurunkan tingkat permintaan tulis. (Tingkat tulis sebenarnya akan bervariasi, tergantung pada faktor-faktor seperti apakah ada distribusi kunci seragam dalam tabel DynamoDB.)

Jika Anda memperhatikan bahwa Hive sering menghabiskan kapasitas tulis tabel yang disediakan, atau jika permintaan tulis Anda terlalu dibatasi, cobalah mengurangi dynamodb.throughput.write.percent di bawah 0.5. Jika Anda memiliki kapasitas yang memadai dalam tabel dan ingin operasi HiveQL lebih responsif, Anda dapat mengatur nilai di atas 0.5.

Ketika Anda menulis data ke DynamoDB menggunakan Hive, pastikan jumlah unit kapasitas tulis lebih besar dari jumlah pemeta di klaster. Sebagai contoh, pertimbangkan sebuah klaster Amazon EMR yang terdiri dari 10 simpul m1.xlarge. Jenis simpul m1.xlarge menyediakan 8 tugas pemeta, sehingga klaster akan memiliki total 80 pemeta (10 × 8). Jika tabel DynamoDB Anda memiliki kurang dari 80 unit kapasitas tulis, maka operasi tulis Hive mungkin akan menggunakan semua throughput tulis untuk tabel itu.

Untuk menentukan jumlah pemeta untuk jenis simpul Amazon EMR, lihat Konfigurasi Tugas di Panduan Developer Amazon EMR.

Untuk informasi selengkapnya tentang pemeta, lihat Menyesuaikan pemeta.