기본 과정:
& http://www.aliyun.com/zixun/aggregation/37954.html "> nbsp; 두 부분으로 분할 하는 그림 너무 큽니다. 순서도 따라 특정 작업이 수행 됩니다.
1. 분산된 환경에서 클라이언트 작업 만들고 그들을 제출 합니다.
2. 사전-InputFormat 전처리, 주로 다음과 같은 작업에 대 한 책임을 지도 할 수:
A 입력된 형식 때 지도 구현 및 건물 conf 알려져 하 고 쓸 수 있는 모든 하위 클래스를 정의 하지 않습니다 Jobconfig 입력된 정의에 부합 하는 확인 하십시오.
b 파일 논리 입력된 inputsplit으로 분할 사실, 이것은 BlockSize에 분산 파일 시스템에서 언급 이므로 제한 크기, 대용량 파일 여러 블록으로 분할 될 것 이다.
c) 지도를 출력 하는 레코드의 집합으로 Inputsplit Recordreader. (Inputsplit만 논리 세그먼트 하지만 슬라이스 파일에 정보를 사용 하 고 recordreader을 구현 해야 하는 방법의 첫 번째 단계는, 간단한 기본 방법입니다 캐리지 리턴 줄의 세분화)
3. 지도 처리 하는 recordreader의 결과 입력, 지도 실행 지도 논리를 정의 하 고 처리 된 키, 값 쌍 임시 중간 파일을 출력 합니다.
4. 결합기 선택 가능, 기본 역할 구성은 각 지도 분석 완료 감소, 지역 우선 순위와 함께 감소 하는 동안 전송 되는 데이터의 양을 줄이기 위해 합니다.
5. 파티션 선택 가능한 구성, 주요 효과 지도 지정의 결과 특정 감소에 의해 처리 되 고 각 감소는 다중의 경우 별도 출력 파일을 줄이기 위해. (사용 시나리오는 다음 코드 예제에 설명 된)
6. 특정 비즈니스 논리를 수행 하 고 처리 결과 OutputFormat 출력.
7. OutputFormat는 출력 디렉터리가 이미 존재 확인, 출력 결과 형식이 구성, 구성 되어 있는지 확인 하 고 다음 감소 롤업 후 결과 출력 합니다.
코드 예제:
비즈니스 시나리오 설명:
입력 및 출력 경로 설정 (운영 체제 경로 HDFs 경로 없습니다), 응용 프로그램 액세스의 액세스 로그 분석 API 총 번의 하 고 각각, 트래픽, 통계, 총 두 개의 파일을 출력 수 있습니다.
그냥 테스트용으로, 모든 클래스는 문제를 설명 하기 위해 하나의 클래스에 병합 하는 많은 클래스의 아무 세분이 있다.
그림 4 테스트 코드 클래스 다이어그램
Loganalysiser는 생성, 작업, 제출 및 정보의 일부를 출력 하는 일을 담당 하는 주 클래스입니다. 응용 프로그램 내에서 여러 하위 클래스는 과정에서 언급 한 역할 책임을 참조할 수 있습니다. 여러 클래스 및 메서드에 대 한 코드 조각을 살펴보겠습니다.
Loganalysiser::mapclass
Mapreducebase를 확장 하는 공용 정적 클래스 Mapclass
구현 매퍼 < longwritable, 텍스트, 텍스트, longwritable >
{
공공 무효 지도 (longwritable 키, 텍스트 값, Outputcollector < 텍스트, longwritable > 출력, 기자 기자)
IOException을 throw
&