2017-05-02 2 views
0

this Cloudera 블로그 게시물 Replication 섹션에 복제가 NameNode에서 메모리를 사용하지 않는다고 설명했습니다. 그러나 NameNode는 각 파일과 복제본에 대한 정보를 주 메모리에 저장한다는 것을 알고 있기 때문에 회의적입니다. 그렇다면 복제 필요 여부에 상관없이 메모리 요구 사항은 어떻게됩니까? 물리적 메모리가상 메모리 (나는 단지 여기 네임 노드에 대해 이야기하고있다) 물리적 메모리의 측면에서Hadoop의 복제본에 대해 NameNode에 메모리가 필요함

이 있기 때문에

답변

1

음 메모리 소비가, 당신이 무슨 뜻인지에 따라 달라집니다의 클라우 데라의 블로그입니다 (예를 들어 재시작 후 연결할 때) 네임 노드와 통신하는 것이 데이타 노드의 책임이기 때문에 올바른 블록인지 확인하십시오. 네임 노드는 파일 시스템 구조 만 디스크에 저장합니다 (fsimage 및 파일 편집). 당신은 당신이 (RAM의 FS 구조를 유지하는 구성 요소입니다) FSNamesystem이에 대한 참조를 가지고있는 소스 코드에서 명확하게 볼 수 있습니다에 대한 가상 메모리을 이야기 할 때

지금 상황은 약간 다릅니다 BlockManager. BlockManager 자체는 BlocksMap에 대한 참조를 유지합니다. 문서에 따르면 해당 블록이있는 데이터 노드 목록이 유지 관리됩니다.

이 클래스는 블록에서 메타 데이터로 맵핑을 유지 관리합니다. 블록의 메타 데이터에는 현재 해당 블록이 속한 blockCollection과 해당 블록을 저장하는 데이터 노드가 포함됩니다.

BlockManager의 소스 코드를 통해 이동하는 경우가 명확하게 BlocksMap 어디에 사용되는 것을 볼 수 있습니다.

Cloudera의 사람들은 대규모 계산에서 경험을 쌓았고 영향을 측정했기 때문에이 구조의 크기는 Namenode가주의해야하는 나머지 메타 데이터와 비교할 때 중요하지 않습니다. 의.

관련 문제