Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengoptimalkan kinerja untuk EMR operasi Amazon di DynamoDB
EMROperasi Amazon pada tabel DynamoDB dihitung sebagai operasi baca, dan tunduk pada setelan throughput yang disediakan tabel. Amazon EMR mengimplementasikan logikanya sendiri untuk mencoba menyeimbangkan beban pada tabel DynamoDB Anda untuk meminimalkan kemungkinan melebihi throughput yang Anda berikan. Di akhir setiap kueri Hive, Amazon EMR mengembalikan informasi tentang klaster yang digunakan untuk memproses kueri, termasuk berapa kali throughput yang disediakan terlampaui. Anda dapat menggunakan informasi ini, serta CloudWatch metrik tentang throughput DynamoDB Anda, untuk mengelola beban pada tabel DynamoDB Anda dengan lebih baik dalam permintaan berikutnya.
Faktor-faktor berikut mempengaruhi performa kueri Hive ketika bekerja dengan tabel DynamoDB.
Unit kapasitas baca yang ditetapkan
Ketika Anda menjalankan kueri Hive terhadap tabel DynamoDB, Anda harus memastikan bahwa Anda telah menetapkan jumlah unit kapasitas baca yang memadai.
Misalnya, anggaplah bahwa Anda telah menetapkan 100 unit kapasitas baca untuk tabel DynamoDB Anda. Ini akan memungkinkan Anda melakukan 100 baca, atau 409,600 byte, per detik. Jika tabel yang berisi 20GB data (21.474.836.480 byte), dan kueri Hive Anda melakukan pindai tabel penuh, Anda dapat memperkirakan berapa lama kueri dijalankan:
21.474.836.480 / 409.600 = 52.429 detik = 14,56 jam
Satu-satunya cara untuk mengurangi waktu yang diperlukan adalah menyesuaikan unit kapasitas baca pada tabel DynamoDB sumber. Menambahkan lebih banyak node ke EMR cluster Amazon tidak akan membantu.
Dalam output Hive, persentase penyelesaian diperbarui ketika satu proses pemeta atau lebih telah selesai. Untuk tabel DynamoDB yang besar dengan pengaturan Kapasitas Baca ditetapkan yang rendah, output persentase penyelesaian mungkin tidak diperbarui dalam waktu yang lama; dalam kasus di atas, tugas akan muncul menjadi selesai 0% dalam beberapa jam. Untuk status lebih rinci tentang kemajuan pekerjaan Anda, buka EMR konsol Amazon; Anda akan dapat melihat status tugas mapper individual, dan statistik untuk pembacaan data.
Anda juga dapat masuk ke antarmuka Hadoop pada simpul utama dan melihat statistik Hadoop. Ini menunjukkan status tugas peta individu dan beberapa statistik data baca. Untuk informasi selengkapnya, lihat Antarmuka web yang dihosting di node master di Panduan EMR Manajemen Amazon.
Pengaturan persen baca
Secara default, Amazon EMR mengelola beban permintaan terhadap tabel DynamoDB Anda sesuai dengan throughput yang Anda sediakan saat ini. Namun, ketika Amazon EMR mengembalikan informasi tentang pekerjaan Anda yang menyertakan sejumlah besar throughput yang disediakan melebihi respons, Anda dapat menyesuaikan tingkat baca default menggunakan dynamodb.throughput.read.percent
parameter saat menyiapkan tabel Hive. Untuk informasi selengkapnya tentang pengaturan parameter persentase baca, lihat Pilihan Hive.
Pengaturan persentase tulis
Secara default, Amazon EMR mengelola beban permintaan terhadap tabel DynamoDB Anda sesuai dengan throughput yang Anda sediakan saat ini. Namun, ketika Amazon EMR mengembalikan informasi tentang pekerjaan Anda yang menyertakan sejumlah besar throughput yang disediakan melebihi respons, Anda dapat menyesuaikan tingkat penulisan default menggunakan dynamodb.throughput.write.percent
parameter saat menyiapkan tabel Hive. Untuk informasi selengkapnya tentang pengaturan parameter persentase tulis, lihat Pilihan Hive.
Pengaturan durasi coba lagi
Secara default, Amazon EMR menjalankan kembali kueri Hive jika belum mengembalikan hasil dalam dua menit, interval coba ulang default. Anda dapat menyesuaikan interval ini dengan mengatur parameter dynamodb.retry.duration
ketika Anda menjalankan kueri Hive. Untuk informasi selengkapnya tentang pengaturan parameter persentase tulis, lihat Pilihan Hive.
Jumlah tugas peta
Pemeta daemon yang diluncurkan Hadoop untuk memproses permintaan Anda untuk mengekspor dan melakukan data kueri pada data yang disimpan dalam DynamoDB dibatasi pada tingkat baca maksimum 1 MiB per detik untuk membatasi kapasitas baca yang digunakan. Jika Anda memiliki throughput ditetapkan tambahan yang tersedia di DynamoDB, Anda dapat meningkatkan performa ekspor Hive dan operasi kueri dengan meningkatkan jumlah pemeta daemon. Untuk melakukan ini, Anda dapat meningkatkan jumlah EC2 instance di cluster Anda atau menambah jumlah daemon mapper yang berjalan pada setiap instance. EC2
Anda dapat meningkatkan jumlah EC2 instance dalam klaster dengan menghentikan klaster saat ini dan meluncurkannya kembali dengan jumlah instance yang lebih besar. EC2 Anda menentukan jumlah EC2 instance di kotak dialog Konfigurasi EC2 Instans jika Anda meluncurkan klaster dari EMR konsol Amazon, atau dengan ‑‑num-instances
opsi jika Anda meluncurkan klaster dari. CLI
Jumlah tugas peta yang dijalankan pada sebuah instance tergantung pada jenis EC2 instance. Untuk informasi selengkapnya tentang jenis EC2 instans yang didukung dan jumlah mapper yang disediakan masing-masing, lihatKonfigurasi tugas. Di sana, Anda akan menemukan bagian "Konfigurasi Tugas" untuk masing-masing konfigurasi yang didukung.
Cara lain untuk meningkatkan jumlah pemeta daemon adalah dengan mengubah parameter konfigurasi mapreduce.tasktracker.map.tasks.maximum
Hadoop ke nilai yang lebih tinggi. Ini memiliki keuntungan memberi Anda lebih banyak pembuat peta tanpa menambah jumlah atau ukuran EC2 instance, yang menghemat uang Anda. Kerugiannya adalah pengaturan nilai ini terlalu tinggi dapat menyebabkan EC2 instance di cluster Anda kehabisan memori. Untuk mengatur mapreduce.tasktracker.map.tasks.maximum
, luncurkan klaster dan tentukan nilai untuk mapreduce.tasktracker.map.tasks.maximum
sebagai properti dari klasifikasi konfigurasi peta-situs. Ini ditunjukkan dalam contoh berikut. Untuk informasi selengkapnya, lihat Konfigurasikan aplikasi.
{ "configurations": [ { "classification": "mapred-site", "properties": { "mapred.tasktracker.map.tasks.maximum": "10" } } ] }
Permintaan data paralel
Beberapa permintaan data, baik dari lebih dari satu pengguna atau lebih dari satu aplikasi ke satu tabel dapat menguras throughput ditetapkan baca dan performa menjadi lambat.
Durasi proses
Konsistensi data di DynamoDB bergantung pada urutan operasi baca dan tulis pada setiap simpul. Saat kueri Hive sedang berjalan, aplikasi lain mungkin memuat data baru ke dalam tabel DynamoDB atau memodifikasi atau menghapus data yang ada. Dalam hal ini, hasil kueri Hive mungkin tidak akan mencerminkan perubahan yang dilakukan terhadap data saat kueri sedang berjalan.
Hindari throughput yang melebihi
Saat menjalankan kueri Hive terhadap DynamoDB, berhati-hatilah untuk tidak melebihi throughput ditetapkan Anda, karena ini akan menguras kapasitas yang dibutuhkan untuk panggilan aplikasi Anda untuk DynamoDB::Get
. Untuk memastikan bahwa ini tidak terjadi, Anda harus secara teratur memantau volume baca dan pembatasan panggilan aplikasi DynamoDB::Get
dengan memeriksa log dan metrik pemantauan di Amazon. CloudWatch
Waktu permintaan
Melakukan penjadwalan kueri Hive yang mengakses tabel DynamoDB ketika ada permintaan yang lebih rendah pada tabel DynamoDB akan dapat meningkatkan performa. Misalnya, jika sebagian besar pengguna aplikasi Anda tinggal di San Francisco, Anda dapat memilih untuk mengekspor data pada pukul 4 pagi setiap hari. PST, ketika mayoritas pengguna tertidur, dan tidak memperbarui catatan dalam database DynamoDB Anda.
Tabel berbasis waktu
Jika data diatur sebagai serangkaian tabel DynamoDB berbasis waktu, misalnya satu tabel per hari, maka Anda dapat mengekspor data ketika tabel tidak aktif lagi. Anda dapat menggunakan teknik ini untuk membuat cadangan data ke Amazon S3 secara berkelanjutan.
Data yang diarsipkan
Jika Anda berencana untuk menjalankan banyak kueri Hive terhadap data yang disimpan di DynamoDB dan aplikasi Anda dapat mentolerir data yang diarsipkan, Anda mungkin ingin mengekspor data ke atau Amazon HDFS S3 dan menjalankan kueri Hive terhadap salinan data alih-alih DynamoDB. Ini menghemat operasi baca dan throughput ditetapkan Anda.