NameNode 프로세스는 JVM(Java Virtual Machine)에서 실행되며, NameNode에서 생성된 Java 객체는 JVM(Java Virtual Memory)에서 관리됩니다. 파일이나 디렉터리가 생성되면 힙 메모리에 inode 객체와 블록 객체가 생성됩니다.
네임스페이스로 관리되는 자바 객체의 크기는 150바이트에 가깝다. 초기에는 객체 크기가 작았기 때문에 상당한 양의 객체를 파일 시스템에 저장할 수 있었다.
이제 namnode 힙 크기를 조정한다고 가정해 보겠습니다.
네임노드 힙 크기 조정은 HDFS의 파일 수를 기반으로 해야 합니다.
링크에 정의된 힙 크기 및 파일 수를 나타내는 테이블 -https://medium.com/@iacomini.riccardo/hadoop-namenode-garbage-collector-tuning-7f6a029e9012
이제 HDFS에 1,000,000개의 파일이 있다고 가정합니다.
테이블 이름에 따르면 노드 힙은 3379M이어야 합니다.
그러나 HDFS에는 복제 요소가 있습니다. 실제로 복제 요소가 3이면 3000000개의 파일이 있습니다.
그렇다면 네임노드 힙 크기를 캡처하기 위해 복제 요소를 고려해야 합니까?
아니면 3000000개의 파일을 기반으로 네임노드 힙을 찾아야 합니까?