Apache Spark s3a 커미터-스레드 스택 메모리 문제

0

질문

내가 정말 도움이 필요하기:

우리가 사용하는 Spark3.1.2 을 사용하려면 별도의 독립 클러스터입니다. 우리가 시작한 이후 사용하여 s3a directory 커미터,우리의 스파크는 작업 안정성과 성능이 크게 증가!

그러나 요즘 우리는 우리가 완전히 당황한 문제 해결이 s3a directory 커미터 문제에 대한 일이며,궁금해 당신은 어떤 생각을 가지고있는 경우,무슨 일이에요?

우리의 스파크 작업이기 때문에 실패의 자바 OOM(또는 오히려 프로세스 제한)오류가:

 An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext.

: java.lang.OutOfMemoryError: unable to create native thread: possibly out of memory or process/resource limits reached
    at java.base/java.lang.Thread.start0(Native Method)
    at java.base/java.lang.Thread.start(Thread.java:803)
    at java.base/java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:937)
    at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1343)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
    at java.base/java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:714)
    at org.apache.spark.rpc.netty.DedicatedMessageLoop.$anonfun$new$1(MessageLoop.scala:174)
    at org.apache.spark.rpc.netty.DedicatedMessageLoop.$anonfun$new$1$adapted(MessageLoop.scala:173)
    at scala.collection.immutable.Range.foreach(Range.scala:158)
    at org.apache.spark.rpc.netty.DedicatedMessageLoop.<init>(MessageLoop.scala:173)
    at org.apache.spark.rpc.netty.Dispatcher.liftedTree1$1(Dispatcher.scala:75)
    at org.apache.spark.rpc.netty.Dispatcher.registerRpcEndpoint(Dispatcher.scala:72)
    at org.apache.spark.rpc.netty.NettyRpcEnv.setupEndpoint(NettyRpcEnv.scala:136)
    at org.apache.spark.storage.BlockManager.<init>(BlockManager.scala:231)
    at org.apache.spark.SparkEnv$.create(SparkEnv.scala:394)
    at org.apache.spark.SparkEnv$.createDriverEnv(SparkEnv.scala:189)
    at org.apache.spark.SparkContext.createSparkEnv(SparkContext.scala:277)
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:458)
    at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:247)
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    at py4j.Gateway.invoke(Gateway.java:238)
    at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80)
    at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.base/java.lang.Thread.run(Thread.java:834)

Spark Thread Dump 쇼 5000 커미터는 스레드에서 불꽃 드라이버! 다음 예를 참고하십시오.

Thread ID   Thread Name Thread State    Thread Locks
1047    s3-committer-pool-0 WAITING 
1449    s3-committer-pool-0 WAITING 
1468    s3-committer-pool-0 WAITING 
1485    s3-committer-pool-0 WAITING 
1505    s3-committer-pool-0 WAITING 
1524    s3-committer-pool-0 WAITING 
1529    s3-committer-pool-0 WAITING 
1544    s3-committer-pool-0 WAITING 
1549    s3-committer-pool-0 WAITING 
1809    s3-committer-pool-0 WAITING 
1972    s3-committer-pool-0 WAITING 
1998    s3-committer-pool-0 WAITING 
2022    s3-committer-pool-0 WAITING 
2043    s3-committer-pool-0 WAITING 
2416    s3-committer-pool-0 WAITING 
2453    s3-committer-pool-0 WAITING 
2470    s3-committer-pool-0 WAITING 
2517    s3-committer-pool-0 WAITING 
2534    s3-committer-pool-0 WAITING 
2551    s3-committer-pool-0 WAITING 
2580    s3-committer-pool-0 WAITING 
2597    s3-committer-pool-0 WAITING 
2614    s3-committer-pool-0 WAITING 
2631    s3-committer-pool-0 WAITING 
2726    s3-committer-pool-0 WAITING 
2743    s3-committer-pool-0 WAITING 
2763    s3-committer-pool-0 WAITING 
2780    s3-committer-pool-0 WAITING 
2819    s3-committer-pool-0 WAITING 
2841    s3-committer-pool-0 WAITING 
2858    s3-committer-pool-0 WAITING 
2875    s3-committer-pool-0 WAITING 
2925    s3-committer-pool-0 WAITING 
2942    s3-committer-pool-0 WAITING 
2963    s3-committer-pool-0 WAITING 
2980    s3-committer-pool-0 WAITING 
3020    s3-committer-pool-0 WAITING 
3037    s3-committer-pool-0 WAITING 
3055    s3-committer-pool-0 WAITING 
3072    s3-committer-pool-0 WAITING 
3127    s3-committer-pool-0 WAITING 
3144    s3-committer-pool-0 WAITING 
3163    s3-committer-pool-0 WAITING 
3180    s3-committer-pool-0 WAITING 
3222    s3-committer-pool-0 WAITING 
3242    s3-committer-pool-0 WAITING 
3259    s3-committer-pool-0 WAITING 
3278    s3-committer-pool-0 WAITING 
3418    s3-committer-pool-0 WAITING 
3435    s3-committer-pool-0 WAITING 
3452    s3-committer-pool-0 WAITING 
3469    s3-committer-pool-0 WAITING 
3486    s3-committer-pool-0 WAITING 
3491    s3-committer-pool-0 WAITING 
3501    s3-committer-pool-0 WAITING 
3508    s3-committer-pool-0 WAITING 
4029    s3-committer-pool-0 WAITING 
4093    s3-committer-pool-0 WAITING 
4658    s3-committer-pool-0 WAITING 
4666    s3-committer-pool-0 WAITING 
4907    s3-committer-pool-0 WAITING 
5102    s3-committer-pool-0 WAITING 
5119    s3-committer-pool-0 WAITING 
5158    s3-committer-pool-0 WAITING 
5175    s3-committer-pool-0 WAITING 
5192    s3-committer-pool-0 WAITING 
5209    s3-committer-pool-0 WAITING 
5226    s3-committer-pool-0 WAITING 
5395    s3-committer-pool-0 WAITING 
5634    s3-committer-pool-0 WAITING 
5651    s3-committer-pool-0 WAITING 
5668    s3-committer-pool-0 WAITING 
5685    s3-committer-pool-0 WAITING 
5702    s3-committer-pool-0 WAITING 
5722    s3-committer-pool-0 WAITING 
5739    s3-committer-pool-0 WAITING 
6144    s3-committer-pool-0 WAITING 
6167    s3-committer-pool-0 WAITING 
6289    s3-committer-pool-0 WAITING 
6588    s3-committer-pool-0 WAITING 
6628    s3-committer-pool-0 WAITING 
6645    s3-committer-pool-0 WAITING 
6662    s3-committer-pool-0 WAITING 
6675    s3-committer-pool-0 WAITING 
6692    s3-committer-pool-0 WAITING 
6709    s3-committer-pool-0 WAITING 
7049    s3-committer-pool-0 WAITING 

