복붙노트

[HADOOP] 어떻게 매퍼 또는 감속기는 HDFS에 데이터를 기록?

HADOOP

어떻게 매퍼 또는 감속기는 HDFS에 데이터를 기록?

맵리 듀스 프로그램에서, 우리는 단지 출력 경로 FileOutputFormat.setOutputPath를 설정하고 매퍼 또는 감속기의 context.write (키, 값)을 사용하여 HDFS 파일에 결과를 쓰기;

파일 쓰기 개념은 실제로 어떻게 작동 하는가?

또는

응용 프로그램이 다음 완료되면 그것은 copyFromLocal을 할 것인가?

또는

각 매퍼 또는 감속기에 대한 로컬 파일 시스템의 임시 파일을 생성?

http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0

해결법

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

    1.기록은 바이트 스트림에 기록하고 HDFS에 디스크에 주기적으로 플러시됩니다. 그것은 매우 비용이 많이 드는 작업이 될 것처럼 각 레코드는 개별적으로 기록되지 않습니다. 또한 데이터는 다시 로컬 파일 시스템에 기록되지 않습니다 그것은 매우 비용이 많이 드는 작업이 될 것입니다.

    기록은 바이트 스트림에 기록하고 HDFS에 디스크에 주기적으로 플러시됩니다. 그것은 매우 비용이 많이 드는 작업이 될 것처럼 각 레코드는 개별적으로 기록되지 않습니다. 또한 데이터는 다시 로컬 파일 시스템에 기록되지 않습니다 그것은 매우 비용이 많이 드는 작업이 될 것입니다.

    내가 하둡의 일에 대한 질문이있을 때마다, 나는 그것의 오픈 소스 특성을 활용하여 소스 코드를 탐구하는 경향이있다. TextOutputFormat 및 FSDataOutputStream -이 경우 데이터를 출력 할 때 사용하는 클래스에서 살펴 봐야 할 것입니다.

  2. from https://stackoverflow.com/questions/28564358/how-mapper-or-reducer-writes-data-to-hdfs by cc-by-sa and MIT license