어떻게 조정 맵리 듀스에

 

지도 상 최적화

변수를 생성하기 위해 호출되는 메모리 사용량 등지도 측 순환 같은 맵 변수의 타단을 생성 피하기 위해, 코드 최적화를 증가시키고 기록 할 때 1로 셋업 프로세스 변수를 만들려고

2, 구성 튜닝, 같은 실행하는 클러스터 구성 및 튜닝 작업을 수행 할 수 있습니다 : 맵 측에서 제공하는 많은 메모리 공간으로 shufflfflffle 과정을 전송하는 우수한 일반 원칙, 당신은 최선을 얻을 오버 플로우를 피함으로써 여러 개의 디스크를 쓸 수 있습니다 때문에 성능 (구성 io.sort. *, io.sort.mb), 끝을 줄일 수는 중간 메모리에 모든 데이터가 상주는 최적의 성능을 얻을 수 있지만, 기본적으로는 일어날 수 없다 일반적으로 모든 기능에 대해 예약 된 메모리를 포함 줄일 경우, 제공하는 경우 shufflfflffle 튜닝 프로세스 능력 (구성을 수정하는 mapred.inmem.merge.threshold, mapred.job.reduce.input.buffffer.percent 필요) 맵리 듀스 성능 도움. 일반적인 규칙은 많은 메모리를 프로세스로 할당 shufflfflffle하는 것처럼, 물론, 당신은 반드시지도하고 비즈니스 로직을 실행하기에 충분한 메모리가 감소합니다. 매퍼와 감속기를 구현할 때 따라서, 이러한 지속적으로지도에 중첩 않는 것처럼 메모리의 사용을 최소화해야한다. 세트 대용량 메모리와 같은 JVM 실행지도 및 작업을 줄이고, mapred.child.java.opts 속성에 의해 메모리 세트. 메모리 컨테이너의 크기와는 mapreduce.map.memory.mb mapreduce.reduce.memory.mb에 의해 설정, 기본값은 1024M입니다. 다음과 같은 방법으로 디스크 캐시에 대한 주문 및 쓰기의 효율성을 향상시킬 수 있습니다 :

1 mapreduce.task.io.sort.mb 크기 조정 방지 또는 버퍼 오버 플로우의 수를 감소시킨다. 이 매개 변수는 JVM의지도 작업 힙 크기의 최고 동시 탐지를 조정하고, 필요한 경우 공간을 힙 증가합니다.

 2 속성 mapreduce.task.io.sort.factor의 값은 빠르게 합병 과정을 확인하고 디스크 액세스를 줄일 수 약 100 배 증가했다.

3,보다 효율적인 KV 사용자 정의 직렬화 도구를 제공하기 위해 적은 공간 데이터를 직렬화 후, 캐시 사용

높은 속도.

 도 4는보다 효율적인 결합기 (결합기) 매핑 작업을보다 효율적 중합의 출력 결과 제공한다.

도 5는보다 효율적인 패킷 키 비교기 및 비교기의 값을 제공한다. 출력이 감소 작업에서 작업의 수에 따라 달라집니다, 여기에 몇 가지 최적화 팁은 다음과 같습니다 :

1 출력 압축 저장 공간을 절약 할뿐만 아니라, 작성된 문서를 피하기 위해 HDFS 2, 벨트의 외측 단부를 작성 스루풋 향상시키는 (아웃 오브을 [1] 밴드 측 fifile) 출력 3. 작업 출력 파일로 작업을 줄이기 소비자 요구는, 압축 기술을 나눌 수 것이 적합 할 수있다

4, 더 큰 블록 크기 설정, 대형 쓰기 HDFS 파일, 도움 io.fifile에 의해,이 작은 수, 버퍼로 끝 일반 튜닝 4킬로바이트 기본 최적화 하둡을 축소 / 작업의 수지도지도를 줄이기 위해 버퍼 풀의 크기를 증가 .buffffer.size. 최고의 성능을 달성 쏟아 질 수 있습니다지도 측 복수의 파일을 작성 최적화 피하고는, 유출 파일은 최고입니다. 지도의 예상 크기를 출력함으로써, 적당한 mapreduce.task.io.sort 세트. * 속성되도록 유출 파일의 최소 개수. 가능한 mapreduce.task.io.sort.mb 큰 예를 들면 곡.

 

 

최종 최적화를 감소