이 고려하는 우리의 설정을 허용하지 않는 100 개 이상의 스레드... 또는 우리가 무언가를 이해하지 않...

여기에 우리의 구성과 설정:

fs.s3a.threads.max  100 
fs.s3a.connection.maximum  1000 
fs.s3a.committer.threads 16   
fs.s3a.max.total.tasks  5
fs.s3a.committer.name   directory
fs.s3a.fast.upload.buffer                 disk
io.file.buffer.size                                1048576
mapreduce.outputcommitter.factory.scheme.s3a    - org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory

우리는 시도했다 다른 버전의 불꽃 Hadoop 클라우드 라이브러리지만,문제가 지속적으로 동일합니다.

https://repository.cloudera.com/content/repositories/releases/org/apache/spark/spark-hadoop-cloud_2.11/2.4.0-cdh6.3.2/spark-hadoop-cloud_2.11-2.4.0-cdh6.3.2.jar

https://repository.cloudera.com/artifactory/libs-release-local/org/apache/spark/spark-hadoop-cloud_2.11/2.4.0.7.0.3.0-79/spark-hadoop-cloud_2.11-2.4.0.7.0.3.0-79.jar

https://repo1.maven.org/maven2/org/apache/spark/spark-hadoop-cloud_2.12/3.2.0/spark-hadoop-cloud_2.12-3.2.0.jar

https://repository.cloudera.com/artifactory/libs-release-local/org/apache/spark/spark-hadoop-cloud_2.12/3.1.2.7.2.12.0-291/spark-hadoop-cloud_2.12-3.1.2.7.2.12.0-291.jar

우리는 정말 감사할 수 있는 경우 포인트는 올바른 방향으로 우리를 가리

amazon-s3 apache-spark hadoop java
2021-11-23 16:49:54
2

최고의 응답

3

HADOOP-16570 S3A 원회는 누출 threads/올 OOM 에 일/작업에 투입 규모

이동 hadoop-3.3.0 바이너리에 대한 해결책을 마련 중입니다. 이를 3.3.1 일부를 해결하는 기타 문제,특히 중복 jobIDs 에서 나오는 불꽃이 있습니다. 지 거슬러 올라가는 것이 CDH 릴리스 해결하는 갔다 나는 일할 수 있는 경우에 당신은 정말 필요합니다. 지 CDH6.x,확실히

2021-11-28 12:13:50

감사합니다! 실제로 모든 것을 우리가 도움이 되지 않았습니다.
Ofer Eliassaf

우리의 문제는 지금보고에 대한 올바른 드라이버-우리는 어디에 가져오는 불꽃 클라우드 항아리와 관련된 버전입니까? 이동 작업에 대한 불꽃 3.1.2: mvnrepository.com/artifact/org.apache.spark/... ??
Ofer Eliassaf

스파크는 클라우드 병해야 하나의 불꽃 배포판의 얇은 바인딩 클래스
stevel

