복붙노트

[HADOOP] 맵 태스크 출력이 HDFS가 아닌 로컬 디스크에 기록되는 이유는 무엇입니까?

HADOOP

맵 태스크 출력이 HDFS가 아닌 로컬 디스크에 기록되는 이유는 무엇입니까?

시험을 준비 중이며 강의 노트에 다음과 같은 질문이 있습니다.

Why Map tasks outputs are written to the local disk and not to HDFS?

내 생각은 다음과 같습니다.

다른 가능한 이유는 무엇입니까? 대답이 합리적입니까?

해결법

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

    1.당신의 추론은 정확합니다. 그러나 몇 가지 요점을 추가하고 싶습니다. 맵 출력이 hdfs에 쓰여지는 경우. 이제 hdfs에 쓰는 것은 로컬 디스크에 쓰는 것과는 다릅니다. 적어도 dfs.replication.min 사본이 hdfs에 작성되도록하는 네임 노드와 관련된 프로세스입니다. 또한 namenode는 백그라운드 스레드를 실행하여 복제 된 블록 아래에 추가 사본을 만듭니다. 사용자가 중간에 작업을 종료하거나 작업이 실패했다고 가정합니다. hdfs에는 중간 파일이 많이있어 수동으로 삭제해야 할 이유가 없습니다. 이 프로세스가 너무 여러 번 발생하면 클러스터의 성능이 저하되고 성능이 저하됩니다. Hdfs는 추가 및 빈번한 삭제에 최적화되어 있습니다. 또한 맵 단계에서 작업이 실패하면 종료 전에 정리를 수행합니다. hdfs 인 경우 삭제 프로세스에서 namenode는 적절한 데이터 노드에 블록 삭제 메시지를 보내야합니다. 이로 인해 해당 블록이 무효화되고 blocksMap에서 제거됩니다. 정리가 실패하고 아무런 이득도 얻지 못한 작업이 너무 많았습니다 !!

    당신의 추론은 정확합니다. 그러나 몇 가지 요점을 추가하고 싶습니다. 맵 출력이 hdfs에 쓰여지는 경우. 이제 hdfs에 쓰는 것은 로컬 디스크에 쓰는 것과는 다릅니다. 적어도 dfs.replication.min 사본이 hdfs에 작성되도록하는 네임 노드와 관련된 프로세스입니다. 또한 namenode는 백그라운드 스레드를 실행하여 복제 된 블록 아래에 추가 사본을 만듭니다. 사용자가 중간에 작업을 종료하거나 작업이 실패했다고 가정합니다. hdfs에는 중간 파일이 많이있어 수동으로 삭제해야 할 이유가 없습니다. 이 프로세스가 너무 여러 번 발생하면 클러스터의 성능이 저하되고 성능이 저하됩니다. Hdfs는 추가 및 빈번한 삭제에 최적화되어 있습니다. 또한 맵 단계에서 작업이 실패하면 종료 전에 정리를 수행합니다. hdfs 인 경우 삭제 프로세스에서 namenode는 적절한 데이터 노드에 블록 삭제 메시지를 보내야합니다. 이로 인해 해당 블록이 무효화되고 blocksMap에서 제거됩니다. 정리가 실패하고 아무런 이득도 얻지 못한 작업이 너무 많았습니다 !!

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

    2.귀중한 클러스터 대역폭을 사용하지 않기 때문입니다. 이것을 데이터 지역성 최적화라고합니다. 그러나 때때로 맵 태스크의 입력 분할을 위해 HDFS 블록 복제본을 호스팅하는 모든 노드가 다른 맵 태스크를 실행 중이므로 작업 스케줄러는 블록 중 하나와 동일한 랙에있는 노드에서 무료 맵 슬롯을 찾습니다. 때때로 이것이 불가능하더라도 랙 외부 노드가 사용되어 랙 간 네트워크 전송이 발생합니다.

    귀중한 클러스터 대역폭을 사용하지 않기 때문입니다. 이것을 데이터 지역성 최적화라고합니다. 그러나 때때로 맵 태스크의 입력 분할을 위해 HDFS 블록 복제본을 호스팅하는 모든 노드가 다른 맵 태스크를 실행 중이므로 작업 스케줄러는 블록 중 하나와 동일한 랙에있는 노드에서 무료 맵 슬롯을 찾습니다. 때때로 이것이 불가능하더라도 랙 외부 노드가 사용되어 랙 간 네트워크 전송이 발생합니다.

    "Hadoop The Definitive Guide 4 edition"에서 발췌

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

    3.맵 출력을 로컬 파일 시스템에 쓰는 것에 대해 알고있는 점이 있습니다. 모든 매퍼의 출력이 결국 병합되고 감속기 단계 이전의 셔플 링 및 정렬 단계에 대한 입력을했습니다.

    맵 출력을 로컬 파일 시스템에 쓰는 것에 대해 알고있는 점이 있습니다. 모든 매퍼의 출력이 결국 병합되고 감속기 단계 이전의 셔플 링 및 정렬 단계에 대한 입력을했습니다.

  4. from https://stackoverflow.com/questions/23578418/why-map-tasks-outputs-are-written-to-the-local-disk-and-not-to-hdfs by cc-by-sa and MIT license