2012-06-01 4 views
2

나는 hadoop mapreduce 프레임 워크의 세계에 초보자입니다. 나는 많은 튜토리얼을 읽고 프레임 워크를 이해했다. 가상 배포 모드에서 hadoop 설정을 성공적으로 구성했습니다. Hadoop MapReduce에서 수행해야하는 두 가지 구체적인 작업이 있습니다.Hadoop MapReduce 생각

다음과 같은 형식의 많은 데이터 파일이 있습니다.

교환 된 메시지 수. user1; user2; 시간 스탬프;

예 : 5; 존 도우; 존 스미스; 1900 년 1 월 1 일; 무엇을 달성 할 싶습니다

  1. 는 사용자 이름에 데이터 마스킹 할 수있다 (그들은 익명되도록, 사용자 이름 위에 SHA256를 구축 같이합니다.)

  2. 이 수를 집계 일정 기간의 메시지 (예를 들어 일주)

이제

우리가 내 질문에 오게 교환 : 내 현재의 지식에 따르면 을의 hadoop mapreduce 프레임 워크는 두 번째 작업을 수행하기위한 것입니다. 키 - 값 (메시지가 교환 된 사용자 이름과 메시지 수)을 매핑하고 특정 기간 (예 : 1 주) 동안 총 메시지 수를 줄이려면이를 줄일 수 있습니다. 그러나 첫 번째 작업은 어떻습니까? 데이터 마스킹을 할 때, 작업을 줄일 필요가 없습니다.이 작업은 hadoop mapreduce를위한 것이 아닙니다. 나는 그것을 병렬로하고 싶지만, 첫 번째 작업을 수행하기 위해 hadoop mapreduce를 적용하는 것을 정말로 생각할 수 없다. 처리해야하는 데이터 파일의 수는 실제로 많으므로, 어떻게해도 hadoop mapreduce를 사용하는 것이 좋습니다.

의견을 보내 주셔서 감사합니다.

P .: 질문은 "어떤 유형의 작업이 MapReduce에 가장 적합합니까?"로 일반화 할 수 있습니다.

+0

변환을 수행 할 때 왜지도 파트를 할 수 없습니까? Map/Reduce의 Map 부분은 데이터 변환에도 사용할 수 있으므로 작업은 다음과 같습니다. Map -> Record to #; 인코딩 된 사용자 1; 인코딩 된 사용자 2; 날짜. Reduce를 사용하면 필요한 통계를 얻을 수 있습니다. – abatyuk

+0

맞습니다.지도 부분 만 할 수 있습니다. 맵핑 부분 만 수행하고 마스크 된 레코드 파일을 HDFS에 다시 저장 한 다음 마스크 레코드의 맨 위에 축소 작업을 수행하기 위해 다시 읽는 것이 좋은 방법입니까? 주 메모리는 데이터 세트 전체를 보유 할 수 없습니다. – Bob

+0

필자가 이해하는 한, 감속재는 매퍼가 자신의 작업을 수행 할 때까지 기다렸는데, 제 경우에는 모든 데이터 파일이 변형되어야한다는 것을 의미합니다. 당신이 생각하고있는 워크 플로우를 설명해 주시겠습니까? – Bob

답변

2

첫 번째 작업은지도 전용 작업에 가장 적합합니다. MapReduce는 일반적으로 정렬, 매핑 (데이터에 대한 멋진 기능 적용) 및 데이터 축소에 적합합니다.

문제가 MR에 잘 맞습니다.

MapReduce는 그래프 알고리즘과 같이 작업이나 반복 무거운 작업간에 강력한 통신이 필요한 경우 적합하지 않습니다. BSP가 가장 적합하기 때문에 Hama 또는 Giraph 중에서 선택할 수 있습니다. 반면 Giraph는 주로 그래프 처리를 제공하고 Hama는 순수 BSP 프레임 워크이며 그래프 처리를위한 모듈도 가지고 있습니다.

+0

지도를 분리하고 서로 줄이면됩니까? 나는 항상 모든 것을 시작하는 드라이버 클래스와 동시에 매퍼 (mapper)와 감속기 (reducer)를 구현해야한다고 생각했다. – Bob

+1

매퍼를 실행할 수 있습니다. 그러나 감속기 만 있으면지도 작성자를 실행해야합니다.드라이버 클래스는 작업을 설정하기 만하면 numReduceTasks를 0으로 설정하고 reduce 클래스를 정의 할 수 없습니다. –

관련 문제