복붙노트

[HADOOP] hdfs는 저장할 데이터 노드를 어떻게 선택합니까?

HADOOP

hdfs는 저장할 데이터 노드를 어떻게 선택합니까?

제목에서 알 수 있듯이 클라이언트가 파일을 hdfs에 쓰도록 요청하면 HDFS 또는 이름 노드가 파일을 저장할 데이터 노드를 어떻게 선택합니까?  hdfs가 너무 큰 경우이 파일의 모든 블록을 동일한 노드 또는 동일한 랙의 일부 노드에 저장하려고합니까?  hdfs는 파일을 원하는 데이터 노드에 저장할 수있는 API를 제공합니까?

해결법

  1. ==============================

    1.데이터 노드를 선택하는 코드는 ReplicationTargetChooser.chooseTarget () 함수에 있습니다.

    데이터 노드를 선택하는 코드는 ReplicationTargetChooser.chooseTarget () 함수에 있습니다.

    의견은 다음과 같이 말합니다 :

    원하는 데이터 노드에 파일을 저장하는 애플리케이션 용 API를 제공하지 않습니다.

  2. ==============================

    2.HDFS에는 BlockPlacementPolicyDefault가 있습니다. 자세한 내용은 API 설명서를 확인하십시오. 사용자 지정 동작을 위해 BlockPlacementPolicy를 확장 할 수 있어야합니다.

    HDFS에는 BlockPlacementPolicyDefault가 있습니다. 자세한 내용은 API 설명서를 확인하십시오. 사용자 지정 동작을 위해 BlockPlacementPolicy를 확장 할 수 있어야합니다.

    게재 위치 동작이 특정 데이터 노드에만 해당해서는 안됩니다. 이것이 HDFS가 실패하고 확장 가능하도록 만드는 이유입니다.

  3. ==============================

    3.다른 사람이 차트를 선호하는 경우 그림 (소스)이 있습니다.

    다른 사람이 차트를 선호하는 경우 그림 (소스)이 있습니다.

  4. ==============================

    4.이제 Hadoop-385 패치를 사용하여 동일한 노드에 파일의 모든 블록을 배치 할 수 있도록 블록 배치 정책을 선택할 수 있습니다 (복제 된 노드의 경우처럼). 이 주제에 관해이 블로그를 읽으십시오 - 댓글 섹션을보십시오.

    이제 Hadoop-385 패치를 사용하여 동일한 노드에 파일의 모든 블록을 배치 할 수 있도록 블록 배치 정책을 선택할 수 있습니다 (복제 된 노드의 경우처럼). 이 주제에 관해이 블로그를 읽으십시오 - 댓글 섹션을보십시오.

  5. ==============================

    5.

    namenode가 데이터 노드에 데이터 저장을 지시 할 때이를 볼 수 있습니다. 첫 번째 복제본은 로컬 시스템에 저장되고 다른 두 개의 복제본은 다른 랙에 작성됩니다.

    복제본이 실패하면 다른 복제본에서 데이터가 저장됩니다. 모든 복제본이 실패 할 확률은 자고있는 동안 머리에 팬이 떨어지는 것과 같습니다. 즉, 기회가 아주 적습니다.

  6. from https://stackoverflow.com/questions/13129599/how-does-hdfs-choose-a-datanode-to-store by cc-by-sa and MIT license