2011-12-27 1 views
2

알고 싶었습니다 : 동일한 작업이 두 번 제출되면 hadoop mapreduce가 전체 데이터 세트를 다시 처리합니까? 예 : 단어 수 계산 예는 입력 폴더의 각 파일에서 각 단어의 발생을 계산합니다. 해당 폴더에 파일을 추가하고 word count mapreduce 작업을 다시 실행하면 초기 파일을 다시 읽고 다시 매핑하고 다시 줄이겠습니까?Hadoop mapreduce가 전체 데이터 세트를 다시 처리합니까?

그렇다면 새로운 파일 만 처리하고 이전 mapreduce 실행의 '요약'에 추가하도록 hadoop을 구성하는 방법이 있습니까?

모든 생각/도움을 주시면 감사하겠습니다.

+0

감사합니다.그래서 대답은 시스템을 올바르게 설계하는 데 있다고 생각합니다. 다시 한 번 도움을 주셔서 감사합니다. – uri

답변

3

해당 폴더에 파일을 추가하고 단어 카운트 mapreduce 작업을 다시 실행하면 초기 파일을 다시 읽고 다시 매핑하고 다시 줄이겠습니까?

Hadoop은 다시 실행할 때 전체 데이터를 다시 처리합니다. 작업이 성공적으로 완료되면 맵퍼 및 임시 데이터의 출력이 삭제됩니다.

이 경우에만 새 파일을 처리하고 이전 맵리 듀스 실행에서 "요약"에 추가 하둡을 구성하는 방법이있다.

Hadoop과 같은 시나리오는 지원하지 않지만 처리되지 않은 파일이나 새 파일을 확인하는 사용자 지정 InputFormat과 이전 실행에서 요약에 데이터를 추가하는 Cutom OutputFormat을 작성할 수 있습니다. 또는 일단 작업이 실행되면 처리 할 새 파일을 다른 입력 폴더에 넣고 작업이 새 폴더의 파일 만 처리하도록 할 수 있습니다.

맞춤 입력/출력 형식을 만드는 데이 article을 확인하십시오.

정확한 요구 사항이 확실하지 않지만 HStreaming, S4, Twitter Storm 등의 데이터 스트림을 처리하는 프레임 워크를 고려해 볼 수 있습니다.

0

나는 Praveen이 말한 것에 모두 동의합니다. 나는 개인적으로 이것을 나의 클러스터에서 다루는 특정한 방법을 제공 할 것이다.


파일을 HDFS로 푸시 할 때 시스템 시계에 따라 분 단위로 폴더에 넣습니다.

$ hadoop fs -put thisfile1249.txt /tmp/ 
$ hadoop fs -mv /tmp/thisfile1249.txt `date "+/data/%Y/%m/%d/%H/%M/"` 

은의 경로 모습에 무슨 일이 일어나고 있는지 보자 :

$ echo `date "+/data/%Y/%m/%d/%H/%M/"` 
/data/2011/12/27/09/49/ 

이 파일에서오고, 그들은 분에 의해 폴더로 이동된다는 것을 의미합니다. 시간이 단조롭게 증가하기 때문에 폴더를 실행할 때 다시 돌아가서 해당 폴더를 다시 실행할 필요가 없다는 것을 알고 있습니다. 매 시간마다 작업을 실행하려면 입력 경로를 /data/2011/12/27/08으로 지정하면됩니다. 매일 /data/2011/12/26 등이됩니다.

0

하둡 자체는 언급 된 다른 부분과 달리 부분 실행을 지원하지 않습니다. 원하는 기능을 얻을 수 있습니다.지도의 소스로 HBase를 사용하는 경우 - 적절한 필터를 사용하여 스캔을 줄이고 마지막으로 실행 한 것보다 큰 타임 스탬프로 전달하십시오.