최근까지 standalone 모드로 쓰다가 pseudo-distribution 모드로 바꿨거든(이라고 생각하고 있음)?
그래서 뭘 출력하게 코드짜면서 코드 내에서 reducer task를 2개쓰도록 정의해줘서 출력때도 task 2개 돌렸다고 나오는데
출력물을 보면 1개치만 출력하는데, 이게 모드가 제대로 설정 안된거니? 아니면 다른문제일까?
최근까지 standalone 모드로 쓰다가 pseudo-distribution 모드로 바꿨거든(이라고 생각하고 있음)?
그래서 뭘 출력하게 코드짜면서 코드 내에서 reducer task를 2개쓰도록 정의해줘서 출력때도 task 2개 돌렸다고 나오는데
출력물을 보면 1개치만 출력하는데, 이게 모드가 제대로 설정 안된거니? 아니면 다른문제일까?
출력물이 1개라는게 리듀서가 2개인데 hdfs에 파일을 한개만 떨궜다는거냐?
그러니까 원하는 전체출력물에 라인수가 20개 있어야되는데 실제로 출력된건 리듀서 1개치만 출력한 라인 10개짜리 출력물이 나옴.
일단 jobtracker ui 가서보면 완료된 job에 reduce task 갯수가 나올거임 거기에서 reduce task가 2개있으면 제대로 설정된거임
클러스터 셋팅이 잘못되어서 tasktracker가 하나만 떳어도 reduce task가 2개면 하나씩 순차적으로 실행되기때문에 두개 다 실행하게 되어있음
거기서 reduce task가 2개 나오긴 하더라구...그럼 다른 문제이려나;
reduce task 갯수 설정 풀어서 그냥 리듀서 1개로 진행할땐 제대로 출력 다되던데 흠..
리듀서에서 context에 write 제대로 20번 실행된거 맞음? write할때마다 System.out 에 찍어서 로그를 봐봐
함 확인해봐야긋다 ㄳㄳ
map에서 뭔가를 넘겨서 reduce에 썻을수 있는데, 참고로 mapper가 write할때 key를 한종류만 쓰거나 그런짓거리를 하면 reduce task를 암만 2개 만들어봐야 reduce 자체가 실행 안되어서 그런걸수있다
되게 멍청한 문제였음. 사실 출력 다 된건데 내가 그중에 출력물을 한개만 파일시스템으로 복사해와서 이 사단이 난거였음. 고마워 여튼ㅋㅋ 어째 task 아웃풋은 출력물의 양에 상관없이 출력 양이 같더라고 ㅋㅋ