2016-06-25 3 views
0

저는 hadoop을 배우고 있으며, 큰 데이터 프로젝트로서 프로덕션 환경에서 사용할 수있는 프로젝트에 대해 실험하고 있습니다. 현재 어쨌든 소량의 데이터로 일부 테스트를 수행하고 있습니다.Pig에서 내 작업이 병렬로 실행되지 않는 이유는 무엇입니까?

a = load 's3n://mybucket/user_*.json' using com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS (json:map []); 
b = FOREACH a GENERATE flatten(json#'user') as (m:map[]) ; 

는 그들은 단지 하나의 객체를 포함하지만, 이들의 bounch가,의 파일이 작은 가정 해 봅시다하십시오 나는 다음과 같이 돼지에서로드 JSON 파일의 bounch이 따를 시나리오입니다. 나는 FOREACH가 병렬로 더 많은 파일을 한번에 열어 볼 수 있다고 생각하고있다. 내가 틀린가? amazon c3.xlarge istance에서 프로그램을 실행하는 데 약 10 초가 소요되며 약 400 개의 파일이 있습니다. C#으로 프로그램을 실행하면 초 단위로 실행할 것입니다. 어디에서 잘못 되었나요?

+0

C#은 몇 초 안에 s3의 파일에서 수백 개의 파일을 읽을 수 있습니까? 나는 그것에 대해 확실하지 않다 –

+0

어떤 경우 에든 병렬 처리를 원한다면, 돼지 –

+0

@ cricket_007이 아닌 스파크를 사용하십시오. 그래서 s3가 병목 현상입니까? 하지만 어쨌든 하나 이상의 매퍼가 실행되는 것을보아야합니까? –

답변

1

돼지는 작업을 병렬로 실행합니다. 돼지가 처음에는 mapreduce로 실행되고 전체 스크립트를 최적화하기 때문에 시간이 약간 걸립니다. 따라서 작은 데이터 세트에서 작업하는 것이 돼지에서 느려질 것입니다. 큰 데이터 세트에 사용해야합니다. 작은 데이터에 대한 돼지의 병렬 작업 수를 늘리려면 FOREACH 행에서 PARALLEL 명령을 사용할 수 있습니다. 그렇지 않으면 병렬 처리를 n으로 설정하기 위해 default_parallel n을 설정하여 전체적으로 감속기의 수를 늘릴 수 있습니다. 마지막으로 돼지가 매퍼로 모든 작업을 실행 중이고 파일 크기가 작을 때 매퍼 수가 너무 작 으면 매퍼 구성을 변경하여 매퍼 수를 늘려야 할 수 있습니다.

관련 문제