2012-01-21 2 views
1

나는 hadoop과 그 어플리케이션에 대해 좀 더 배우고 있는데, 거대한 데이터 세트와 큰 파일을 대상으로한다는 것을 이해한다. 예를 들어 hadoop/hdfs와 같은 것의 큰 번호가 아닌 비교적 적은 수의 파일 (100k)을 처리하는 응용 프로그램이 있다고 가정 해 봅시다. 그러나 단일 시스템에서 실행하는 데 많은 시간이 걸리기 때문에이 프로세스를 배포하고 싶습니다.더 작은 규모의 자바 분산 프로그래밍

문제는지도 축소 스타일 문제 (예 : 각 파일을 독립적으로 처리 한 다음 결과를 집계 할 수 있음)로 분류 할 수 있습니다. Amazon EC2와 같은 인프라를 사용할 수는 있지만 실제로 프로세스 결과를 수집하기 위해 어떤 기술을 탐색해야하는지 확신 할 수 없습니다. hadoop과 같게 여기 조금 과잉일지도 모른다.

누구든지 이러한 유형의 문제에 대한 지침을 제공 할 수 있습니까?

+0

잘 모르겠습니다. 하둡의 감축 단계는 계산 결과를 정확히 집계하는 것을 의미합니다. – Tudor

+0

맞아,하지만 hdfs를 사용하지 않는데, 작은 파일이 많을 때 파일 크기가 약간 커야한다. (그리고 나는 그 파일들을 집계하는 기술이있다. 내 경우에는 파일이 다르다. 이미지와 같은 파일). hdfs가 적절하지 않다면 항상 s3과 같은 것을 사용할 수 있습니까? –

+0

네가 맞다. HDFS는 많은 양의 작은 파일을위한 것이 아니며 성능이 매우 떨어지며, 대학의 "클러스터"를 사용하여 내 자신의 실험에서 이것을 말할 수있다. 다행히도 내 파일은 텍스트 파일이므로 하나의 큰 파일로 병합 할 수 있었고 성능이 60 배 향상되었습니다.:) – Tudor

답변

1

먼저 파일을 결합 할 수 없다는 가정을 다시 생각해 볼 수 있습니다. 이미지조차도 결합 할 수 있습니다. 매퍼에서 다시 해체 할 수있는 방법으로 이미지를 처리하는 방법을 찾아야합니다. 그것들을 일종의 센티널 가치 또는 그들 사이의 매직 넘버와 결합하면 그것들을 하나의 거대한 파일로 만들 수 있습니다.

기타 옵션으로는 이미지를 셀에 저장할 수있는 HBase가 있습니다. HBase는 또한 내장 된 TableMapper 및 TableReducer를 가지고 있으며 반 구조화 된 방식으로 원시 데이터와 함께 처리 결과를 저장할 수 있습니다.

편집 : (가) 문제 "하둡 잔인한 사람이다"에 관해서는 다음과 같은 고려해야합니다

  1. 하둡은 오버 헤드 하나 이상의 시스템합니다 (HDFS 네임 노드)를 추가합니다. 일반적으로 SPOF이므로 데이터를 저장하거나 해당 컴퓨터에서 작업을 실행하지 않으려합니다.

  2. 하둡은 상대적으로 대기 시간이 긴 배치로 데이터를 처리하는 데 가장 적합합니다. @Raihan이 언급 하듯이, 실시간 또는 지연 시간이 짧은 결과가 필요한 경우 필요에 따라 서버를 배치 할 수있는 여러 가지 OSS 분산 컴퓨팅 구조가 있습니다.

  3. 100k 개 파일이 그리 많지 않습니다. 각각 100KB라고해도 10GB의 데이터입니다.

  4. 위와는 달리, Hadoop은 분산 컴퓨팅 문제에 비교적 낮은 오버 헤드로 접근합니다. 그 뒤에 거대하고 도움이되는 커뮤니티가있어서 필요한 경우 빨리 도움을받을 수 있습니다. 그리고 저렴한 하드웨어 및 무료 OS로 실행하는 데 중점을두고 있으므로 상당한 오버 헤드가 없습니다.

간단히 말해서, 다른 것으로 폐기하기 전에 시도해 보겠습니다.

+0

내가 한 말은 한 번에 모두 처리 할 수있는 단일 파일로 결합 할 수 없다는 것입니다. 나는 그것을 아카이브 또는 아마도 hadoop 시퀀스 파일에 넣을 수있다. 나는 그것에 대해 분명히해야만했습니다. 문제의 주요 쟁점은 상대적으로 적은 수의 파일에 대한 과장된 시도에 관한 것입니다. –

+0

자세한 내용보기 편집 –

+0

감사합니다. 정보를 제공해주세요. –

관련 문제