যখন অনেকগুলি স্পার্ক কাজ একই সাথে নির্ধারিত হয় তখন ডিডলক হয়


17

স্পার্ক 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

দয়া করে চেক করুন spark.apache.org/docs/latest/job-schedulating.html
দশম

একটি নির্দিষ্ট বিভাগ আছে যা এটি নিয়ে আলোচনা করে? আমি গত কয়েকদিনে এই ডক্সগুলি বেশ কয়েকবার পড়েছি এবং আমি যে উত্তরটি খুঁজছি তার সন্ধান পাইনি।
স্কট

2
থ্রেড পুল নির্বাহকের মাধ্যমে স্পার্ক কাজ জমা দেওয়ার জন্য আপনি যে কোডটি ব্যবহার করছেন তা দয়া করে দয়া করে দেখাতে পারেন? মনে হচ্ছে স্পার্ক কাজ জমা দেওয়ার আগে অচলাবস্থা ঘটছে।
সেলিম

1
আপনি কি আপনার কোড পোস্ট করতে পারেন? আপনার এনভিভি: সিপিইউ, র‌্যামের বিষয়ে দয়া করে বিশদ সরবরাহ করুন; এছাড়াও আপনি কীভাবে থ্রেডগুলি তৈরি করছেন: একসাথে বা 10 টি ছোট গ্রুপে?
সাহেদ

দুঃখিত, আপনি কীভাবে কাজটি নির্ধারিত নয় মানে? তারা স্পার্ক ইউআইতে উপস্থিত হয় না, বা তারা কাজের তালিকায় উপস্থিত হয়, তবে কার্যগুলি কার্যকর হয় না? যে কোনও উপায়ে, যদি আপনার কোনও অচলাবস্থার সন্দেহ হয় তবে দয়া করে jstack -lলকিংয়ের তথ্য সহ একটি থ্রেড ডাম্প পেতে চালান ।
ড্যানিয়েল দারাবস

উত্তর:


0

যদি সম্ভব হয় তবে চাকরির আউটপুট এডাব্লুএস ইলাস্টিক ম্যাপ্রেডুজ এইচডিএফএসে লিখুন (স্থানীয় তাত্ক্ষণিক নাম এবং স্থানীয় এইচডিএফএসের আরও ভাল ফাইল আইওর উপর নির্ভর করতে) এবং ফাইলগুলিকে এস 3 এ স্থানান্তরিত করার জন্য একটি ডিএসটিসিপি পদক্ষেপ যুক্ত করুন, নিজেকে পরিচালনা করার সমস্ত ঝামেলা বাঁচাতে কোনও ফাইল সিস্টেম হওয়ার চেষ্টা করে কোনও অবজেক্ট স্টোরের অন্তর্গত। স্থানীয় এইচডিএফএসে লেখার মাধ্যমে আপনি ডিরেক্টআউটপুটকমিটরের সাথে সম্পর্কিত ডেডলক ট্র্যাপগুলিতে না পড়েই পালিয়ে যাওয়া কাজগুলি নিয়ন্ত্রণের জল্পনা সক্ষম করতে পারবেন।

আপনার যদি অবশ্যই এস 3 ব্যবহার করে আউটপুট ডিরেক্টরি হিসাবে নিশ্চিত হন যে নীচের স্পার্ক কনফিগারেশন সেট করা আছে set

spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version 2
spark.speculation false

দ্রষ্টব্য: ডেটার ক্ষতি হবার সম্ভাবনার কারণে DirectParquetOutputCommitter স্পার্ক 2.0 থেকে সরানো হয়েছে। দুর্ভাগ্যক্রমে আমরা এস 3 এ থেকে ধারাবাহিকতার উন্নতি না হওয়া পর্যন্ত আমাদের কাজের ক্ষেত্রগুলির সাথে কাজ করতে হবে। হ্যাডোপ ২.৮ দিয়ে জিনিসগুলি উন্নতি করছে

অভিধান সংক্রান্ত ক্রমে কী নামগুলি এড়িয়ে চলুন। আপনার কাছাকাছি যাওয়ার জন্য কেউ হ্যাশিং / এলোমেলো উপসর্গ ব্যবহার করতে পারে বা তারিখের সময়টিকে বিপরীত করে দেয় trick কৌশলটি হ'ল আপনার কীগুলির বাম দিক দিয়ে আপনি যে সাধারণ জিনিসগুলি ফিল্টার করেন তার স্থানক্রমিকভাবে নামকরণ করা। এবং কখনই ডিএনএস সমস্যার কারণে বালতির নামগুলিতে আন্ডারস্কোর থাকে না।

সক্ষম করা হলে তা fs.s3a.fast.upload uploadসমান্তরালভাবে অ্যামাজন এস 3-তে একটি ফাইলের অংশগুলি করা ab

আরও বিস্তারিত জানার জন্য এই নিবন্ধগুলি পড়ুন-

এস 3 তে লেখার সময় স্পার্ক 2.1.0 এ স্পার্ক.স্পেসুলেশন সেট করা

https://medium.com/@subhojit20_27731/apache-spark-and-amazon-s3-gotchas-and-best-practices-a767242f3d98



0

IMO আপনি সম্ভবত এই সমস্যাটি ভুল করছেন। যদি আপনি গ্যারান্টি দিতে না পারেন যে চাকরির জন্য কাজের সংখ্যা খুব কম, আপনি সম্ভবত একবারে 100s কাজের সমান্তরাল করে খুব বেশি পারফরম্যান্সের উন্নতি করতে যাবেন না। আপনার ক্লাস্টারটি একবারে 300 টি কার্যকে সমর্থন করতে পারে, ধরে নিই যে আপনি 200 থাটকে কেবল 1.5 টি কাজের মধ্যে ডিফল্ট সমান্তরালতা ব্যবহার করছেন। আমি আপনার কোডটি পুনর্লিখনের পরামর্শ দিচ্ছি সর্বোচ্চ দশমিক 10-এ সর্বাধিক যুগ্ম প্রশ্নগুলি ক্যাপ করার জন্য I বেশিরভাগ ওলটিপি ডেটা প্রসেসিং সিস্টেমে এই কারণে আরও traditionalতিহ্যবাহী আরডিএস সিস্টেমের তুলনায় ইচ্ছাকৃতভাবে পর্যাপ্ত নিম্ন স্তরের সমবর্তী প্রশ্নগুলি রয়েছে।

এছাড়াও

  1. অ্যাপাচি হুডির বেশ কয়েকটি শতাধিক এফওয়াইআইয়ের ডিফল্ট সমান্তরালতা রয়েছে।
  2. কেন আপনি কেবল আপনার ফিল্টার কলামের ভিত্তিতে পার্টিশন করবেন না?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.