복붙노트

[HADOOP] 특정 주어진 파일을 HDFS에 저장하기 위해 명시 적으로 datanode를 정의하는 방법은 무엇입니까?

HADOOP

특정 주어진 파일을 HDFS에 저장하기 위해 명시 적으로 datanode를 정의하는 방법은 무엇입니까?

특정 파일 블록을 저장하기 위해 Hadoop 클러스터의 datanode를 명시 적으로 정의하는 .xml 파일과 같은 스크립트 또는 비슷한 파일을 작성하고 싶습니다. 예 : 4 개의 슬레이브 노드와 1 개의 마스터 노드 (hadoop 클러스터에 총 5 개의 노드)가 있다고 가정합니다. file01 (크기 = 120MB)과 file02 (크기 = 160MB)의 두 파일이 있습니다. 기본 블록 크기 = 64MB

이제 slave 노드 1에 file01의 두 블록 중 하나를 저장하고 slave 노드 2에 다른 블록을 저장하려고합니다. 마찬가지로 slave1 노드에서 file02의 세 블록 중 하나, slave 노드 3에서 두 번째 블록 및 slave 노드 4에서 세 번째 블록 중 하나입니다. 그래서, 제 질문은 어떻게해야합니까?

사실 한 가지 방법이 있습니다 : 파일을 저장할 때마다 conf / slave 파일을 변경하십시오. 하지만 난 이걸하고 싶지 않아. 그래서, 이것을 할 또 다른 해결책이 있습니까 ?? 나는 나의 요점을 분명히하기를 희망한다. 당신의 친절한 응답을 기다리고 있습니다 .. !!!

해결법

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

    1.여기서 요구하는 것을 달성 할 수있는 방법이 없습니다. 이름 노드는 랙 구성, 복제 요소 및 노드 가용성에 따라 데이터 노드에 블록을 복제하므로 두 개의 특정 데이터 노드에서 블록을 관리하더라도 이러한 노드 중 하나가 작동 중지되면 이름 노드는 블록을 다른 노드로 복제합니다.

    여기서 요구하는 것을 달성 할 수있는 방법이 없습니다. 이름 노드는 랙 구성, 복제 요소 및 노드 가용성에 따라 데이터 노드에 블록을 복제하므로 두 개의 특정 데이터 노드에서 블록을 관리하더라도 이러한 노드 중 하나가 작동 중지되면 이름 노드는 블록을 다른 노드로 복제합니다.

    귀하의 요구 사항은 또한 데이터 중복을 제공하지 않는 복제 계수 1을 가정합니다 (데이터 노드를 잃어 버리면 나쁜 것입니다).

    클러스터를 균등하게 분산시키고 자한다면 namenode가 블록 할당을 관리하고 주기적으로 밸런서를 사용하도록하십시오.

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

    2.NameNode는 블록 배치를 결정할 수있는 최종 권한입니다. 이 알고리즘을 플러그 할 수 있도록하기위한 요구 사항에 대해서는 Jira가 있습니다. https://issues.apache.org/jira/browse/HDFS-385 하지만 불행히도 그것은 0.21 버전에 있습니다. 이것은 생산이 아닙니다 (전혀 작동하지는 않습니다). 연구 국가에 있다면 알고리즘을 0.21에 연결 한 다음 0.23이 생산되기를 기다리거나 지금 필요하다면 0.20으로 코드를 다운 그레이드 할 것을 제안합니다.

    NameNode는 블록 배치를 결정할 수있는 최종 권한입니다. 이 알고리즘을 플러그 할 수 있도록하기위한 요구 사항에 대해서는 Jira가 있습니다. https://issues.apache.org/jira/browse/HDFS-385 하지만 불행히도 그것은 0.21 버전에 있습니다. 이것은 생산이 아닙니다 (전혀 작동하지는 않습니다). 연구 국가에 있다면 알고리즘을 0.21에 연결 한 다음 0.23이 생산되기를 기다리거나 지금 필요하다면 0.20으로 코드를 다운 그레이드 할 것을 제안합니다.

  3. from https://stackoverflow.com/questions/10810845/how-to-explicilty-define-datanodes-to-store-a-particular-given-file-in-hdfs by cc-by-sa and MIT license