2012-06-05 7 views
0

저는 Hadoop에 Java MapReduce 프로그램을 작성하고 있으며 모든 감속기는 정적 XML 파일 (값 목록에 규칙을 적용하는 것에 대한 비즈니스 로직이 포함되어 있음)에 대한 액세스 권한이 있어야합니다. 이 파일을 분산 캐시에 저장하고 분산 캐시 API를 사용하여 모든 감속기에서 액세스 (직렬화)하기로했습니다. 아직 구현하지는 못했지만 HDFS/분산 모드에서이 기능을 사용할 때 API는 간단합니다. 그러나 테스트 목적으로 의사 배포 독립형 모드에서 활용할 수 있습니까? 그것은 어떻게 작동할까요?독립 실행 형 모드에서 Hadoop의 분산 캐시를 사용할 수 있습니까?

또한 모든 감속기에서 파일을 직렬화하는 것이 바람직하지 않습니까? 저는 감속기에 "전역 정적 데이터"를 배포하는 다른 방법에 대한 제안을 위해 열려 있습니다.

감사합니다.

+0

참조 - http://stackoverflow.com/questions/3210222/distributed-cache 예 분산 캐시는 모든 작업에서 일부 데이터를 사용할 수 있도록하기 위해 설계되었습니다. –

답변

1

예, 실제 클러스터에서와 동일한 방식으로 작동합니다.

분산 캐시를 수정하지 않은 경우 사용하는 것이 좋습니다. 다른 대안은 XML을 변경해야 할 때 융통성이 없을 때 작업 코드를 포함하는 jar에 해당 데이터를 압축하는 것입니다 (여전히 jar 파일을 변경할 수는 있지만 깨끗한 방법은 아닙니다.)

+0

감사합니다. Arnon. 분산 된 캐시를 사용하면 어떤 파일 데이터 크기라고하니 나쁜 생각입니까? mappers 및 reducers가 검색 할 약 140K 행 (20MB)을 포함하는 파일을 저장합니다. Mapper 나 Reducer의 configure() 메소드의 HashMap에 BufferedReader를 통해로드 할 것이므로 모든 map() 호출에서 그 요소를 검색 할 수 있습니다. 이것은 여전히 ​​분산 캐시 (또는 남용)의 일반적인 사용입니까? – wsb3383

+0

성능을 측정 할 수는 있지만 제 생각에는 합리적으로 사용하는 것 같습니다. 다른 곳에 정보를 저장하면 (memcached, hbase 등의 실제 분산 캐시) 입출력 비용은 더 높을 것입니다 - hadoop의 분산 캐시와 마찬가지로 파일은 컴퓨터 당 한 번만 복사되며 다른 옵션에서는 각 맵이 파일을 읽습니다. 네트워크. –

+0

독립 실행 형 환경에서 DistributedCache를 사용하려고합니다. 파일을 추가 할 수 있으며 예외가 발생하지 않습니다. 파일을 가져 오려고 할 때 null을 던지고 있습니다. 여기서 도울 수 있니? –

관련 문제