Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kesalahan input dan output cluster selama operasi EMR Amazon
Kesalahan berikut umum terjadi dalam operasi input dan output klaster. Gunakan panduan dalam topik ini untuk memecahkan masalah dan memeriksa konfigurasi Anda.
Topik
Apakah jalur Anda ke Amazon Simple Storage Service (Amazon S3) memiliki setidaknya tiga garis miring?
Ketika Anda menentukan bucket Amazon S3, Anda harus menyertakan garis miring yang mengakhiri pada akhir URL. Misalnya, alih-alih mereferensikan bucket sebagai “s3n: //amzn-s3-demo-bucket1", Anda harus menggunakan “s3n: //amzn-s3-demo-bucket1/”, jika tidak, Hadoop gagal cluster Anda dalam banyak kasus.
Apakah Anda mencoba untuk melintasi direktori input secara rekursif?
Hadoop tidak mencari direktori input untuk file secara rekursif. Jika Anda memiliki struktur direktori seperti direktorias /corpus/01/01.txt, /corpus/01/02.txt, /corpus/02/01.txt, etc. and you specify /corpus/ as the input parameter to your cluster, Hadoop does not find any input files because the /corpus/kosong dan Hadoop tidak memeriksa isi subdirektori. Demikian pula, Hadoop tidak memeriksa subdirektori bucket Amazon S3 secara rekursif.
File input harus langsung dalam direktori input atau bucket Amazon S3 yang Anda tentukan, bukan di dalam subdirektori.
Apakah direktori output Anda sudah ada?
Jika Anda menentukan jalur output yang sudah ada, Hadoop biasanya akan menggagalkan klaster. Ini berarti bahwa jika Anda menjalankan sebuah klaster satu kali dan kemudian menjalankannya lagi dengan parameter yang persis sama, klaster tersebut mungkin akan berjalan pada awalnya namun tidak akan berjalan kembali; setelah dijalankan pertama kali, tersedia jalur output dan karenanya menyebabkan yang dijalankan setelah itu gagal.
Apakah Anda mencoba menentukan sumber daya menggunakan URL HTTP?
Hadoop tidak menerima lokasi sumber daya yang ditentukan menggunakan prefiks http://. Anda tidak dapat mereferensikan sumber daya menggunakan URL HTTP. Sebagai contoh, menggunakan http://mysite/myjar.jar sebagai parameter JAR akan menyebabkan klaster gagal.
Apakah Anda mereferensikan bucket Amazon S3 menggunakan format nama yang tidak valid?
Jika Anda mencoba menggunakan nama bucket seperti “amzn-s3-demo-bucket1.1" dengan Amazon EMR, klaster Anda akan gagal karena Amazon EMR mengharuskan nama bucket menjadi nama host RFC 2396 yang valid; nama tidak dapat diakhiri dengan nomor. Selain itu, karena persyaratan Hadoop, nama bucket Amazon S3 yang digunakan dengan Amazon EMR harus berisi huruf kecil, angka, titik (.), dan tanda hubung (-) saja. Untuk informasi selengkapnya tentang cara memformat nama bucket Amazon S3, lihat Pembatasan dan batasan bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Apakah Anda mengalami kesulitan memuat data ke atau dari Amazon S3?
Amazon S3 adalah sumber input dan output paling populer untuk Amazon EMR. Kesalahan umum yang terjadi adalah memperlakukan Amazon S3 seperti yang Anda memperlakukan sistem file yang umum. Ada perbedaan antara Amazon S3 dan sistem file yang perlu Anda pertimbangkan saat menjalankan klaster Anda.
-
Jika terjadi kesalahan internal di Amazon S3, aplikasi Anda perlu menangani ini secara perlahan dan mencoba kembali operasi.
-
Jika panggilan ke Amazon S3 memakan waktu terlalu lama untuk dikembalikan, aplikasi Anda mungkin perlu mengurangi frekuensi pemanggilan Amazon S3.
-
Mencantumkan semua objek dalam bucket Amazon S3 adalah panggilan yang mahal. Aplikasi Anda harus meminimalisir jumlah hal ini dilakukan.
Ada beberapa cara Anda dapat meningkatkan cara klaster Anda berinteraksi dengan Amazon S3.
-
Luncurkan klaster Anda menggunakan versi rilis terbaru dari Amazon EMR.
-
Gunakan S3 DistCp untuk memindahkan objek masuk dan keluar dari Amazon S3. S3 DistCp mengimplementasikan penanganan kesalahan, percobaan ulang, dan back-off agar sesuai dengan persyaratan Amazon S3. Untuk informasi selengkapnya, lihat Salinan terdistribusi menggunakan S3 DistCp.
-
Desain aplikasi Anda dengan mempertimbangkan eventual consistency. Gunakan HDFS untuk penyimpanan data menengah saat klaster berjalan dan Amazon S3 hanya untuk memasukkan data awal dan mengeluarkan hasil akhir.
-
Jika klaster Anda akan melakukan 200 atau lebih transaksi per detik ke Amazon S3, kontak support
untuk mempersiapkan bucket Anda untuk transaksi per detik yang lebih besar dan pertimbangkan untuk menggunakan strategi partisi kunci yang dijelaskan di Tips & trik performa Amazon S3 . -
Mengatur konfigurasi Hadoop pengaturan io.file.buffer.size menjadi 65536. Hal ini menyebabkan Hadoop untuk menghabiskan lebih sedikit waktu mencari melalui objek Amazon S3.
-
Pertimbangkan menonaktifkan fitur eksekusi spekulatif Hadoop jika klaster Anda mengalami masalah konkurensi Amazon S3. Hal ini juga berguna ketika Anda memecahkan masalah klaster lambat. Anda melakukan ini dengan menetapkan properti
mapreduce.map.speculative
danmapreduce.reduce.speculative
menjadifalse
. Ketika Anda meluncurkan klaster, Anda dapat mengatur nilai ini menggunakan klasifikasi konfigurasimapred-env
. Untuk informasi selengkapnya, lihat Mengkonfigurasi Aplikasi dalam Panduan Rilis Amazon EMR. -
Jika Anda menjalankan klaster Hive, lihat Apakah Anda mengalami kesulitan memuat data ke atau dari Amazon S3 ke Hive?.
Untuk informasi tambahan, lihat praktik terbaik kesalahan Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.