স্পার্ক FIFO শিডিয়ুলারের সাহায্যে YARN ক্লাস্টার মোডে চলমান স্পার্ক 2.4.4 ব্যবহার করা Using
আমি একটি চলক সংখ্যক থ্রেড সহ থ্রেড পুল নির্বাহক ব্যবহার করে একাধিক স্পার্ক ডেটাফ্রেম অপারেশনগুলি (অর্থাত্ এস 3 তে ডেটা লিখন) জমা দিচ্ছি। আমার কাছে 10 ডলার থ্রেড থাকলে এটি ঠিকঠাক কাজ করে তবে আমি যদি কয়েকশ থ্রেড ব্যবহার করি তবে স্পার্ক ইউআই অনুসারে কোনও কাজ নির্ধারিত না হওয়ায় অচলাবস্থার উপস্থিতি উপস্থিত রয়েছে।
একই সাথে কয়টি কাজ নির্ধারিত হতে পারে তা নিয়ন্ত্রণ করে? ড্রাইভার সংস্থানসমূহ (যেমন মেমরি / কোর)? কিছু অন্য স্পার্ক কনফিগারেশন সেটিংস?
সম্পাদনা করুন:
আমার কোডটির সংক্ষিপ্তসার এখানে দেওয়া হল
ExecutorService pool = Executors.newFixedThreadPool(nThreads);
ExecutorCompletionService<Void> ecs = new ExecutorCompletionService<>(pool);
Dataset<Row> aHugeDf = spark.read.json(hundredsOfPaths);
List<Future<Void>> futures = listOfSeveralHundredThings
.stream()
.map(aThing -> ecs.submit(() -> {
df
.filter(col("some_column").equalTo(aThing))
.write()
.format("org.apache.hudi")
.options(writeOptions)
.save(outputPathFor(aThing));
return null;
}))
.collect(Collectors.toList());
IntStream.range(0, futures.size()).forEach(i -> ecs.poll(30, TimeUnit.MINUTES));
exec.shutdownNow();
এক পর্যায়ে, nThreads
বৃদ্ধি হিসাবে , স্পার্ক আর কোনও কাজের সময় নির্ধারণ করে বলে প্রমাণিত হয় নি:
ecs.poll(...)
শেষ পর্যন্ত সময় শেষ- কোনও সক্রিয় কাজ না দেখায় স্পার্ক ইউআই জবস ট্যাব
- স্পার্ক ইউআই এক্সিকিউটার্স ট্যাব কোনও নির্বাহকের জন্য কোনও সক্রিয় কাজ দেখায় না
- স্পার্ক ইউআই এসকিউএল ট্যাব
nThreads
কোনও চলমান আইডির সাথে চলমান অনুসন্ধানগুলি দেখায়
আমার মৃত্যুদন্ড কার্যকর করার পরিবেশটি
- এডাব্লুএস ইএমআর 5.28.1
- স্পার্ক 2.4.4
- মাস্টার নোড =
m5.4xlarge
- কোর নোড = 3x
rd5.24xlarge
spark.driver.cores=24
spark.driver.memory=32g
spark.executor.memory=21g
spark.scheduler.mode=FIFO
jstack -l
লকিংয়ের তথ্য সহ একটি থ্রেড ডাম্প পেতে চালান ।