복붙노트

[HADOOP] 어떻게 스파크와 사용자 정의 S3 서버에 새로운 하둡 마루 마법으로 참여를 사용하는

HADOOP

어떻게 스파크와 사용자 정의 S3 서버에 새로운 하둡 마루 마법으로 참여를 사용하는

나는 스파크 2.4.0 및 하둡 3.1.1 있습니다. 하둡 문서에 따르면, 지속적으로 S3에 마루 파일 쓰기를 허용하는 새로운 매직 커미터를 사용하는, 내가 설정의 conf / 스파크 default.conf에서 그 값을했습니다 :

spark.sql.sources.commitProtocolClass       com.hortonworks.spark.cloud.commit.PathOutputCommitProtocol
spark.sql.parquet.output.committer.class    org.apache.hadoop.mapreduce.lib.output.BindingPathOutputCommitter
spark.hadoop.mapreduce.outputcommitter.factory.scheme.s3a    org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory
spark.hadoop.fs.s3a.committer.name          magic
spark.hadoop.fs.s3a.committer.magic.enabled true

이 구성을 사용하는 경우 I는 예외로 끝날 :

java.lang.ClassNotFoundException: com.hortonworks.spark.cloud.commit.PathOutputCommitProtocol

내 질문은 두 배, 처음 엔 제대로 하둡 3.1.1 일관 S3에 마루 파일의 쓰기를 할 수 있음을 이해합니까? 내가 잘 이해 않은 경우 둘째, 방법 스파크에서 제대로 새로운 커미터를 사용 하는가?

해결법

  1. ==============================

    1.Kiwy : 그 내 코드입니다 :이 당신을 도울 수 있습니다. 클래스의 일부는 ASF 스파크 출시에 합격하지 않은,하지만 (I 하류에 넣어 수 있습니다 당신은 하둡 JAR 파일에서 찾을 수 있습니다, 나는의 관련 종속와 ASF 자료를 구축에서 이동을 가질 수있다, 그들은 사용)이있을 수 있습니다

    Kiwy : 그 내 코드입니다 :이 당신을 도울 수 있습니다. 클래스의 일부는 ASF 스파크 출시에 합격하지 않은,하지만 (I 하류에 넣어 수 있습니다 당신은 하둡 JAR 파일에서 찾을 수 있습니다, 나는의 관련 종속와 ASF 자료를 구축에서 이동을 가질 수있다, 그들은 사용)이있을 수 있습니다

    당신은 S3Guard은 "준비 커미터"를 사용하는 설정이 필요하지 않습니다; 그것은 커밋 단계에서 일관된 객체 저장소 목록을 필요로 단지 "마법"변종입니다.

  2. ==============================

    2.편집하다: OK, 지금, 나는 그 매개 변수와 함께 minio의 마지막 버전을 사용하려고했습니다 조금 오래된되는 서버 하나의 두 인스턴스를했습니다 :

    편집하다: OK, 지금, 나는 그 매개 변수와 함께 minio의 마지막 버전을 사용하려고했습니다 조금 오래된되는 서버 하나의 두 인스턴스를했습니다 :

    sc.hadoopConfiguration.set("hadoop.fs.s3a.path.style.access","true")
    sc.hadoopConfiguration.set("hadoop.fs.s3a.fast.upload","true")
    sc.hadoopConfiguration.set("hadoop.fs.s3a.fast.upload.buffer","bytebuffer")
    sc.hadoopConfiguration.set("fs.s3a.path.style.access","true")
    sc.hadoopConfiguration.set("fs.s3a.multipart.size","128M")
    sc.hadoopConfiguration.set("fs.s3a.fast.upload.active.blocks","4")
    sc.hadoopConfiguration.set("fs.s3a.committer.name","partitioned")
    

    나는 문제없이 지금까지 쓸 수 있어요. 이 설정에 약간 오래된하지만 내 신속 서버 :

    sc.hadoopConfiguration.set("fs.s3a.signing-algorithm","S3SignerType")
    

    제대로 partionner을 지원하지 않는 것 같습니다.

    "하둡 S3guard을"에 관한 : 그것은 현재 하둡에 수 있어야 S3 파일의 메타 데이터를 유지 하둡 S3guard 수 없습니다. S3guard하지만 DynamoDB의에 독점적 인 아마존 서비스를 의존하고 있습니다. SQLite는 파일 또는 메타 데이터를 저장하기 위해 다른 DB 시스템과 같은 지금은 대안이 없다. 당신이 minio 또는 기타 S3 구현과 S3를 사용하는 경우 따라서, 당신은 DynamoDB의 누락하고 있습니다. S3guard를 작동하는 방법이 문서에서는 잘 설명

  3. from https://stackoverflow.com/questions/53388976/how-to-use-new-hadoop-parquet-magic-commiter-to-custom-s3-server-with-spark by cc-by-sa and MIT license