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, DynamoDBStorageHandler
kelas membuat permintaan DynamoDB tingkat rendah yang sesuai, yang menggunakan throughput yang disediakan. API 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. Tidak akan membantu menambahkan lebih banyak EMR node Amazon, 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 pemuatan permintaan terhadap tabel DynamoDB Anda, sesuai dengan pengaturan throughput yang disediakan tabel. 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 pemuatan permintaan terhadap tabel DynamoDB Anda, sesuai dengan pengaturan throughput yang disediakan tabel. 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. Misalnya, pertimbangkan EMR cluster Amazon yang terdiri dari 10 node 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 pemetaan untuk jenis EMR node Amazon, lihat Konfigurasi Tugas di Panduan EMR Pengembang Amazon.
Untuk informasi selengkapnya tentang pemeta, lihat Menyesuaikan pemeta.