2011-06-10 2 views
5

이와 같이 보입니다. 클러스터의 기본 블록 크기가 128MB 인 클러스터에 파일 집합이 있습니다. 스트리밍 작업을 처리하는 스트리밍 작업이 있으며 스트리밍 작업에서 생성 된 출력 파일에 다른 블록 크기, 특히 16MB를 사용하고 싶습니다. 내가 생각 일 것이다 다음Hadoop Streaming 작업에서 생성되는 출력 파일의 블록 크기를 어떻게 설정할 수 있습니까?

$ HADOOP_HOME/빈/하둡 항아리 $ HADOOP_HOME /있는 contrib/스트리밍/하둡 - 0.20.1 + 152 streaming.jar -D dfs.block.size = 16777216 -D mapred .job.name = '로그 프로세서'-D mapred.reduce.tasks = 5 -D mapred.output.compress = true -D mapred.output.compression.type = BLOCK -input/production/beacon/vbox */20110609/00/ACCESS_LOG - 출력/사용자/ME/logprocess/20110609/00/ACCESS_LOG -mapper/빈/고양이가 org.apache.hadoop.mapred.SequenceFileOutputFormat

아니 사랑 -outputformat, 파일이에서 생산/사용자/me/logprocess/20110609/00/access_log는 모두 128MB 클러스터의 기본 블록 크기를 사용합니다. 나는 dfs.block.size를 명령의 fs.local.block.size로 바꾸려고 시도했지만 결과는 같았다. 스트리밍 작업에서이를 제어하는 ​​방법에 대한 아이디어가 있습니까?

답변

-1

"정확한"블록 크기는 아니지만 가능한 것은 감속기 수를 설정하는 것입니다. 이것이 작동하는 방법은 각 감속기가 하나의 파일을 출력하므로 OUTPUT 파일이 128MB (입력과 관련이 없음)이고 각 출력 파일이 각각 16K를 초과하지 않기를 원한다면 8 개의 감속기 (128/16)를 할당 할 수 있습니다. 참고 : 파일은 각각 , 약 16K 일 수 있으며 모든 파일이 < 16K가 될 것이라는 보장은 없습니다.

관련 문제