2011-10-03 9 views
14

파일을 HDFS로 업로드 할 때 복제 계수를 1로 설정하면 파일 분할이 하나의 단일 시스템에 있거나 분할이 네트워크의 여러 시스템에 분산됩니다. 에 따르면HDFS 복제 요소

hadoop fs -D dfs.replication=1 -copyFromLocal file.txt /user/ablimit 

답변

11

Hadoop : Definitive Guide

하둡의 기본 전략은 클라이언트와 동일한 노드의 첫 번째 복제본을 배치하는 것입니다

이 (클러스터 외부 실행 고객을 위해, 노드가 무작위로 선택 , 비록 시스템 은 너무 꽉 찼거나 너무 바쁜 노드를 선택하지 않습니다. 두 번째 복제본은 첫 번째 (오프 랙)와 다른 랙에 에 배치되며 무작위로 선택됩니다. 세 번째 복제본은 두 번째와 동일한 랙에 에 있지만 임의로 선택한 다른 노드에 배치됩니다. 추가 복제본 은 클러스터의 임의 노드에 배치되지만 시스템은 같은 랙에 너무 많은 복제본을 배치하지 않습니다.

이 논리는 다른 노드 간의 네트워크 채터를 줄이면 유용합니다. 그러나이 책은 2009 년에 출간되었으며 Hadoop 프레임 워크에 많은 변화가있었습니다.

나는 그것이 클라이언트가 Hadoop 노드와 같은지 아닌지에 달려 있다고 생각한다. 클라이언트가 Hadoop 노드 인 경우 모든 분할은 동일한 노드에 있습니다. 이는 클러스터에 여러 개의 노드가 있더라도 더 나은 읽기/쓰기 처리량을 제공하지 않습니다. 클라이언트가 Hadoop 노드와 같지 않으면 각 분할에 대해 임의로 노드가 선택되므로 분할은 클러스터의 노드에 분산됩니다. 이제는 읽기/쓰기 처리량이 향상되었습니다.

여러 노드에 쓰기의 한 가지 이점은 노드 중 하나가 작동 중지 되더라도 두 개의 분할이 작동하지 않지만 나머지 분할에서 일부 데이터는 어떻게 든 복구 될 수 있다는 것입니다.

+0

마지막 진술이 정확하지 않다고 생각합니다. 노드 중 하나에 장애가 발생하여 입력 데이터 블록이있는 경우 NameNode가 파일을 복구하거나 나머지 블록 (복제 인수가 1이라고 가정)을 넘겨 줄 수있는 방법이 없습니다 –

+0

# 뇌우, 절대적으로 맞습니다. –

+0

차단 위치 선택 전략은 hadoop 문서에서 다르게 문서화됩니다. https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Replica_Placement:_The_First_Baby_Steps를 확인하십시오. –

1

복제를 1로 설정하면 클라이언트 노드, 즉 파일을 업로드하는 노드에만 파일이 나타납니다.

+1

이것은 클라이언트 노드가 DataNode 서비스도 실행하기 때문에 _ 사실입니다. –

+0

클라이언트 로컬 데이터 노드가 꽉 찼을 때도 마찬가지입니까? 다른 DN을 사용하는 것과 반대되는 복사가 실패합니까? – Wheezil

0
  • 클러스터가 단일 노드 인 경우 파일을 업로드하면 블록 크기에 따라 파일이 유출되어 단일 시스템에 남습니다.
  • 클러스터가 다중 노드 인 경우 파일을 업로드하면 블록 크기에 따라 파일이 유출되고 클러스터의 다른 데이터 노드에 파이프 라인을 통해 배포되고 NameNode가 클러스터에서 데이터를 이동할 위치를 결정합니다.

복제 자 인자가 2 인 경우 HDFS 복제 요소를 사용하여 데이터 복사본을 만듭니다. 즉, HDFS에 업로드하는 모든 데이터에 복사본이 생성됩니다.

+0

hdfs-site에서 복제 인수 값을 변경하면 어떨까요?xml 파일을 hdfs에 업로드 한 후 시스템이 자동으로 복제 할 것인지 또는 hdfs balancer 명령을 실행해야합니까? –