Topik ini menjelaskan cara mengatasi pengecualian batas Xceiver DataNode.
Jika Anda menerima error berikut, DataNode telah menghabiskan kolam thread Xceiver-nya dan tidak dapat menerima koneksi baca atau tulis konkuren tambahan.
Pesan error
java.io.IOException: Xceiver count xxxx exceeds the limit of concurrent xcievers: xxxxPenyebab
Parameter dfs.datanode.max.transfer.threads mengontrol ukuran kolam thread yang digunakan DataNode untuk memproses aliran data baca dan tulis. Nilai default-nya adalah 4096. Pada beban kerja dengan konkurensi tinggi—seperti banyak pekerjaan baca atau tulis paralel yang berjalan bersamaan—kolam thread tersebut dapat habis, sehingga memicu error di atas.
Solusi
Tingkatkan nilai parameter dfs.datanode.max.transfer.threads dalam konfigurasi layanan Hadoop Distributed File System (HDFS).
Masuk ke Konsol EMR on ECS.
Pada bilah navigasi atas, pilih wilayah tempat kluster Anda berada dan pilih kelompok sumber daya.
Buka tab Configure layanan HDFS:
Pada halaman EMR on ECS, temukan kluster target lalu klik Services di kolom Actions.
Klik tab Services, temukan layanan HDFS, lalu klik Configure.
Pada tab Configure, masukkan
dfs.datanode.max.transfer.threadsdi kotak pencarian untuk menemukan parameter tersebut, lalu tingkatkan nilainya.Nilai awal yang umum digunakan adalah dua kali lipat dari nilai saat ini—misalnya, atur menjadi 8192 atau 16384.