2013-02-26 3 views
2

지도 작업이 MapTracker를 통해지도 작업에 공급되어야하는 입력 레코드 집합을 생성해야하는 필요성이 있습니다.hadoop지도 작업에서 입력을 생성하는 방법

나는 해결책을 생각할 수 없어 당신의 도움이 필요합니다.

세부 정보 : 웹 크롤러를 작성할 계획입니다. 초기 루트 레벨 웹 페이지는 mapreduce 작업에 입력됩니다. 매퍼/감속기는 웹 페이지를 가져오고 페이지에서 링크를 수집합니다. 이 링크는 mapreduce 작업의 입력으로 처리되어야합니다. 그래서 저는 제 1 루트 노드에 대한 작업을 처리 할 수 ​​있도록 이러한 링크를 구직자에게 보냅니다. 추가 할 수있는 단말 조건 (예 : 링크 정규식 검색)이 있습니다. regex가 일치하면 map (또는 reduce) 작업에 의해 jobtracker에 다시 저장되지 않습니다.

+0

생성하고자하는 데이터의 종류와 데이터 유형이 같으므로 일반적인 질문에 더 많은 설명을 추가하십시오. –

+0

추가 세부 사항. 도움이되는 희망. –

+0

이것은 흥미 롭습니다! 나는 실행 시간에 당신이 입력을 증가시킬 수 있는지조차 모른다. 그것이 바로 당신이 원하는 방식입니다. – Amar

답변

0

매퍼가 URL 목록을 가져오고 각 URL에 대해 일련의 크롤러를 실행하도록 작업을 구성하십시오. 따라서 첫 번째 제출물은 URL이 하나 뿐인 파일입니다. 매퍼의 출력은 페이지에서 발견 된 링크 목록입니다. 감속기는 매퍼 출력을 단일 파일로 결합합니다.

이것을 구현하면 이전 작업의 출력으로 다음 작업을 시작할 수 있습니다. 첫 번째 단계에서는 URL 목록이 매우 짧기 때문에 매퍼 만 실행하지만 결국에는 전체 클러스터를 활용할 수있게됩니다. 최적의 활용도를 위해 HDFS 블록 크기를 변경해보십시오. 또는 단순히 초기 가동률을 초기 비용으로 간주하여 작업이 진행되는 동안 사라질 수 있습니다. 또한 AWS를 실행중인 경우, 매우 작은 클러스터를 처음부터 시작하여 더 많은 머신을 구입하여 클러스터에 합류 할 수 있으므로 좋은 일이 될 것입니다.

이 설정에는 문제가 있습니다. 이미 방문한 링크를 방문하지 않도록주의해야합니다. URL 목록이 작 으면 매우 간단 할 수 있지만 전체 인터넷을 크롤링하려고하면 영리한 해결책이 필요합니다.

+0

답에 Vlad에게 감사드립니다. 나는 "이전 직업의 결과로 다음 직업을 시작하라"에 관해 하나의 질문을 가지고있다. 루프에서이 단계를 배치해야한다는 의미입니까? 감속기가 jobstracker 업무에지도 작업에 파견하기 위해 더 많은 일자리를 찾았 음을 알려주면 안됩니까? –

+0

나는 그 일을 반복 할 것을 제안 할 것이다. 작업 추적기의 작업은 실행중인 작업을 추적하는 것입니다. 감속기 작업이 실행되는 동안 출력 파일을 사용할 수없는 주된 이유입니다. 감속기 작업이 완료되면 출력이 HDFS로 커밋됩니다. 또한 감축 단계 중반에 작업을 시작하면 감속기가 어떤 이유로 실패하고 동일한 입력으로 다른 곳에서 다시 시작됩니다. 따라서 중복 맵 작업이 실행 중입니다. 루프 외부에서 작업을 수행하는 가장 좋은 방법은 Hamake와 같은 기존 워크 플로 도구를 활용할 수 있다는 것입니다. – Vlad

관련 문제