그들은 메모리에 저장된 모든 데이터를 얻을 수 있다면, 당신은 최상의 성능을 얻을 수 있습니다. 정상적인 상황에서는, 메모리 기능을 줄이기 위해 예약 있지만이 기능을 줄이면 매우 높은 메모리 요구 사항은 mapreduce.reduce.merge.inmem.threshold (트리거 출력이 맵 파일 번호를 합병)를 0으로 설정, mapreduce.reduce.input 아니다된다 .buffffer.percent (비지도 출력 파일을 저장하는 힙 메모리)를 사용하면 좋은 성능을 달성 할 수있는, 1.0로 설정되어 있습니다. 성능 테스트를 정렬 TB 레벨 데이터 하둡 감소 데이터 승리의 메모리에 저장되는 중간 통해서이다.

 

 메모리 튜닝

하둡 데이터를 처리 할 때의 처리 방법의 메모리 오버 플로우가 발생할? (조정 메모리)

1 매퍼 / 감속기 JVM 메모리 오버플 스테이지 (일반적으로 스택)

1) JVM 힙 (힙) 메모리 오버플 : 일반적으로 다음과 같은 예외가 발생 될 때 아웃 힙 메모리 :

제 "java.lang.OutOfMemoryError와"GC 오버 헤드 제한이 초과;

두 번째 : "오류 : 자바 heapspace"이상;

第三种 "beyondphysical 메모리 limits.Current 사용 실행 : MEMORYUSED 4.3 GBphysical의 4.3 GB를; 13.2 GB 가상 메모리의 7.4 GB 사용. "용기를 죽이는.

2) 메모리 스택 오버 플로우 : 던져 : java.lang.StackOverflflowError

자주 (조건의 SQL 문에 너무 많은 조합이 될 재귀 호출을 구문 분석 할 계속) SQL에 표시, 또는 MR 코드는 재귀 호출이 있습니다. 재귀 호출이 깊이 스택 긴 체인 메서드 호출에 의해 발생. 이 오류는 해당 프로그램에 대한 일반적인 설명을 쓰기 발생합니다.

메모리의 제 2의 아웃 MRAppMaster

데이터 입력 좋은 일자리를 많이, 매퍼 및 감속기의 많은 수의 결과로 결국 메모리 부족 MRAppMaster 작업에 선도, MRAppMaster (현재 작업 관리자) 압력의 결과로하면 OOM 일반 정보를 나타 달렸다

예외 정보는 다음과 같습니다

예외 : 스레드에서 theUncaughtExceptionHandler에서 던진 java.lang.OutOfMemoryError와

"소켓 리더 포트 30703에 대한 # 1

때문에 메모리 부족 오류로 중단 ...

때문에 메모리 부족 오류로 중단 ...

때문에 메모리 부족 오류로 중단 ...

3 비 JVM 메모리 오버플

예외 정보는 일반적으로 java.lang.OutOfMemoryError와 : 직접 buffffer 메모리

통제하지 않았다, 운영 체제의 메모리를 사용하여 자신의 응용 프로그램이 메모리 누수가 메모리 오버 플로우로 이어지는 발생합니다. 오류 해결 매개 변수 조정

1 매퍼 / 감속기 JVM 힙 메모리 오버플 단계 튜닝 파라미터

다음과 같은 파라미터들의 두 세트를 통과하는 전류를 제어하는 ​​메인 메모리의 MapReduce :( 파라미터 전송 대)

Maper :

mapreduce.map.java.opts = -Xmx2048m은 (기본 매개 변수가 JVM 힙 메모리를 표시,주의하지 맵리 듀스 mapred입니다)

mapreduce.map.memory.mb = 2,304 (용기 메모리)

감속기 :

mapreduce.reduce.java.opts = - = - Xmx2048m (기본 매개 변수가 JVM 힙 메모리를 나타냅니다)

mapreduce.reduce.memory.mb = 2,304 (용기 的 内存)

참고 : mapreduce.map가 (감소) 그래서이 모드에서 실 컨테이너,지도 / .memory.mb mapreduce.map (감소) 된 .java보다 상기 크기 이상을 컨테이너에서 실행중인 작업을 줄일 수 있기 때문에. OPTS 크기 값. . 맵리 듀스 {맵 | 줄이기} 때문에 자바 코드에 대한 일부 공간을 예약의 필요성, .java.opts가의 -Xmx JVM 힙은 일반적으로 0.75 배 memory.mb로 설정되어 최대를 사용하여 제공 될 수 등

2, MRAppMaster :

yarn.app.mapreduce.am.command-OPTS = -Xmx1024m 다음과 같은 방식으로, 하이브 ETL 주 안에 yarn.app.mapreduce.am.resource.mb = 1536 (컨테이너 RAM) (기본 매개 변수는 JVM 힙 메모리를 나타냅니다) 설정 : 설정 mapreduce.map.child.java.opts을 = "- Xmx3072m"(참고 : 따옴표없이 따옴표를 사용 -Xmx 설정해야합니다 다양한 오류) 설정 mapreduce.map.memory.mb = 3288

