실행중인 특정 작업은 일부 대형 HDFS 파일을 처리하기 전에 DB (MySQL과 관련 있음에도 불구하고)에서 일부 메타 데이터를 수집해야합니다. 이 메타 데이터는 파일의 데이터에 추가되어 나중에 map/combine/reduce 단계로 전달됩니다.Hadoop MapReduce와 데이터베이스 쿼리 결합하기
"올바른"이 쿼리를 넣을 위치가 궁금합니다. 매퍼가 시작될 때 사용할 수 있도록 메타 데이터가 필요하지만 모든 매퍼가 동일한 쿼리를 실행하므로 중복되는 것처럼 보입니다. 어떻게하면이 쿼리를 한 번 수행하고 모든 매퍼에서 결과를 공유 할 수 있습니까? 작업을 수행하는 모든 노드간에 데이터를 공유하는 일반적인 방법이 있습니까 (HDFS에 쓰는 것 제외)? 감사.
또한 메타 데이터가 너무 커서 구성에 저장할 수없는 경우 DistributedCache를 사용해야합니다. 드라이버의 DB에서 메타 데이터를 가져 와서 파일에 저장 한 다음 DistributedCache에 파일을 추가하십시오. 메모리에로드하여 필요할 때 추가 할 수 있도록 각 매퍼에서 파일을 사용할 수 있습니다. –
두 답변 모두 우수합니다. 감사합니다. – sa125