HDFS에서 블록을 3개를 기본으로 하는 이유에 대해 찾다가 Quora의 좋은 답글이 있어 요약 해보았다.
다음과 같은 이유로 이상적인 복제 블록은 개수는 3개 이다.
- 하나의 복제본이 손상되어 액세스 할 수 없는 경우 또 다른 복제본으로 부터 읽을 수 있다.
- NameNode에게 경고를 보내고 실패한 노드의 복제본을 새 노드로 복구하는데 충분한 시간이 있다.
- 해당 시간에 두번째 노드가 계획되지 않아 실패한 경우에도 중요한 데이터를 처리할 수 있다.
- Hadoop Rack awareness 시나리에도 적용
- 따라서 3개를 복제 하는 요인은 모든 상황에서 적절하게 잘 작동하며 데이터를 과도하게 복제하지 않고 3개 미만의 복제본은 데이터 복구시 어려울 수 있다.
- 사용자 데이터의 복제본은 HDFS 클러스터의 다른 시스템에 생성된다. 따라서 클러스터의 시스템이 다운될 때마다 동일한 데이터 사본이 작성된 다른 시스템에서 데이터를 액세스 할 수 있고 만약 갑자기 하나의 시스템이 실패하면 HDFS는 클러스터의 다른 사용 가능한 시스템에서 데이터 복제본을 작성하여 복제 요소를 유지한다.
- 하나의 클러스터가 사라지거나 손상된 경우 두번째 클러스터의 데이터를 데이터로 복구할 수 있고 하나의 복사본이 단일 네트워크의 한 클러스터에 보관되고 다른 사본은 다른 네트워크의 다른 클러스터에 보관될 수 있다.