안녕하세요,우리는 이 기능을 사용하려면에서 스파크 3.1.2 는 오는 번들로 제공 Hadoop3.2. 그것은 안전을 제공하 spark-hadoop-클라우드 3.3.1 함께 하둡 3.2 라이브러리? (우리는 노동이 안전하고 있어 일부 diffuculties 으로 사육사 큐레이터 라이브러리는 불일치를 구아바. 빠른 트랙 갈 수 있는 번들로 제공되며 추가 comitter 의 3.3.1. 작동 할 것인가?). 감사합니다!
Ofer Eliassaf

를 사용하여 스파크-hadoop-구름-3.1.2;당신이해야의 전체 세트 hadoop-3.3.x 완벽하게 동기화됩니다. 또는 백 포트의 커미터만 패치를 하둡 3.2
stevel

이 스파크-hadoop-구름-3.1.2 는 이에(그리고 그것은 악몽을 찾을지 않기 때문에 공식 maven 릴리스)입니다. 우리가 무슨 일을 했다는 옵션:1(는 우리의 현재 설치):사용하지 않을 시에는 밀폐하여 놓 3.1.2 되지 않는 버전입니다. 우리는 추가 Hadoop3.3.1 바이너리가 우리가 추가 spark-hadoop-구름-3.2.0 를 해결하의 커미터 문제입니다. 옵션 2(는 우리가 고려):가 Spark3.1.2 번들(와 함께 제공되는 하둡 3.2)및 추가 spark-hadoop-구름-3.2.0 에 고정하기 위해 comitter 먼저 설치. 더 나은 어떤 생각하십니까?
Ofer Eliassaf

실 누설에서는 하둡-aws;수있는 기능을 제공합니다 hadoop*필요로 하는 업데이트입니다.
stevel
1

체크아웃 이 문서 에 조정을 위한 S3A.

특히 난에서 보이도록 그 아래에 분류된 배열:

를 수행해야 할 수 있습니다주의 조정 위험을 줄이기 위해 밖으로 실행의 메모리,하는 경우에 특히 데이터를 버퍼 메모리에 있습니다. 가 번호 매개변수 조정할 수 있습니다:

의 총수는 스레드에서 사용할 수 있는 파일시스템에 대한 데이터 업로드 또는 어떤 다른 대기 파일시스템이 작업입니다. 이 설정에서 fs.s3a.스레드입니다.max.

숫자의 작업이 될 수 있는 대기 중인 실행을 위해 기다리고, 스레드가 있습니다. 이 설정에서 fs.s3a.max.니다.작업입니다.

블록의 수 있는 단일 출력 스트림을 가질 수 있습 활성 (즉,업로드되고 스레드에 의해 또는 대기에서 파일 시스템 실 큐). 이 설정에서 fs.s3a.빠릅니다.업로드 할 수 있습니다.active.블록이 있습니다.

는 시간의 길이는 스레드에 머물 수 있습 thread pool 기 전에 은퇴했다. 이 설정에서 fs.s3a.스레드입니다.keepalivetime.

나는 당신이 찾을 수 있습니다 스레드 수를 줄이 제거됩니다.

또한 제안을 조정 fs.s3a.fast.upload.active.blocks 그것은 또한 완화 메모리 부족이 있습니다. 나는 생각을 줄 수 있어야 당신의 첫 번째 이동으로 100 개 이 작은 공격적이다. 당신은 모자를 씌운 가능성이 대역폭 및 스레드를 추가 가능성이 없습니다 아무것도 하지만 소비하는 메모리.

2021-11-28 12:08:19

당신은 무엇 드라이버는 스레드가? 내가 이해하는 경우 제대로 구성 스레드해야 한 노동자입니다. 어떤 드라이버는 스레드가?
Ofer Eliassaf

을 살펴 s3 커미터 설명서입니다.(100%과 같이 하지만 좋은 장소에 대해 배우 s3&스파크)연결부는 아래에 있습니다. 올리는 아이디어 파일을 전달하며,드라이버들은 최선을 다합니다. 우리는 알 수 없습니다 이 이 파일에 쓰지만 그것은 논리적으로 드라이버만이 알고 있어 작업의 성공/실패했습니다. 내가 찾지 못했연 총을 주장이 사실이지만 합리적인 것으로 보인/그럴듯하다. github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/...
Matt Andruff

이것은 또한 그들에게 감를 사용하는 이유는 무엇 100 스레드 인당으로 끝날 수 있었 5000 스레드에 운전사 그리고 왜 다시 사용하는 것을 고려해 보아야 합니다 번호가 추가하지 않습으로 많은 압력에서 드라이버입니다. (을 줄일 수)
Matt Andruff

에 보답하여@Stevel-그것은 잘 알려진 하둡 버그가 이전 버전의 커미터!
Ofer Eliassaf

매우 감사드립니다 핑다.
Matt Andruff

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................