복붙노트

[HADOOP] 입력 형식이 Hadoop의 MapReduce에서 데이터 로컬 리티 구현을 담당합니까?

HADOOP

입력 형식이 Hadoop의 MapReduce에서 데이터 로컬 리티 구현을 담당합니까?

Hadoop의 Map / Reduce 프레임 워크와 관련하여 데이터 지역성을 이해하려고합니다. 특히 데이터 구성 요소를 처리하는 구성 요소를 이해하려고합니다 (즉, 입력 형식입니까?)

야후의 개발자 네트워크 페이지는 "하둡 프레임 워크는 분산 파일 시스템의 지식을 사용하여 데이터 / 레코드 위치에 근접하여 이러한 프로세스를 예약한다"고 밝혔다. 이것은 HDFS 입력 형식이 이름 노드를 쿼리하여 원하는 데이터를 포함하는 노드를 결정하고 가능한 경우 해당 노드에서 맵 작업을 시작한다는 것을 의미합니다. 어떤 레코드가 어떤 지역에 서비스를 제공하고 있는지를 쿼리함으로써 HBase와 유사한 접근 방식을 취할 수 있다고 상상할 수 있습니다.

개발자가 자체 입력 형식을 작성하면 데이터 지역성을 구현해야합니까?

해결법

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

    1.네가 옳아. FileInputFormat 클래스와 getSplits () 메소드를보고 있다면 블록 위치를 검색합니다.

    네가 옳아. FileInputFormat 클래스와 getSplits () 메소드를보고 있다면 블록 위치를 검색합니다.

    BlockLocation [] blkLocations = fs.getFileBlockLocations (파일, 0, 길이);

    이것은 FileSystem 쿼리를 의미합니다. 이것은 JobClient 내에서 발생하며 결과는 SequenceFile에 기록됩니다 (실제로는 원시 바이트 코드 일뿐입니다). 따라서 Jobtracker는 작업을 초기화하는 동안 나중에이 파일을 읽고 작업을 입력 분할에 지정하는 것입니다.

    그러나 데이터 분배는 NameNodes 작업입니다.

    지금 귀하의 질문에 : 일반적으로 FileInputFormat에서 확장됩니다. 따라서 InputSplit 목록을 반환해야하며 초기화 단계에서 분할 위치를 설정해야합니다. 예를 들어 FileSplit은 다음과 같습니다.

    public FileSplit(Path file, long start, long length, String[] hosts)
    

    실제로 데이터 지역 자체를 구현하지 않고 분할을 찾을 수있는 호스트를 알려줍니다. FileSystem 인터페이스로 쉽게 쿼리 할 수 ​​있습니다.

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

    2.데이터 로컬 리티는 HDFS와 InputFormat에 의해 공동으로 결정된다는 것을 이해하고 있습니다. 전자는 (랙 인식을 통해) 데이터 노드에 걸쳐 HDFS 블록의 위치를 ​​결정하고 저장하는 반면, 후자는 어떤 블록과 어떤 블록이 연관되는지를 결정합니다. 작업 추적기는 각 분할에 연관된 블록 (1 개의 분할 대 1 개의 작업 매핑)이 작업 추적기에 로컬인지 확인하여 어느 분할이 어떤 맵 작업에 전달되는지 최적화하려고합니다.

    데이터 로컬 리티는 HDFS와 InputFormat에 의해 공동으로 결정된다는 것을 이해하고 있습니다. 전자는 (랙 인식을 통해) 데이터 노드에 걸쳐 HDFS 블록의 위치를 ​​결정하고 저장하는 반면, 후자는 어떤 블록과 어떤 블록이 연관되는지를 결정합니다. 작업 추적기는 각 분할에 연관된 블록 (1 개의 분할 대 1 개의 작업 매핑)이 작업 추적기에 로컬인지 확인하여 어느 분할이 어떤 맵 작업에 전달되는지 최적화하려고합니다.

    불행하게도, 지역성을 보장하기위한 이러한 접근 방식은 동종 클러스터에서 유지되지만 동종이 아닌 클러스터, 즉 데이터 노드 당 다른 크기의 하드 디스크가있는 클러스터에서 분류됩니다. 이것에 대해 더 깊이 파고 싶다면이 논문 (이종 hadoop 클러스터의 데이터 배치를 통해 MapReduce 성능 개선)을 읽고 질문과 관련된 여러 주제를 다루십시오.

  3. from https://stackoverflow.com/questions/6128276/is-the-input-format-responsible-for-implementing-data-locality-in-hadoops-mapre by cc-by-sa and MIT license