[HADOOP] Oozie 워크 플로우에있는 MapReduce 작업에서 감속기 수 설정
HADOOPOozie 워크 플로우에있는 MapReduce 작업에서 감속기 수 설정
5 개의 노드 클러스터가 있는데 그 중 3 개의 노드에는 DataNode 및 TaskTracker가 포함되어 있습니다.
Sqoop을 통해 Oracle에서 약 1 천만 개의 행을 가져오고 Oozie 워크 플로에서 MapReduce를 통해 처리했습니다.
MapReduce 작업은 약 30 분이 걸리며 감속기를 하나만 사용합니다.
편집-Oozie와 별도로 MapReduce 코드를 자체적으로 실행하면 job.setNumReduceTasks (4)가 4 개의 감속기를 올바르게 설정합니다.
성공하지 않고 감속기 수를 4로 수동 설정하기 위해 다음 방법을 시도했습니다.
Oozie에서 맵 감소 노드의 태그에 다음 특성을 설정하십시오.
<property><name>mapred.reduce.tasks</name><value>4</value></property>
MapReduce Java 코드의 Main 메소드에서 :
Configuration conf = new Configuration();
Job job = new Job(conf, "10 million rows");
...
job.setNumReduceTasks(4);
나는 또한 시도했다 :
Configuration conf = new Configuration();
Job job = new Job(conf, "10 million rows");
...
conf.set("mapred.reduce.tasks", "4");
내지도 기능은 다음과 유사합니다.
public void map(Text key, Text value, Context context) {
CustomObj customObj = new CustomObj(key.toString());
context.write(new Text(customObj.getId()), customObj);
}
ID에 80,000 개의 다른 값이 있다고 생각합니다.
내 축소 기능은 다음과 유사합니다.
public void reduce(Text key, Iterable<CustomObj> vals, Context context) {
OtherCustomObj otherCustomObj = new OtherCustomObj();
...
context.write(null, otherCustomObj);
}
매퍼에서 생성 된 사용자 지정 개체는 WritableComparable을 구현하지만 Reducer에서 생성 된 다른 사용자 지정 개체는 WritableComparable을 구현하지 않습니다.
다음은 시스템 카운터, 작업 카운터 및 맵 축소 프레임 워크와 관련된 로그이며, 여기서 하나의 축소 작업 만 시작하도록 지정합니다.
map 100% reduce 100%
Job complete: job_201401131546_0425
Counters: 32
File System Counters
FILE: Number of bytes read=1370377216
FILE: Number of bytes written=2057213222
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=556345690
HDFS: Number of bytes written=166938092
HDFS: Number of read operations=18
HDFS: Number of large read operations=0
HDFS: Number of write operations=1
Job Counters
Launched map tasks=11
Launched reduce tasks=1
Data-local map tasks=11
Total time spent by all maps in occupied slots (ms)=1268296
Total time spent by all reduces in occupied slots (ms)=709774
Total time spent by all maps waiting after reserving slots (ms)=0
Total time spent by all reduces waiting after reserving slots (ms)=0
Map-Reduce Framework
Map input records=9440000
Map output records=9440000
Map output bytes=666308476
Input split bytes=1422
Combine input records=0
Combine output records=0
Reduce input groups=80000
Reduce shuffle bytes=685188530
Reduce input records=9440000
Reduce output records=2612760
Spilled Records=28320000
CPU time spent (ms)=1849500
Physical memory (bytes) snapshot=3581157376
Virtual memory (bytes) snapshot=15008251904
Total committed heap usage (bytes)=2848063488
편집 : 사용자 정의 파티 셔너, 정렬 비교기 및 그룹화 비교기를 도입하도록 MapReduce를 수정했습니다. 어떤 이유로 든 코드는 이제 두 개의 감속기를 시작하지만 (Oozie를 통해 예약 된 경우) 4 개는 아닙니다.
각 TaskTracker (및 JobTracker)에서 mapred.tasktracker.map.tasks.maximum 속성을 20으로 설정하고 다시 시작했지만 결과는 없습니다.
해결법
-
==============================
1.mapred-site.xml에서 다음 특성의 값은 무엇입니까?
mapred-site.xml에서 다음 특성의 값은 무엇입니까?
<property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>4</value> </property>
from https://stackoverflow.com/questions/21292940/setting-the-number-of-reducers-in-a-mapreduce-job-which-is-in-an-oozie-workflow by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 시작시 HiveServer2 정지 (0) | 2019.08.17 |
---|---|
[HADOOP] 새로 설치시 HDFS 공간 사용량 (0) | 2019.08.17 |
[HADOOP] 하이브 하중 특정 열 (0) | 2019.08.17 |
[HADOOP] hbase MR 작업을 실행할 때 cdh5.2 클러스터에 FileNotFoundException이 발생합니다. (0) | 2019.08.17 |
[HADOOP] hadoop 다중 클러스터에서 SSH 기본 포트 변경 [닫힘] (0) | 2019.08.17 |