2014-09-25 3 views
4

Apache Spark에서 결과를 S3로 업로드 할 때 주요 성능 문제가 나타납니다. 나의 이해에 따라 그 다음 단계 ... 마지막 단계의Apache Spark에서 S3로 업로드 성능 문제

  1. 출력이 HDFS에 _temp/ 테이블에 기록되고 동일한 특정 S3 폴더 안에 "_temporary" 폴더로 이동을 간다.

  2. 전체 프로세스가 완료되면 Apache가 실행되어 saveAsTextFile 단계가 완료되고 "_temporary" 폴더의 파일이 S3으로 기본 폴더로 이동됩니다. 이것은 실제로 오랜 시간이 걸립니다 [파일 당 약 1 분 (평균 크기 : 600 MB BZ2)]. 이 부분은 보통 stderr 로그에 기록되지 않습니다.

내가 AWS EMR에 Hadoop 2.2 아파치 Spark 1.0.1을 사용하고 있습니다.

누구에게이 문제가 발생 했습니까?

업데이트 1

어떻게이 이동 프로세스를 수행 스레드의 수를 증가시킬 수있다?

어떤 제안은 매우 감사합니다 ...

감사

답변

0

나는 기능 아래 사용합니다. 그것은 s3에 파일을 업로드합니다. 그것은 약 60 GB, gz 파일을 4-6 분에 업로드합니다.

 ctx.hadoopConfiguration().set("mapred.textoutputformat.separator", 
       ","); 
     counts.saveAsHadoopFile(s3outputpath, Text.class, Text.class, 
       TextOutputFormat.class); 

출력 파일을 추가로 만드십시오. 더 작은 수의 파일로 업로드 속도가 빨라집니다.

API 세부 saveAsHadoopFile [F < : org.apache.hadoop.mapred.OutputFormat [_, ] (경로 : 문자열, keyClass : 클래스 [, valueClass : 클래스 [] outputFormatClass : 클래스 [F], 코덱 : 클래스 [ < : org.apache.hadoop.io.compress.CompressionCodec]) : 단위 제공된 코덱으로 압축하여 Hadoop 지원 파일 시스템에 RDD를 출력합니다.

+0

답변을 자세히 기재 해주세요. 그것은 작동하지 않습니다 ... "Text.class"를 사용하여 오류가 발생했습니다 ... – user3279189

+0

saveAsHadoopFile [F <: org.apache.hadoop.mapred.OutputFormat [_, _]] (path : String, 클래스 : [_], valueClass : 클래스 [_], outputFormatClass : 클래스 [F], 코덱 : 클래스 [_ <: org.apache.hadoop.io.compress.CompressionCodec>) : 단위 임의의 Hadoop에 출력 지원되는 파일 시스템, 제공된 코덱으로 압축. 귀하의 키와 가치에 맞는 수업을하십시오. –

관련 문제