ปูมบันทึกของ apache ไฟ s3a committer-เธรดดิ-ออกจากปัญหาเรื่องความทรงจำ

0

คำถาม

ฉันต้องการความช่วยเหลือได้ที่นี่:

เรากำลังใช้ Spark3.1.2 โดยใช้ standalone เป็นกลุ่ม. ตั้งแต่ที่เราเริ่มใช้ s3a ไดเรกทอรี committer ของเราออลสปาร์คนงานความมั่นคงและการแสดงเริ่มสำคัญ!

ช่วงนี้แต่เราต้อแปลกใจ troubleshooting นี้ s3a ไดเรกทอรี committer ปัญหาสำหรับวันและเรื่องน่าประหลาดใจถ้าคุณรู้ไหมว่าเกิดอะไรขึ้น?

ของออลสปาร์คทำงานล้มเหลวเพราะของจาวา 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)

ออลสปาร์คเธรดทิ้งแสดงจบ 5000 committer เธรดข่าวอยู่ที่ออลสปาร์คนขับรถ! นี่เป็นตัวอย่าง:

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 เธรด... หรือพวกเราไม่เข้าใจอะไรบางอย่าง...

นี่คือของเรา configurations และการตั้งค่า:

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 committers อยรั่วเธรด/ต่างหา OOM บงาน/งานก่อนที่ปรับขนาด

ย้ายขึ้นไป hadoop-3.3.0 binaries สำหรับแก้ไขมันได้ เข้าท่าดีนิเราจะทำทุกอย่างที่เราทำเพื่อ 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

ที่ออลสปาร์คคลาวด์โหลต้องเป็นหนึ่งสำหรับความเปล่งประกา distro;มันเป็นแค่บางอผูกเรียน
stevel

สวัสดีค่ะเรากำลังพยายามจะเปิดใช้งานในออลสปาร์ค 3.1.2 ซึ่งเป็นมารวมด้วยกัน type of djvu document กับ Hadoop 3.2. มันปลอดภัยเพื่อให้ออลสปาร์ค-hadoop-คลาวด์สำหรับ 3.3.1 ด้วยกันกับ Hadoop 3.2 ไลบรารีแบบใช้ร่? (เรากำลังพยายามจะไปกับ unbundled เวอร์ชั่นและมีบางอย่า diffuculties กับ Zookeeper ดูแลไลบรารี mismatch ต้องฝรั่. เป็นตามรวดเร็วจะต้องไปกับคนรวมด้วยกัน type of djvu document และเพิ่ม comitter ของ 3.3.1. มันจะได้ผลไหม?). ขอบคุณ!
Ofer Eliassaf

ใช้ที่ออลสปาร์ค-hadoop-คลาวด์-3.1.2;คุณจะต้องเต็มไปด้วตั้งของ hadoop-3.3.x มาะ. หรือ backport ที่ committer ลือเพียงเพื่อ hadoop 3.2
stevel

นี่ไฟ-hadoop-คลาวด์-3.1.2 มีข้อผิดพลาดมัน(และมันเป็นฝันร้ายจะหามันเจอตั้งแต่มันไม่ได้อยู่ในย่างเป็นทางการ maven ที่พึ่งถูกปล่อยตัว). สุดท้ายเราต้องทำคือ:ใช้ตัวเลือก 1(ของเราตั้งค่าปัจจุบัน):ใช้ไฟ 3.1.2 unbundled รุ่น เราเพิ่มเข้า Hadoop 3.3.1 binaries เราเพิ่มจุ-hadoop-คลาวด์-3.2.0 ที่จะต้องแก้ไขที่ committer เหมือนไม่มีปัญหาอยู่เลยสินะ ตัวเลือก 2(ซึ่งเราพิจารณา):เอา Spark3.1.2 รวมด้วยกัน type of djvu document(ซึ่งมาพร้อมกับ Hadoop 3.2)และเพิ่มจุ-hadoop-คลาวด์-3.2.0 สำหรับซ่อม comitter issu. ซึ่งก็คือดีกว่าอยู่ในความคิดเห็นของคุณ?
Ofer Eliassaf

ด้า leakage อยู่ใน hadoop-aws;มันควรจะเป็น hadoop-*ซึ่งต้องการกำลังปรับปรุง.
stevel
1

กช่อ บทความนี้ บนช่างสำหรับ S3A.

โดยเฉพาะฉันจะดูตอนนี้ถึงแม้ว่ามัน categorized อยู่ใต้อาเรย์:

