2013-07-12 2 views
1

각 600 만화 소의 바이너리 형식 (FITS)으로 전체 하늘 맵이 몇 개 있습니다.전체 하늘 맵에서 소스 처리를위한 hadoop 실행

각 하늘지도마다 이미 별, 은하계, 라디오 출처 등 수천 개의 출처에 대한 카탈로그가 있습니다.

각 소스에 대해 나는 싶습니다 :

  • 가 출력을 집계 일반적으로 20메가바이트 이하
  • 실행 그들에 대한 통계 관련 단원을 추출 전체 하늘의지도를 엽니 다 카탈로그

를 사용하여 hadoop을 실행하고 싶습니다. 10을 streaming 인터페이스를 통해 병렬 처리 할 수 ​​있습니다.

나는 매퍼에 입력이 카탈로그의 각 레코드, 는 다음 python 매퍼가 전체 하늘의지도를 열 처리를하고 stdout 출력을 인쇄 할 수 있어야한다고 생각합니다.

  1. 이 방법이 합리적인 방법입니까?
  2. 그렇다면 전체 하늘지도가 소스 중 하나를 처리하는 노드에 로컬로 복사되도록 hadoop을 구성 할 수 있어야합니다. 어떻게하면 될까요?
  3. 또한 입력 데이터를 hadoop으로 보내는 가장 좋은 방법은 무엇입니까? 각 소스에 대해 전체 하늘지도, 위도 및 경도에 대한 참조가 있습니다.

답변

2

하늘지도의 수십개가 매우 큰 데이터 세트 인 것처럼 들리지는 않지만, Hadoop을 분산 된 응용 프로그램/스크립트를 작성하는 간단한 방법.

설명하는 문제에 대해 Pydoop을 사용하여 솔루션을 구현하려고합니다. 특히 Pydoop Script (전체 면책 조항 : 저는 Pydoop 개발자 중 한 명입니다).

처리하고자하는 하늘색 맵의 섹션 목록을 입력으로 받아들이는 작업을 설정할 수 있습니다. 일종의 텍스트 형식으로 한 행에 하나의 레코드로 직렬화됩니다. 각지도 작업은 다음 중 하나를 처리해야합니다. 표준 NLineInputFormat을 사용하면이 분할을 쉽게 수행 할 수 있습니다.

지도 작업이 저장된 파일 시스템에 액세스 할 수있는 경우 하늘 맵을 모든 노드에 로컬로 복사 할 필요가 없습니다. pydoop.hdfs 모듈을 사용하여지도 함수는 처리해야하는 하늘지도의 섹션을 읽고 (입력으로받은 좌표를 사용하여) 감속기에서 집계 될 수 있도록 말한 것처럼 통계를 방출 할 수 있습니다 . pydoop.hdfs는 "표준"마운트 파일 시스템과 HDFS에서 읽을 수 있습니다. 문제의 영역은 완전히 무관 한 것이지만

,이 응용 예로서 작용할 수있다 :

https://github.com/ilveroluca/seal/blob/master/seal/dist_bcl2qseq.py#L145 

그것을 파일로 직렬화 처리 될 "좌표"의리스트를 작성, 동일한 전략을 사용하여, 그 파일을 입력으로 사용하는 간단한 pydoop 작업을 시작합니다.

희망 하시겠습니까?