또는

세트 mapreduce.reduce.child.java.opts = "XXX"

mapreduce.reduce.memory.mb = XXX 설정

YARN 매개 변수를 포함 :

• yarn.scheduler.minimum 할당-MB (최소 할당 단위 1024M)

• yarn.scheduler.maximum 할당-MB (8192M)

• yarn.nodemanager.vmem-pmem 비율 (2.1 기본적으로 가상 및 물리적 메모리 사이의 비)

• yarn.nodemanager.resource.memory.mb

논리적 응용 프로그램 큐 할당 된 메모리, CPU 및 기타 리소스를 통해 ResourceManger (약어 RM)의 원사, 최대 허용 기본 RM 오전 응용 프로그램 컨테이너 자원 8,192메가바이트 ( "yarn.scheduler.maximum 할당-MB"), 기본 1024M ( "yarn.scheduler.minimum 할당-MB"), 오전 증분 ( "yarn.scheduler.minimum 할당-MB") 및 초과하지 않는 ( "yarn.scheduler.maximum위한 자원의 최소 할당 -allocationmb mapreduce.map.memory.mb ") 및"RM 애플리케이션 자원의 행방 값), 오전 (책임이있다 "

값 ( "mapreduce.reduce.memory.mb")는 나눌는 8,192메가바이트 및 1천24메가바이트 자원 요청 이상의 애플리케이션 메모리 거부 RM은 나눌 수없는 ( "yarn.scheduler.minimum 할당-MB")로 구성된다. (다른 구성에 다른이있을 것입니다)

입력 데이터의 최적화 단계 :

작은 파일 (1) : MR 작업 부하지도 작업의 수를 증가, 작은 파일을 작은 파일의 많은 수의지도 작업을 많이 생성, 병합 수행하기 전에, 로딩하는 작업은 느린 실행 MR 결과, 시간이 많이 소요입니다 .

작은 파일의 장면 번호의 어드레스 입력단의 입력으로서 (2) CombineTextInputFormat.

작은 파일이 HDFS 솔루션

HDFS 파일 작은 단점

HDFS의 각 파일은 네임 노드 지수에 건설 될 인덱스 크기 때문에, 150byte 관한 그 비교적 큰 작은 파일의 수와 한 손에, 인덱스 파일을 많이 생성합니다 메모리 공간 네임 노드 기타를 많이 차지 할 때 한 손으로는 인덱스 파일은 인덱스가 둔화 그래서 너무 큰 것입니다.

최적화는 다음과 같은 방법으로 작은 파일에 지나지 않는다 :

(1) 데이터 수집시, 그것은 작은 파일이나 업로드 HDFS 전에 대용량 데이터 파일의 작은 배치 합성 될 것입니다.

(2) 작은 파일의 비즈니스 프로세스에 앞서이 HDFS에 맵리 듀스 프로그램을 사용하여 병합됩니다.

MapReduce의 프로세스 CombineTextInputFormat 효율을 사용 (3).

작은 문서 솔루션

1.Hadoop 아카이브

따라서 메모리 사용량 네임 노드를 줄이고, 작은 파일 HAR 파일의 복수로 포장 될 수 HDFS 블록 파일 아카이브 도구로 효율적으로 작은 파일입니다.

2. 파일 순서
 파일 이름의 키는 파일의 내용에 대한 가치, 당신은 하나 개의 큰 파일에 작은 많은 수의 파일을 병합 할 수 있습니다 경우 시퀀스 파일은 바이너리 키 / 값 조성물의 시리즈로 구성되어 있습니다.
3. CombineFileInputFormat
 CombineFileInputFormat는 InputFormat은 새로운 하나의 분할에 여러 개의 파일을 병합, 또한,이 데이터가 저장되는 위치로 간주됩니다입니다.

4. JVM이 열려 다시
당신은 실행 시간 45 % 감소를 재사용 할 JVM을 열 수 있습니다, 작은 많은 수의 파일 작업을 위해.
JVM 재사용 원리 : JVM이 다른지도를 계속지도가 JVM에 완성을 실행하고있는 후지도를 연 다음 다시 사용하는 JVM에서 실행합니다.
설정 : 10 ~ 20 사이의 mapreduce.job.jvm.numtasks 값입니다.

추천

출처www.cnblogs.com/tesla-turing/p/11958842.html