뒤에 책, MapReduce 사용자 프로그래밍 인터페이스를 설명 하기 위해 계속
mapreduce-사용자 프로그래밍 인터페이스
다음 일부 인터페이스 또는 사용자가 자주 MapReduce 프레임 워크에서 사용 하는 클래스의 세부 사항에 집중할 것 이다. 이것을 이해 하는 것은 크게 도움이 됩니다 달성 하 고, 구성 하 고 미스터 작업을 최적화. 물론 Javadoc 각 클래스 또는 인터페이스의 더 포괄적인 문이 있으며 여기 그냥 가이드 튜토리얼입니다.
먼저 두 지도 구현 하 고 메서드를 mrjob의 핵심을 줄일 데 미스터 응용 프로그램에서 일반적으로 사용 되는 매퍼 및 감속 기 인터페이스에서 찾습니다.
맵 편집기
매퍼 중간 데이터 입력된 kv 매핑됩니다 kv 세트. 지도 중간 기록, 어디 변환된 기록 하지 않아도 입력된 레코드 종류와 동일 입력된 레코드를 변환 합니다. 주어진된 입력된 쌍 0에 매핑할 수 있습니다 또는 이상의 쌍을 출력 합니다.
Mrjob 실행 중 MapReduce 프레임 워크 inputsplit (입력된 조각화) 사전에 지정 된 InputFormat (입력된 형식 개체)에 따라 생성 하 고 각 inputsplit 지도 작업에 의해 처리 됩니다.
매퍼 구현 클래스 Jobconfigurable.configure (jobconf) 메서드를 통해 Jobconf 개체에 전달 하 여 초기화 하 고 각 지도 작업 (writablecomparable에 지도 호출 하는 일반적으로 쓸 것 같 소, outputcollector, 기자) inputsplit의 각 kv 쌍을 처리 하는 방법. 미스터 응용 프로그램 몇 가지 필요한 정리 작업을 처리 하기 위한 closeable.close 메서드를 포함할 수 있다.
출력은 반드시 입력된 쌍으로 같은 종류. 주어진된 입력된 쌍 0에 매핑될 수 있습니다 또는 이상의 쌍을 출력 합니다. 출력 쌍 호출 Outputcollector.colect (writablecomparable, 쓰기 가능)에 의해 취득 하는 프레임 워크입니다.
미스터 응용 프로그램 진행 상황 보고, 응용 프로그램 수준 상태 정보를 설정, 업데이트 카운터, 또는 단순히 실행 상태에서 응용 프로그램을 표시 기자를 사용할 수 있습니다.
주어진된 출력 키와 관련 된 모든 중간 데이터 다음 프레임 워크에서 처리 하 고 최종 출력을 처리 하는 감속 기에 전달. 사용자는 Jobconf.setoutputkeycomparatorclass (클래스)에 의해 프로세스를 그룹화 하는 비교 컨트롤을 지정할 수 있습니다.
매퍼 출력은 정렬 하 고 감속 기, 수에 따라 분할 파티션 수 절약 작업의 수와 같습니다. 사용자는 사용자 지정 파티 셔 너를 구현 하 여 어떤 키 (레코드)는 감속 기를 제어할 수 있습니다.
또한, 사용자는 결합기를 지정할 수 있습니다, 그리고 전화 Jobconf.setcombinerclass (클래스)를 구현 하. 감속 기에 맵 편집기에서 데이터의 양을 줄일 수 있도록 지도 출력의 로컬 집계 수 있습니다.
정렬 된 중간 출력 데이터는 일반적으로 간단한 형식으로 저장 (키 렌 키, http://www.aliyun.com/zixun/aggregation/9541.html "> len 값, 값"). 응용 프로그램 여부를 어떻게 결정할 수 있습니다 압축 하 고 압축 형식으로 jobconf로 지정할 수 있습니다.
지도 번호
일반적으로 지도 수는 입력된 데이터, 즉, 모든 입력된 파일에 대 한 블록의 번호의 전체 크기에 의해 결정 됩니다.
각 노드를 병렬 실행 하는 지도 수는 일반적으로 10 ~ 100. 자체 지도 작업 초기화 동안 하기 때문에, 실행 시간 지도 1 분입니다.
그래서, 10T 데이터 파일, 각 블록 크기 128 M, 최대 사용 82000map 번호, 미스터 프레임에 대 한 제안된 값만 제공 하는 Setnummaptasks (int)를 사용 하지 않는 경우 높은 지도 값 설정입니다.
감속 기
감속 기 중간 데이터 수집 처리 하는 키를 기반으로 작은 데이터 결과 집합으로 병합 합니다.
사용자는 jobconf.setnumreducetasks (int)를 통해 작업의 감속 기 수를 설정할 수 있습니다.
전반적으로, 감속 기 구현 클래스 Jobconfigurable.configure (jobconf) 메서드를 통해 jobconf 개체를 전달 하 고 설정 하 고 작업에 대 한 감속 기를 초기화 합니다. 미스터 프레임 워크 호출 감소 (writablecomparable, 반복기, Outputcollector, 기자) 키로 그룹화 된 입력된 데이터를 처리 하기 위해. 응용 프로그램은 필요한 정리 작업을 처리 하기 위해 closeable.close ()를 덮어쓸 수 있습니다.
감속 기 세 가지 주요 단계로 구성 됩니다: 셔플, 정렬, 감소.
셔플
입력된 데이터는 감속 기에 입력 된 데이터는 해당 매퍼 지시 했다. 셔플 단계 프레임 워크를 가져옵니다 파티션 알고리즘에 따라 관련 매퍼 주소 및 HTTP 프로토콜을 통해 데이터 처리에 대 한 감속 기 기계를 감속 기에서 가져온입니다.
정렬
프레임 워크 (다른 매퍼 출력 데이터 동일한 키 포함 될 수 있습니다) 때문에이 단계에서 키에 따라 입력 하는 감속 기를 그룹화 합니다.
셔플과 정렬은 동시, 감속 기는 여전히 지도의 출력 당기는 동안.
보조 정렬
중급 데이터 키 그룹화 규칙 단순화의 과정을 하기 전에 규칙을 그룹화 하는 키와 일치 하지 않는 경우에 비교 기 Jobconf.setoutputvaluegroupingcomparator (클래스)에 의해 설정할 수 있습니다. 중간 데이터의 전략을 그룹화 Jobconf.setoutputkeycomparatorclass (클래스)에 의해 설정에 따라 중간 데이터를 그룹화 하는 키를 제어할 수 있습니다. Jobconf.setoutputvaluegroupingcomparator (클래스) 값을 두 번 데이터 연결의 경우 정렬에 사용할 수 있습니다.
감소 (단순화)
감소 (writablecomparable, 반복기, 기자, Outputcollector)를 호출 하는 프레임 워크 루프의이 단계 그룹화 된 각 kv 쌍을 처리 하는 메서드.
축소 작업은 일반적으로 Outputcollector.collect (writablecomparable, 쓰기)을 통해 파일 시스템 파일 시스템에 출력 데이터를 기록합니다.
응용 프로그램은 작업 실행 진행 상황 보고, 응용 프로그램 수준 상태 정보를 설정, 업데이트 카운터 (카운터), 또는 단순히 작업이 실행 프롬프트 기자를 사용할 수 있습니다.
주 감속 기 출력 정렬 되지 않습니다.
감속 기 번호
감속 기의 적절 한 수는 다음과 같이 예상할 수 있습니다.
(노드 mapred.tasktracker.reduce.tasks.maximum 수) 0.95를 곱한 또는 1.75를 곱한.
요소 0.95 인 경우에, 모든 감속 기 모든 지도 작업이 완료 되는 때에 즉시 시작 하 고 지도 컴퓨터에서 데이터를 시작 수 있습니다. 요소는 1.75, 빠른 노드 중 일부 완료 됩니다의 첫 번째 라운드 처리를 줄이고 프레임 워크 시작 더 나은 로드 균형을 달성 하기 위해 두 번째 라운드의 감소.
감소의 수를 증가 하는 프레임 워크의 운영 부담을 증가 시킬 수 있습니다 하지만 작업의 부하 균형을 증가 하 고 실패의 비용을 절감 하는 데 도움이.
위의 요인 때 프레임 워크는 여전히 작업 실행에 대 한 감소 슬롯에 잘 사용 된다, 모든 후, 프레임 워크 또한 작업의 가능한 투기 실행 및 실패 한 작업의 처리를 수행 하기 위해 필요 합니다.
감속 기
를 사용 하지 않습니다.
처리를 단순화 하기 위해 필요 하지 않은 경우 0으로 감소 수를 설정할 수 있습니다.
이 경우에 지도 출력 파일 시스템에 직접 기록 됩니다. 출력 경로 Setoutputpath (경로)로 지정 됩니다. 프레임 워크는 더 이상 파일 시스템에 데이터를 쓰기 전에 지도 결과 정렬 합니다.
셔
파티션 데이터는 감속 기 지도 출력을 전송 하는 제어를 키에 따라 분할 됩니다. 기본 파티션 알고리즘 해시 (해시)입니다. 파티션 수 작업의 감속 기 수에 의해 결정 됩니다.
Hashpartitioner 기본 파티 셔 너입니다.
기자
기자 씨 응용 프로그램에 대 한 진행 보고서, 응용 프로그램 상태 정보 설정 및 카운터 (카운터) 업데이트를 제공합니다.
매퍼 및 감속 기 구현 기자 진행률 보고 하거나 작업이 정상적으로 실행을 사용할 수 있습니다. 일부 시나리오에서 응용 프로그램 몇 가지 특별 한 kv 쌍을 처리 하는 데 너무 오래 걸리며이 프레임 워크는 작업 시간이 초과 되었음을 가정 하기 때문에 막으려고 작업을 강제로 수 있습니다. 이 문제를 방지 하려면 더 높은 값으로 Mapred.task.timeout를 설정 하거나 시간 초과 방지 하려면 0으로 설정 수 있습니다.
응용 프로그램 업데이트 수 (카운터) 기자를 사용할 수도 있습니다.
Outputcollector
Outputcollector 매퍼 또는 감속 기 출력 데이터 (중간 데이터 또는 최종 결과 데이터)를 수집 하는 미스터 프레임 워크에서 제공 하는 범용 도구입니다.
Hadoop MapReduce 매퍼, 감속 기, 및 자주 사용 되는 Partioner 구현을 제공 합니다. 이러한 도구는 학습에 대 한 여기 클릭할 수 있습니다.
원래 영어: Cloudera