2011-03-22 2 views
1

hadoop에서 정적 객체를 사용하려고했습니다. 이 개체는 모두 map 및 reduce에서 사용됩니다. 내 프로그램 :map/reduce의 정적 객체

  1. 100000 줄, 따라서 100000 개의지도를 읽습니다. 각각의 매퍼
  2. 이 객체 플러스 각 감속기 1.
  3. 의 정적 특성이 정적 특성

시험 결과는, 정적에 따라서, 감속기의 값 V2를 기입 감속기가 시작되기 전에 매퍼의 객체가 정리되었습니다. 또한 감속기의 정적 객체는 다른 작업 추적기간에 동일하지 않은 것으로 보이므로 다른 감속기의 결과를 누적 할 수 없습니다.

제 질문은 어떻게 정적 객체를 사용하고 다른 tasktrackers간에 동일하게 유지할 수 있습니까?

+0

제 질문을 첨부했습니다. – Qinghao

답변

3

기본적으로 각 매퍼와 축소 기는 자체 JVM에서 실행되므로 분명히 통계는 전체 클러스터에서 전역 적이 지 않습니다. 전체 개수를 누적하려는 경우 Hadoop 카운터를 사용하십시오.

reporter.incrCounter("My custom counters", "my counter", 1); 
+0

카운터가 유용하지 않을 수도 있습니다. 내가 필요로하는 것은 단순히 K/V 쌍이 아닌, 어떤 속성과 방법을 포함한보다 복잡한 객체입니다. – Qinghao

+0

이 URL을 확인하십시오 : http : //hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/mapreduce/Counter.html 이제이 객체를 검색 할 때마다이 객체를 HDFS로 직렬화 할 계획입니다 , 그리고 내가이 객체를 읽을 때마다 그것을 deseriablize. – Qinghao

관련 문제