Seiring bertambahnya jumlah file dalam kluster Hadoop Distributed File System (HDFS), ukuran heap Java Virtual Machine (JVM) pada NameNode dan DataNode juga perlu ditingkatkan. Tanpa heap yang mencukupi, operasi penulisan baru akan gagal. Topik ini menjelaskan cara menghitung ukuran heap yang diperlukan dan menerapkan konfigurasinya melalui Konsol E-MapReduce (EMR).
Prasyarat
Sebelum memulai, pastikan Anda telah:
Mengakses Konsol EMR dengan izin untuk mengubah konfigurasi layanan kluster.
Mengetahui jumlah file dan jumlah blok data saat ini dari antarmuka pengguna web (UI) HDFS—lihat Akses UI web komponen open source untuk petunjuk membuka UI web HDFS.
Sesuaikan ukuran heap NameNode
Hitung ukuran heap yang direkomendasikan
Gunakan rumus berikut:
Ukuran memori yang direkomendasikan = (Jumlah file dalam jutaan + Jumlah blok data dalam jutaan) × 512 MBContoh: Sebuah kluster memiliki 10 juta file. Semua file berukuran kecil hingga menengah (masing-masing muat dalam satu blok), sehingga jumlah blok juga sama dengan 10 juta. Ukuran heap yang direkomendasikan: (10 + 10) × 512 MB = 10.240 MB.
Tabel berikut menunjukkan ukuran heap yang direkomendasikan untuk jumlah file umum, dengan asumsi sebagian besar file muat dalam satu blok.
| Jumlah file | Ukuran memori yang direkomendasikan (MB) |
|---|---|
| 10.000.000 | 10.240 |
| 20.000.000 | 20.480 |
| 50.000.000 | 51.200 |
| 100.000.000 | 102.400 |
Terapkan konfigurasi
Prosedurnya berbeda tergantung apakah kluster Anda menggunakan high availability (HA).
Kluster HA
Masuk ke Konsol EMR.
Temukan kluster target dan klik Services di kolom Actions.
Pada tab Services, temukan layanan HDFS dan klik Configure.
Pada tab Configure, cari
hadoop_namenode_heapsize.Tetapkan nilai berdasarkan perhitungan Anda.
Mulai ulang NameNode agar perubahan diterapkan.
Kluster non-HA
Masuk ke Konsol EMR.
Temukan kluster target dan klik Services di kolom Actions.
Pada tab Services, temukan layanan HDFS dan klik Configure.
Pada tab Configure, cari
hadoop_namenode_heapsizedanhadoop_secondary_namenode_heapsize.Tetapkan nilai berdasarkan perhitungan Anda.
Mulai ulang NameNode atau Secondary NameNode agar perubahan diterapkan.
Sesuaikan ukuran heap DataNode
Hitung ukuran heap yang direkomendasikan
Kebutuhan heap pada setiap DataNode bergantung pada jumlah replika blok yang disimpan oleh node tersebut, bukan pada jumlah total file. Gunakan rumus berikut:
Jumlah replika per DataNode = Jumlah blok data × 3 / Jumlah DataNode
Ukuran memori yang direkomendasikan = Jumlah replika per DataNode dalam jutaan × 2.048 MBNilai yang direkomendasikan telah memperhitungkan overhead kernel JVM dan memori pekerjaan saat jam puncak, sehingga dapat digunakan langsung dalam kondisi normal.
Contoh: Sebuah kluster menggunakan penyimpanan triplicate, berjalan pada instans Elastic Compute Service (ECS) dari keluarga instans data besar, dan memiliki 6 node inti. Dengan 10 juta file dan 10 juta blok data (semuanya berukuran kecil hingga menengah):
Replika per DataNode: 10.000.000 × 3 / 6 = 5.000.000
Ukuran heap yang direkomendasikan: 5 × 2.048 MB = 10.240 MB
Tabel berikut menunjukkan ukuran heap yang direkomendasikan berdasarkan jumlah replika per DataNode, dengan asumsi sebagian besar file muat dalam satu blok.
| Jumlah replika per DataNode | Ukuran memori yang direkomendasikan (MB) |
|---|---|
| 1.000.000 | 2.048 |
| 2.000.000 | 4.096 |
| 5.000.000 | 10.240 |
Terapkan konfigurasi
Masuk ke Konsol EMR.
Temukan kluster target dan klik Services di kolom Actions.
Pada tab Services, temukan layanan HDFS dan klik Configure.
Pada tab Configure, cari
hadoop_datanode_heapsizedi bagian Configuration Filter.Tetapkan nilai berdasarkan perhitungan Anda.
Mulai ulang DataNode agar perubahan diterapkan.