คุณอาจจะต้องแสดงระวังตัวช่างเพื่อลดความเสี่ยงที่จะวิ่งออกจากความทรงจำโดยเฉพาะอย่างยิ่งถ้าข้อมูลคือ buffered ในหน่วยความจำจนหมดแล้ว มันเป็น จำนวนพารามิเตอร์ซึ่งสามารถจะปรั:

คนทั้งหมดจำนวนเธรดที่มีอยู่ในระบบไฟล์สำหรับข้อมูล uploads หรืออื่นรายการในคิวการพิมพ์ระบบแฟ้มปฏิบัติการนี้ นี่มันตั้งอยู่ fs.s3a.เธรด.แม็กซ์.

จำนวนของปฏิบัติการซึ่งสามารถเป็นรายการในคิวการพิมพ์สำหรับการประมวลผลซีน เส้นด้าย นี่มันตั้งอยู่ใน fs.s3a.แม็กซ์.ทั้งหมดงาน.

จำนวนของบล็อกซึ่งเป็นโสดผลส่งออกข้อมูลเสียงได้ที่ทำงานอยู่ (นั่นคือการอัปโหลดไปโดยด้านหรือรายการในคิวการพิมพ์อยู่ในระบบแฟ้ม เธรดคิว). นี่มันตั้งอยู่ใน fs.s3a.รวดเร็วอัปโหลดการสืบสวนตรงไหนบล็อก.

ความยาวของเวลามันเป็วลือไร้สาระพวกนั้นอีกด้าสามารถอยู่ในเธรดสระว่ายน้ำ ก่อนที่มันเป็นเกษียณแล้ว นี่มันตั้งอยู่ใน fs.s3a.เธรด.keepalivetime.

ฉันคิดว่าคุณอาจจะเจองลดจำนจำนวนของเธรดข่าวจะลบความทรงจำความกดดัน

ฉันยังขอแนะนำให้คุณท่วงทำนอง fs.s3a.fast.upload.active.blocks มันจะยังบรรเทาภาวามทรงจำความกดดัน ฉันคิดว่าลดจำนที่นอนผ้าลินินควรจะเป็นคนแรกของย้ายที่ 100 คืออาจจะรุกมากไปหน่อย คุณดูเหมือนอุดในแบนด์วิธอนและเพิ่มเธรดข่าวไม่น่าจะทำอะไรแต่กินหน่วยความจำจนหมดแล้ว

2021-11-28 12:08:19

คุณรู้ไหมว่าอะไรที่ไดรเวอร์เธรดเป็นเพื่อ? ถ้าผมเข้าใจอย่างถูกต้องการปรับแต่งวนเธรดข่าวควรจะเป็นสำหรับคนงาน อะไรคือไดรเวอร์เธรดข่าวสำหรับ?
Ofer Eliassaf

ดู s3 committer เอกสารอ้างอิง(ยังไม่ 100%แบบเดียวกับที่นี้แต่เป็นสถานที่ที่ดีที่จะเรียนรู้เกี่ยวกับ s3&ไฟ)เชื่อมโยงด้านล่างนี้ มันต่างหาความคิดนั่นเป็นแฟ้มสื่อสารเพื่อคนขับและที่พวกเขาเป็นคนที่ไว้ใจได้ เราไม่สามารถคำถามที่สำคัญคือหนูรู้สึกแบบเดียวกันกับแฟ้มนี้เขียนแต่มันดูเหมือนสมเหตุสมผลเป็นคนขับรถคือคนเดียวที่รู้เรื่องงานสำเร็จ/ล้มเหลว ฉันไม่ได้เจอหลักฐานชิ้นอ้างว่านี่เป็นเรื่องจริงแต่มันดูเหมือนว่ามีเหตุผลหน่อย/ไม่ดูน่าเชื่อถือ. github.com/apache/hadoop/blob/trunk/hadoop-tools/hadoop-aws/src/...
Matt Andruff

นี่คงยังงั้นเหตุผลว่าทำไมใช้ 100 เธรดที่ติดต่องานอาจจะไปเจอกับ 5000 เธรดข่าวอยู่คนขับและทำไมต้องอีกครั้งคุณควรพิจารณาโดยใช้เบอร์นั้นจะไม่เพิ่มเป็นมากกดดันคนขับ (ลดของเธรดจำนวน)
Matt Andruff

ดูคำตอบโดย@Stevel-มันเป็นที่รู้จัก hadoop ดักฟังก่อนหน้านี้กับรุ่นของ committer!
Ofer Eliassaf

ขอบคุณมากสำหรับ pinging องฉัน
Matt Andruff

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่