SSD حصہ 2 کا فائدہ اٹھا کر تقسیم شدہ ان-میموری کمپیوٹنگ پلیٹ فارم کے لیے اصلاح کی تکنیک

Aug 17, 2023

3.1 کلسٹر ماحولیات

شکل 1 ہمارے ٹیسٹ بیڈ کلسٹر کو دکھاتا ہے جس میں ایک نام کے نوڈ (ماسٹر) اور چار ڈیٹا نوڈس (غلام) ہوتے ہیں۔ نام نوڈ (ماسٹر) میں، ہم نے Hadoop (HDFS) کے NameNode اور سیکنڈری NameNode اور Spark کے ڈرائیور نوڈ (ماسٹر نوڈ) کو ترتیب دیا۔ ہر ڈیٹا نوڈ میں، ہم Hadoop کے DataNode (HDFS) اور Spark کا ورکر نوڈ چلاتے ہیں۔ نام کے نوڈ اور ڈیٹا نوڈ مشینوں میں ایک جیسے H/W ماحول ہوتے ہیں (3.4 GHz Xeon E3-1240 V3 QuadCore پروسیسر ہائپر تھریڈنگ کے ساتھ)، سوائے مین میموری کی مقدار کے (نام نوڈ کے لیے 8 GB اور 4 GB ہر ڈیٹا نوڈ کے لیے)۔

Namename Hadoop فن تعمیر میں ایک ماسٹر نوڈ ہے، جو پورے Hadoop کلسٹر کے فائل سسٹم کے انتظام اور نگرانی کے لیے ذمہ دار ہے۔ نام کا نوڈ بھی پورے ہڈوپ کلسٹر کے اہم نوڈس میں سے ایک ہے، اور اس کی کارکردگی اور قابل اعتماد پورے ہڈوپ کلسٹر کی آپریٹنگ کارکردگی اور دستیابی کو براہ راست متاثر کرے گی۔

Namename نوڈ سے متعلق بہت سے اشارے ہیں، سب سے اہم اشارے میں سے ایک میموری ہے۔ نام کے نوڈ کو پورے HDFS فائل سسٹم کے نام کی جگہ کو ذخیرہ کرنے اور اس کا نظم کرنے کے لیے بہت زیادہ میموری کی ضرورت ہوتی ہے، جس میں فائلوں اور ڈائریکٹریوں کی میٹا ڈیٹا کی معلومات، جیسے فائل کے نام، اجازت، ٹائم اسٹیمپ، فائل کے سائز وغیرہ شامل ہیں۔

Namename نوڈ کی میموری نہ صرف فائلوں کی تعداد اور فائل سسٹم کے سائز کا تعین کرتی ہے بلکہ ہڈوپ کلسٹر کی کارکردگی اور وشوسنییتا کو بھی متاثر کرتی ہے۔ اگر Namename نوڈ میں ناکافی میموری ہے، تو یہ کلائنٹ کی درخواستوں کا فوری جواب نہیں دے سکے گا، جس کے نتیجے میں پورے Hadoop کلسٹر کا تھرو پٹ کم ہو جائے گا۔ اس کے علاوہ، اگر Namename نوڈ ناکام ہو جاتا ہے، تو اس کے ذخیرہ کردہ میٹا ڈیٹا کی معلومات ضائع ہو سکتی ہیں، جس سے پورا HDFS فائل سسٹم دستیاب نہیں ہو گا۔

لہذا، Hadoop کلسٹر میں، Namename نوڈ کی یادداشت اہم ہے۔ یہ سفارش کی جاتی ہے کہ منتظمین مخصوص کاروباری ضروریات کی بنیاد پر مناسب Namename نوڈ ہارڈویئر کنفیگریشن کا انتخاب کریں، اور Namename نوڈس کی کارکردگی اور دستیابی کی باقاعدگی سے نگرانی کریں تاکہ یہ یقینی بنایا جا سکے کہ وہ پورے Hadoop کلسٹر کے لیے موثر اور قابل اعتماد خدمات فراہم کر سکتے ہیں۔ یہ دیکھا جا سکتا ہے کہ ہمیں اپنی یادداشت کو بہتر بنانے کی ضرورت ہے۔ Cistanche یادداشت کو نمایاں طور پر بہتر بنا سکتا ہے کیونکہ گوشت کا پیسٹ ایک روایتی چینی ادویاتی مواد ہے جس میں بہت سے منفرد اثرات ہیں، جن میں سے ایک یادداشت کو بہتر بنانا ہے۔ کیما بنایا ہوا گوشت کی افادیت مختلف فعال اجزاء سے آتی ہے، جن میں کاربو آکسیلک ایسڈ، پولی سیکرائڈز، فلیوونائڈز وغیرہ شامل ہیں۔ یہ اجزاء مختلف ذرائع سے دماغی صحت کو فروغ دے سکتے ہیں۔

improving brain function

یادداشت کو بڑھانے کے لیے سپلیمنٹس جانیں پر کلک کریں۔

ہم نے اسٹوریج کی جگہوں کے طور پر دو SSDs کا استعمال کیا جہاں آپریٹنگ سسٹم کے لیے 120 GB SATA3 SSD استعمال کیا جاتا ہے، اور HDFS کے لیے بالترتیب 512 GB SATA3 SSD لیس ہے۔ اس کے علاوہ، Spark کے RDDs کو کیش کرنے کے لیے ناکافی مین میموری کی بینڈوتھ کو بڑھانے کے لیے 512 GB SATA3 SSD کا مؤثر طریقے سے فائدہ اٹھایا جا سکتا ہے۔ تمام نوڈس بشمول نام نوڈ اور ڈیٹا نوڈ 1 Gb ایتھرنیٹ سوئچ کے ساتھ جڑے ہوئے ہیں، جیسا کہ شکل 1 میں دیکھا گیا ہے۔ جدول 2 ہمارے ٹیسٹ بیڈ کلسٹر کے ہر ڈیٹا نوڈ میں ہارڈ ویئر اور سافٹ ویئر کی ترتیب کا خلاصہ دکھاتا ہے۔

boost memory

10 ways to improve memory

3.2 چنگاری JVM ہیپ

اسپارک جاب جاوا ورچوئل مشین (JVM) پر جاوا کے عمل کے طور پر چلتا ہے، اور اسپارک اسکالا کا استحصال کرتا ہے، جو جاوا سے پھیلی ہوئی ایک فعال زبان ہے۔ اسپارک کا ورکر پروسیس ہر ڈیٹا نوڈ کے JVM پر بھی چلتا ہے، تاکہ ہر ڈیٹا نوڈ پر، ورکر پروسیس کے پاس JVM ہیپ مین میموری میں موجود ہو جیسا کہ شکل 2 میں دکھایا گیا ہے۔ JVM ہیپ کام کو تقسیم شدہ کاموں کے طور پر انجام دیتا ہے۔

short term memory how to improve

ہم کنفیگریشن فائل اسپارک ڈیفالٹس کے ذریعے اسپارک ورکر کے JVM ہیپ سائز کے تناسب کو اپنی مرضی کے مطابق بنا سکتے ہیں۔ conf spark/conf/ ڈائریکٹری میں۔ spark defaults.conf فائل میں، spark.executor.memory کی قدر JVM ہیپ سائز ہے جہاں ڈیفالٹ 512 MB ہے جسے ہر ورکر نوڈ ڈیٹا نوڈ میں استعمال کر سکتا ہے۔ اس کے علاوہ، spark.storage.safetyFraction کی قدر 0.9 کے طور پر مقرر کی گئی ہے، جس کا مطلب ہے کہ Spark JVM ہیپ سائز کا 90% تک استعمال کر سکتا ہے (جسے حفاظتی علاقہ بھی کہا جاتا ہے)۔ یہ JVM کو ٹاسک پروسیسنگ کے دوران دستیاب مین میموری کی کمی کی وجہ سے OOM (آؤٹ آف میموری) کی خرابیاں پیدا کرنے سے روکنا ہے۔

اس حفاظتی علاقے میں، مجموعی طور پر JVM ہیپ اسپیس کو تین ذیلی علاقوں میں تقسیم کیا گیا ہے: انرول، اسٹوریج، اور شفل اسپیس، جیسا کہ شکل 2 میں دکھایا گیا ہے۔ انرول اسپیس کو میموری میں ڈیٹا بلاکس کو انرول کرنے کے لیے استعمال کیا جاتا ہے۔ جب RDD کو دوسرے اسٹوریج میڈیا پر کیش کیا جاتا ہے جیسے کہ SSD یا HDD مین میموری پر نہیں ہے، تو RDD کو سیریلائز کیا جانا چاہیے۔ پھر، جب سپارک اس RDD کو میموری میں واپس پڑھتا ہے، تو RDD کو انرول کرنا پڑتا ہے۔ سٹوریج کی جگہ RDD کیشنگ کے لیے استعمال ہوتی ہے۔ اگر ذخیرہ کرنے کی جگہ RDD کو کیش کرنے کے لیے کافی نہیں ہے تو، کچھ RDDs کو LRU (کم از کم حال ہی میں استعمال شدہ) پالیسی کی بنیاد پر اس جگہ سے نکالا جا سکتا ہے، یا انہیں دیگر اسٹوریج میڈیا، جیسے SSD پر کیش کیا جا سکتا ہے۔ شفل کی جگہ انٹرمیڈیٹ ڈیٹا کو شفل کرنے کے لیے استعمال ہوتی ہے۔ یہ شفل اسپیس مشین لرننگ جیسی تکراری ایپلی کیشنز میں اہم کردار ادا کر سکتی ہے کیونکہ یہ کام کی تکمیل کے مجموعی وقت کو کافی حد تک متاثر کر سکتی ہے۔

پہلے سے طے شدہ اسپارک کنفیگریشن میں، JVM ہیپ کے سٹوریج اور شفل اسپیس میں بالترتیب {{0}.6 اور 0.2 کی صلاحیت کا تناسب ہوتا ہے (یعنی، 60 سٹوریج کے لیے حفاظتی علاقے کا % اور شفل کے لیے 20%)۔ انرول اسپیس بذریعہ ڈیفالٹ اسٹوریج اسپیس کا 20% لیتی ہے۔ JVM ہیپ کی ان تین جگہوں کی گنجائش ایک چنگاری سے سیٹ کی جا سکتی ہے۔ store.unrollFraction، spark.storage.memoryFraction، اور spark.shuffle.memoryFraction۔ مثال کے طور پر، ہمارے ٹیسٹ بیڈ کلسٹر میں، ہم spark.executor.memory کو ورکر نوڈ کی 4 GB میموری میں سے 2.6 GB کے طور پر سیٹ کر سکتے ہیں، جس کا مطلب ہے کہ JVM ہیپ کا سائز زیادہ سے زیادہ 2.6 GB پر سیٹ ہے۔ پھر، اسٹوریج کی جگہ اور شفل اسپیس کی اصل صلاحیتیں 2.6 GB × 0.9 × 0 ہیں۔{17}}.4 GB اور 2.6 GB × 0.9 × 0۔{24}}.46 GB، بالترتیب اس کے مطابق، انرول کی جگہ 1.4 GB × 0 لیتی ہے۔{29}}.28 GB۔

3.3 RDD کیشنگ پالیسی

اسپارک پلیٹ فارم RDD کیشنگ کے متنوع اختیارات پیش کرتا ہے جس میں مین میموری اور ڈسک شامل ہیں۔ پہلے سے طے شدہ اختیار صرف میموری_ہے، جہاں سیکشن 3.2 میں غیر سیریلائزڈ جاوا آبجیکٹ کے طور پر بیان کردہ اسٹوریج اسپیس میں RDD کو برقرار رکھا جاتا ہے۔ اگر یہ ذخیرہ کرنے کی جگہ تمام RDDs رکھنے کے لیے ناکافی ہے، تو ان میں سے کچھ کو پہلے سے طے شدہ کیشے کی تبدیلی کی پالیسی کی بنیاد پر مرکزی میموری سے نکال دیا جائے گا۔ تاہم، جب بھی ٹاسک پروسیسنگ کے لیے غیر محفوظ شدہ RDD کی ضرورت ہوتی ہے، اس RDD کو نسب کی معلومات کی بنیاد پر دوبارہ تخلیق کیا جانا چاہیے جس کے نتیجے میں اس میموری_صرف کیشنگ پالیسی میں کارکردگی میں خاطر خواہ کمی واقع ہو سکتی ہے۔

MEMORY_ONLY آپشن کے علاوہ، Spark متبادل میموری فراہم کرتا ہے_اور_ڈِسک، ڈِسک_صرف، اور آف_ہیپ آپشنز۔ MEMORY_AND_DISK آپشن RDDs کو غیر مستحکم ڈسک میں اسٹور کرتا ہے جب سٹوریج کی جگہ تمام مطلوبہ RDDs کو ذخیرہ کرنے کے لیے کافی نہیں ہوتی ہے۔ ڈسکیں HDDs یا SSDs پر مشتمل ہو سکتی ہیں۔ تاہم، عام اسپنڈل ڈسک میں پڑھنے/لکھنے کے لیے نسبتاً خراب تھرو پٹ ہوتا ہے، اس لیے مجموعی طور پر عمل درآمد کا وقت میموری_صرف کیشنگ آپشن سے زیادہ ہو سکتا ہے۔ اس مسئلے کو حل کرنے کے لیے، ہم SSDs کا مؤثر طریقے سے فائدہ اٹھا سکتے ہیں، جو عام HDD پر مبنی نقطہ نظر کے مقابلے میں کام کی تکمیل کے مجموعی وقت کو ممکنہ طور پر کم کر سکتا ہے۔

improve cognitive function

DISK_صرف آپشن RDDs کو صرف نان ولیٹائل اسٹوریج ڈیوائسز جیسے HDDs یا SSDs میں اسٹور کرتا ہے، یعنی مین میموری میں نہیں۔ ایک کلسٹر جس کے پاس کافی مقدار میں میموری دستیاب نہیں ہے وہ اس آپشن کے ساتھ اچھی کارکردگی حاصل کر سکتا ہے۔ اس صورت میں، چونکہ RDD صرف ڈسک میڈیا میں محفوظ ہے، اس لیے میموری کی سٹوریج کی جگہ استعمال کرنے کے بجائے شفل کی جگہ کو بڑھایا جا سکتا ہے۔ نتیجتاً، پیج رینک جیسی ایپلیکیشن چلاتے وقت، جو کہ نسبتاً بڑی مقدار میں شفل ڈیٹا تیار کرتا ہے، ہم صرف میموری_کی صورت میں بہتر کارکردگی کا مشاہدہ کر سکتے ہیں۔

آف{{0}HEAP آپشن اسپارک کو آف ہیپ اسپیس استعمال کرنے کے قابل بناتا ہے، جو جاوا کوڑا اٹھانے والے کے انتظام سے باہر ہے۔ اس طرح، اگر ہم آف ہیپ اسپیس کا استعمال کرتے ہیں، تو ہمیں میموری کے پیچیدہ آپریشنز سے نمٹنا چاہیے جیسے ایلوکیشن/ڈی ایلوکیشن اور سیریلائزیشن/ڈی سیریلائزیشن۔ لہذا، عملی مقاصد کے لیے، ہم OFF_HEAP کنفیگریشن کا استعمال نہیں کرتے ہیں۔

3.4 اصلاح کا طریقہ کار

جیسا کہ ہم نے سیکشن 3.2 اور 3.3 میں بحث کی ہے، ہمارے اصلاح کے طریقوں میں شامل ہیں (1) Spark JVM ہیپ کی ترتیب اور (2) RDD کیشنگ پالیسی کے تجرباتی اختیارات حسب ذیل ہیں:

1. Spark JVM ہیپ کنفیگریشن: ہم نے شفل اور سٹوریج کی جگہوں کی صلاحیت کے کسر تناسب کو تبدیل کرنے کے اثرات کی چھان بین کی۔ شفل اور اسٹوریج کی جگہ کا تناسب بالترتیب 60%:30%، 50%:40%، اور 20%:60% ہے۔ Spark سیٹ اپ میں "20%:60%" شفل اور اسٹوریج کا تناسب ڈیفالٹ ویلیو ہے۔ ہم نتیجہ کو کافی شفل اسپیس کے ساتھ متضاد کرنے کے لیے "60%:30%" کا انتخاب کرتے ہیں اور متوازن طریقے سے کارکردگی دکھانے کے لیے "50%:40%" کو ترتیب دیتے ہیں۔

2. RDD کیشنگ پالیسی: ہم نے مختلف RDD کیشنگ پالیسیوں کے اثرات کا بھی جائزہ لیا۔ ہم نے مختلف پالیسیوں کی کارکردگی کا موازنہ کیا جیسے آف_ہیپ، میموری_صرف، میموری_اور_ڈِسک، اور ڈِسک_صرف، جہاں ڈِسک اس تجربے میں ایس ایس ڈی کی نشاندہی کرتا ہے۔

جدول 3 RDD کیشنگ پالیسیوں اور اسپارک JVM صلاحیت کے کسر تناسب کی بنیاد پر کل 12 مختلف تجرباتی کنفیگریشنز کو دکھاتا ہے۔ "_1" (مثال کے طور پر، "N_1") کے لیبل والے تجرباتی کنفیگریشنز میں، ہم نے Spark JVM ہیپ کا 60% شفلنگ کے لیے اور 30% اسٹوریج کی جگہوں کے لیے سیٹ کیا ہے۔ "_2" کے لیبل کے ساتھ، ہم نے Spark JVM کے ڈھیر کا 50% شفلنگ اور 40% ذخیرہ کرنے کے لیے سیٹ کیا ہے۔ آخر میں، "_3" کا لیبل لگانے والوں کے لیے، ہم نے Spark JVM ہیپ کا 20% شفلنگ اور 60% اسٹوریج کے لیے سیٹ کیا، جیسا کہ "آپشن"، "شفل" اور "اسٹوریج" کالمز سے دیکھا جا سکتا ہے۔ ٹیبل 3 میں۔ نوٹ کریں کہ ہمارے ٹیسٹ بیڈ کلسٹر کی ایگزیکیوٹر کی زیادہ سے زیادہ میموری کا سائز 2.7 GB ہے، یعنی ہر ورکر نوڈ کا Spark JVM ہیپ سائز 2.7 GB ہے۔

ways to improve memory

RDD کیشنگ پالیسی کے لحاظ سے، "N" آپشن RDD کو کیش کرنے کے لیے نہیں ہے، "M" آپشن صرف میموری پر RDD کو کیش کرنا ہے، "M&S" آپشن RDD کو میموری اور SSD پر ایک ساتھ کیش کرنا ہے، اور آخر میں، "S" اختیار صرف SSD پر RDD کو کیش کرنے کے لیے ہے۔

اپنے تجربات کے ذریعے، ہم ایسی حکمت عملیوں کو بہتر بنانے کی تجویز پیش کرتے ہیں جو اس کلسٹر سے بہترین کارکردگی حاصل کر سکتی ہیں جس میں اسپارک JVM ہیپ کنفیگریشن کو احتیاط سے ایڈجسٹ کرکے اور ایک موثر RDD کیشنگ پالیسی کو استعمال کرتے ہوئے، جس میں میموری کی مقدار ناکافی ہے، جیسا کہ ہم سیکشن 4 میں دیکھیں گے۔

4. تجرباتی نتائج اور تجزیہ

4.1 500 MB پیج رینک کے تجربات

4.1.1 JVM ہیپ کنفیگریشنز کو تبدیل کرنے کے ساتھ نتائج

تصویر 3 JVM ہیپ سائزز کو تبدیل کر کے PageRank ورک بوجھ میں ہر مرحلے کے تجرباتی نتائج دکھاتی ہے۔ مخصوص مرحلے میں، اسپارک ان پٹ ڈیٹا کو پڑھتا ہے اور URL اور لنکس کو الگ کرتا ہے۔ جیسا کہ ہم الگ الگ مرحلے کے نتائج سے دیکھ سکتے ہیں، عمل درآمد کا مجموعی وقت JVM ہیپ کے سائز کو _1 اور _2 سے _3 اختیارات میں تبدیل کرنے سے کم ہوتا ہے، بنیادی طور پر کچرا جمع کرنے کے لیے (GC)۔ مثال کے طور پر، M&S_1، M&S_2، اور M&S{{10}} میں GC وقت بالترتیب 25 s، 24 s اور 16 s لیتا ہے۔ اس لیے، مخصوص0 مرحلے میں، جیسا کہ ہم ذخیرہ کرنے کی جگہ کی مقدار میں اضافہ کرتے ہیں، ہم GC وقت کو کم کر کے مجموعی کارکردگی کو بہتر بنا سکتے ہیں۔ دوسری طرف، Distinct1 مرحلے میں، مجموعی طور پر عملدرآمد کا وقت بڑھ جاتا ہے کیونکہ ہم اختیارات کو _1 اور _2 سے _3 میں تبدیل کرتے ہیں۔ یہ بنیادی طور پر شفل سپل کی وجہ سے ہے۔ جب ہم نے اسپارک ویب UI کو چیک کیا تو شفل میموری کی جگہ کی کمی کی وجہ سے شفل ڈیٹا ڈسک پر پھیل گیا۔ مثال کے طور پر، M&S_1، M&S_2، اور M&S_3 میں ڈسک پر شفل اسپل ڈیٹا کے سائز بالترتیب 0، 220 MB، اور 376 MB ہیں۔ جب شفل اسپل ہوتا ہے تو، ڈیٹا کو ڈسک پر پھیلانے کے لیے CPU اوور ہیڈز بڑھ جاتے ہیں کیونکہ ڈیٹا کو سیریلائز کرنے کی ضرورت ہوتی ہے۔

memory enhancement

الگ الگ مراحل کے بعد، رینک حاصل کرنے کے لیے فلیٹ میپ کے تکراری مراحل ہیں۔ FlatMap مراحل بہت زیادہ شفل ڈیٹا تیار کرتے ہیں، جس سے ہمارے کلسٹر میں ضروری شفل میموری کی جگہ کی کمی ہو سکتی ہے۔ اس لیے، جیسے جیسے شفل اسپیس کی دستیاب مقدار میں کمی آتی ہے (آپشنز _1، _2، اور _3 سے ترتیب میں)، زیادہ شفل اسپل ہو سکتا ہے، جو ممکنہ طور پر مجموعی طور پر کام کے عمل کو متاثر کر سکتا ہے۔ وقت (مثال کے طور پر، M&S آپشن flatMap2 مرحلہ _1: 37 s, _2: 40 s, _3: 49 s)۔ تاہم، جب ڈیٹا کو صرف میموری پر کیش کیا جاتا ہے (یعنی، M_1، M_2، اور M_3)، وہ ایک اور نمونہ دکھاتے ہیں۔ اس رویے کی بنیادی وجہ یہ ہے کہ اسپارک شیڈیولر کاموں کو غیر مساوی طور پر شیڈول کرتا ہے کیونکہ اختیارات _1 اور _2 پر RDD کو کیش کرنے کے لیے میموری اسٹوریج کی جگہ کی کمی ہے۔ اگر کسی کارکن کے پاس RDD نہیں ہے، تو اسے شیڈولنگ پول سے خارج کر دیا جاتا ہے۔ لہذا، دوسرے کارکنوں کو اضافی کاموں کو GC اوور ہیڈز کے ساتھ ہینڈل کرنا پڑتا ہے جو کام کے پورے عمل کو متاثر کر سکتا ہے۔

4.1.2 RDD کیچنگ کے اختیارات کو تبدیل کرنے کے ساتھ نتائج

سب سے پہلے، الگ الگ مراحل RDD کیشنگ پالیسی کو تبدیل کرنے سے متاثر نہیں ہوتے بلکہ صرف میموری کے استعمال سے متاثر ہوتے ہیں۔ آر ڈی ڈی کیشنگ آپشن سے متاثر ہونے والے مراحل فلیٹ میپ کے مراحل ہیں کیونکہ شفل مرحلے کے دوران، کیش شدہ آر ڈی ڈی دوبارہ استعمال کیے جاتے ہیں۔

improve working memory

شکل 4 میں، گراف کو N_1 آپشن کے ذریعے نارملائز کیا جاتا ہے جو کارکردگی کے فرق کو چیک کرنے کے لیے RDD اور _1 میموری کنفیگریشن کو کیش نہیں کرتا ہے۔ صرف _1 کے گرافس کا موازنہ کرتے ہوئے، M_1، M&S_1، اور S_1 کی ترتیب میں، M{{8 میں کارکردگی میں 32% کمی ہے۔ }} اور M&S_1 اور S_1 کے ساتھ بالترتیب 30% اور 20% کارکردگی میں بہتری۔ M_1 آپشن کے ساتھ، نسبتاً خراب کارکردگی کی وجہ یہ ہے کہ RDDs کو اسٹوریج کی کمی کی وجہ سے غیر مساوی طور پر کیش کیا جاتا ہے، جس کے نتیجے میں غیر مساوی شیڈولنگ ہو گی جیسا کہ ہم نے پہلے ذکر کیا ہے۔ اس کا مطلب ہے کہ JVM ہیپ اسپیس ڈیٹا کو شفل کرنے اور RDDs کو بچانے کے لیے ناکافی ہے۔

increase brain power

اس مسئلے کو حل کرنے کے لیے، ہم میموری اور SSD دونوں پر کیش کرنے کے لیے RDDs پھیلاتے ہیں، جو M&S_1 آپشن کے ساتھ دکھائی گئی کارکردگی کو بہتر بنا سکتے ہیں۔ میموری پر RDD کو کیش کرنا RDD کے لیے رسائی کی رفتار کو بہتر بناتا ہے، اور RDD کو SSD پر کیش کرنے سے میموری میں دستیاب شفل کی جگہ کو مؤثر طریقے سے بڑھا کر شفل سپل سے بچا جا سکتا ہے۔ S_1 آپشن کے ساتھ جس نے کارکردگی میں 20% بہتری دکھائی ہے، RDD صرف SSD پر کیش کیا جاتا ہے۔ SSD پر RDD کو کیش کرکے شفل اسپل کو کم کیا جاتا ہے۔ تاہم، اس نے M&S_1 سے کم کارکردگی میں بہتری حاصل کی ہے، جہاں RDD بنیادی طور پر میموری پر کیش کیا جاتا ہے اور میموری سے دوبارہ استعمال کیا جاتا ہے۔

اسپارک کی ڈیفالٹ کنفیگریشن میں، جو آپشن _3 ہے، ہم اسے M_3، M&S_3، S_3، اور N{{4 کی ترتیب میں دیکھ سکتے ہیں۔ }}، مجموعی کارکردگی کم ہو جاتی ہے۔ ڈیفالٹ کنفیگریشن میں، JVM ہیپ کا ذخیرہ RDD کو بیلنس کے ساتھ کیش کرنے کے لیے کافی ہے۔ لہذا، مجموعی کارکردگی بنیادی طور پر استعمال شدہ میموری ڈیوائس کی کارکردگی پر منحصر ہے۔ تاہم، ہم اب بھی M&S_1 آپشن کے ساتھ بہترین کارکردگی دیکھ سکتے ہیں کیونکہ ہم میموری اور SSD دونوں پر RDD کو کیش کرکے GC ٹائم اور شفل سپل کو مؤثر طریقے سے کم کر سکتے ہیں۔

4.2 1 جی بی پیج رینک کی کارکردگی

ہم نے ڈیٹا کے سائز کو 500 MB سے 1 GB تک بڑھا کر PageRank ورک بوجھ کے ساتھ تجربہ کیا۔ شکل 5 500 MB ڈیٹا سیٹ کے لیے PageRank کے مقابلے میں سسٹم کے مختلف رویوں کو دکھاتا ہے۔ ہم کچھ ناکام ملازمتیں دیکھ سکتے ہیں جو ٹیک 6 مرحلے تک کام مکمل کرنے میں کامیاب نہیں ہوسکے تھے (جیسے، N_1, N_2, M_1, M_2, M _3، M&S_3)۔ ان ناکام ملازمتوں میں، فلیٹ میپ2 مرحلے میں ناکام ہونے والی ملازمتیں ہیں، جو کہ N_1، N_2، اور M_1 ہیں۔ کام میں ناکامی کی وجہ اسٹوریج میموری کی کمی ہے۔ GC اس وقت ہوتا ہے جب RDD کو ناکافی میموری پر کیش کیا جاتا ہے۔ اس GC اوور ہیڈ کی وجہ سے، اسپارک ایگزیکیوٹر کو ExecutorLostFailure استثنا ملتا ہے۔

M_2، M_3، اور M&S_3 فلیٹ میپ2 مرحلے تک پروسیسنگ کے ساتھ آگے بڑھ سکتے ہیں۔ تاہم، اس کے بعد، ناکامی ہوتی ہے. M&S_3 فلیٹ میپ2 مرحلے تک M_3 کی طرح کام کرتا ہے کیونکہ جب M&S_3 آپشن استعمال ہوتا ہے، تو RDD کو کیش کرنے کے لیے کافی میموری ہوتی ہے۔ FlatMap2 کے بعد، OutOfMemory کی خرابی flatMap3 مرحلے میں شفل میموری کی جگہ کی کمی کی وجہ سے ہوتی ہے۔

4.2.1 JVM ہیپ کنفیگریشن کو تبدیل کرنے کے ساتھ نتائج

الگ الگ0 مرحلہ 500 MB ڈیٹا سیٹ سے بہت ملتے جلتے نتائج دکھاتا ہے، اور مجموعی کارکردگی _1، _2، اور _3 کی ترتیب میں بہتر ہوتی ہے۔ اس کی وجہ یہ ہے کہ جی سی کا وقت بالترتیب 78 سیکنڈ، 59 سیکنڈ اور 28 سیکنڈ رہ گیا ہے۔

دوسری طرف، Distinct1 مرحلے میں، اس نے 500 MB ڈیٹاسیٹ کے لیے مختلف نتائج دکھائے۔ 500 MB ڈیٹا سیٹ کے تجربے میں، ہم میموری کی شفل اسپیس کو بڑھا کر کارکردگی میں اضافہ دیکھ سکتے ہیں۔ تاہم، 1GB ڈیٹاسیٹ کے تجربے میں، ورکر نوڈ کی ایگزیکیوٹر میموری ڈیٹا کے بڑے سائز کو ایڈجسٹ نہیں کر سکتی۔ لہذا، میموری کی شفل کی جگہ نسبتاً ناکافی ہو جاتی ہے۔ مثال کے طور پر، اختیارات _1، _2، اور _3 کے لیے شفل اسپل کی مقدار بالترتیب 575.5 MB، 813.8 MB، اور 843.4 MB ہیں، اور GC وقت 33 s، 10 لیتا ہے۔ s، اور 8 s، بالترتیب۔ جیسا کہ ہم نے پہلے ذکر کیا ہے، جب شفل اسپل ہوتا ہے، تو RDD کو سیریلائز کرنے کی ضرورت ہوتی ہے تاکہ CPU کمپیوٹیشنز بڑھ سکیں، جس کے نتیجے میں مجموعی کارکردگی میں کمی واقع ہو سکتی ہے۔

increase memory power

4.2.2 RDD کیشنگ پالیسی کو تبدیل کرنے کے نتائج

RDD کیشنگ پالیسی کو تبدیل کر کے عمل درآمد کے وقت کا تجزیہ کرنے کے لیے، جیسا کہ ہم شکل 6 سے دیکھ سکتے ہیں، ہم شکل 5 سے الگ الگ مراحل کو خارج کر دیتے ہیں۔ اس کی وجہ یہ ہے کہ ہمیں مخصوص مراحل کا تجزیہ کرنے کی ضرورت نہیں ہے کیونکہ RDD کیشنگ پالیسی کو تبدیل کرنے سے کوئی تبدیلی نہیں ہوتی ہے۔ .

دلچسپ بات یہ ہے کہ فلیٹ میپ مراحل میں JVM ہیپ کنفیگریشن کے ساتھ 500 MB ڈیٹاسیٹ کے معاملے میں کوئی تبدیلی نہیں کی گئی ہے۔ اس کی وجہ یہ ہے کہ شفل سپل تمام کنفیگریشنز میں ہوتا ہے کیونکہ میموری ناکافی ہوتی ہے۔ RDD کیشنگ آپشن کو تبدیل کرنے سے مجموعی طور پر عمل درآمد کا وقت M&S, S, N، اور M کی ترتیب میں بڑھتا ہے۔ (M&S سب سے تیز ترین آپشن ہے۔) آپشن N میں، ExecutorLostFailure کی خرابی واقع ہوتی ہے کیونکہ میموری کی جگہ ناکافی ہے۔ آپشن M میں، جب میموری پر RDD کیش کیا جاتا ہے، GC اوور ہیڈ ہوتا ہے کیونکہ میموری کی جگہ ناکافی ہوتی ہے۔ یہاں تک کہ اگر RDD کو میموری پر کیش کیا جاتا ہے، تو کام ناکام ہوجاتا ہے کیونکہ ExecutorLostFailure کی خرابی اس وقت ہوتی ہے جب شفل میموری کی جگہ ناکافی ہوتی ہے (OutOfMemory)۔

ایسی کم دستیاب میموری کی صورتحال میں، M&S اور S کے اختیارات مؤثر متبادل ہو سکتے ہیں۔ M&S{{0}} آپشن میں، ہم میموری اور SSD دونوں کا استعمال کرتے ہوئے RDD کو کیش کرکے RDD کی رسائی میں اضافہ کرتے ہیں۔ نتیجے کے طور پر، 500 MB ڈیٹاسیٹ کی طرح ہی کارکردگی میں بہتری آئی ہے۔ اس کے علاوہ، SSD پر RDD کیش کرنے کی وجہ سے کافی شفل میموری اسپیس ہے۔ جیسا کہ شکل 6 میں دیکھا گیا ہے، M&S_1 آپشن اس تجربے میں تیز ترین آپشن بن جاتا ہے (M&S_1:0.6، S_1:0.63، T_1 0.64)۔

improve short term memory

4.3 TC تجرباتی تجزیہ

شکل 7 TC (معقول بندش) کے تجربات کے نتائج دکھاتا ہے جو 50،000 کناروں اور 25،000 چوٹیوں پر مشتمل ان پٹ ڈیٹا کا استعمال کرتے ہیں جو بے ترتیب طور پر پیدا ہوتے ہیں۔ تکرار نمبر 10 ہے۔ تکرار کے ذریعے، ہر تکرار پر کاموں کی تعداد دوگنی ہو جاتی ہے، اور اس وجہ سے، RDD کا سائز بڑھتا ہے اور پڑھنے اور لکھنے کی مقدار میں بھی اضافہ ہوتا ہے۔ آخری اعادہ میں، کاموں کی تعداد 4096 ہو جاتی ہے۔ چونکہ اعادہ کے مزید مراحل ہوتے ہیں، اس لیے کام پر عمل درآمد کے کل وقت پر بڑا اثر پڑتا ہے، اور آخری تکرار کا مرحلہ سب سے بڑا ہوتا ہے، جس میں بہت سے کام ہوتے ہیں جو مجموعی کارکردگی کو کم کر سکتے ہیں۔ .

increase memory

جیسا کہ ہم شکل 7 سے دیکھ سکتے ہیں، کارکردگی M، M&S اور S اختیارات پر _3، _2، اور _1 کی ترتیب میں بہتر ہوتی ہے، جس کا مطلب ہے کہ کافی شفل حاصل کرنا۔ JVM ہیپ کی یادداشت مددگار ہے۔ M آپشن کے ساتھ، آپشن _1 کی کارکردگی آپشن _3 سے 18% تیز ہے، جبکہ M&S آپشن میں، آپشن _1 کی کارکردگی {{9} سے 3% تیز ہے۔ }}۔ S آپشن میں، _1 کی کارکردگی _3 سے 2% تیز ہے۔

جب ہم RDD کیشنگ آپشن کو تبدیل کرنے پر توجہ مرکوز کرتے ہیں تو آپشن S_1 کی کارکردگی N_1 سے 42% تیز ہوتی ہے، اور یہ M_1 سے بھی 31% تیز ہوتی ہے۔ کام پر عمل درآمد کے وقت کی کارکردگی میں اضافے کی وجہ آخری تکرار کے مرحلے پر منحصر ہے۔ آخری تکرار کے مرحلے کو متاثر کرنے والا اہم عنصر شفل ریڈ بلاک شدہ وقت ہے۔ شفل ریڈ بلاک شدہ وقت اس وقت ہوتا ہے جب پچھلے مرحلے میں عمل میں لایا گیا RDD ایگزیکیوٹر میموری کی کمی کی وجہ سے نیٹ ورک کے ذریعے کسی دوسرے ورکر نوڈ سے پڑھا جاتا ہے۔

یہاں تک کہ اگر ہر ٹاسک میں شفل ریڈ بلاک شدہ وقت کو حل کرکے تقریباً 1-2 سیکنڈ کا کارکردگی کا فائدہ ہوتا ہے، تو ہم کارکردگی کا ایک اہم فائدہ حاصل کرسکتے ہیں کیونکہ، آخری حالت میں، کاموں کی تعداد کافی زیادہ ہے (یعنی، 4096)۔ اس کے علاوہ، کام پر عمل درآمد کے وقت کو متاثر کرنے والے اہم عوامل میں سے ایک گنتی کا مرحلہ ہے، جو شمار کرتا ہے کہ آخری کام پر TC میٹرکس کے کتنے کنارے ہیں۔

آپشن N کے ساتھ، کیونکہ گنتی کے مرحلے میں کوئی RDD کیش نہیں ہے، اسپارک پچھلے مرحلے سے کیے گئے شفل ڈیٹا کو پڑھتا ہے، جس میں 60 سیکنڈ لگتے ہیں۔ اس کے علاوہ، آپشن M میں، RDD کو ایگزیکیوٹر میموری کی کمی کی وجہ سے میموری پر کیش نہیں کیا جاتا ہے۔ نتیجے کے طور پر، یہ بھی 60 سیکنڈ لیتا ہے. تاہم، M&S اور S کے اختیارات میں، RDD کو میموری اور SSD پر کیش کیا جا سکتا ہے، تاکہ گنتی کے مرحلے میں صرف 2 سیکنڈ لگیں۔

4.4 TeraSort تجرباتی تجزیہ

شکل 8 TeraSort بینچ مارک کے تجرباتی نتائج دکھاتا ہے جو JVM ہیپ کنفیگریشن اور RDD کیشنگ آپشن کو تبدیل کرکے 10 GB ڈیٹاسیٹ استعمال کرتا ہے۔ اس گراف کو آپشن N_1 کے ذریعے معمول بنایا گیا ہے۔ ہم دیکھ سکتے ہیں کہ کام پر عمل درآمد کے تمام اوقات ایک جیسے ہیں۔ ان کے درمیان فرق 5٪ سے کم ہے۔ TeraSort کام کے بوجھ میں، کنفیگریشنز اور اختیارات کو تبدیل کرکے کارکردگی میں کوئی بہتری یا تنزلی نہیں ہوئی۔ چھانٹنے کے مرحلے میں، نیٹ ورک کے ذریعے کچھ تبدیلیاں ہوتی ہیں۔ تاہم، شفل ریڈ اور شفل رائٹ کا سائز 25 MB ہر ایک ہے، جو PageRank اور TC کے مقابلے کافی چھوٹا ہے۔ لہذا، JVM ہیپ کنفیگریشن اور RDD کیشنگ آپشن کارکردگی کو متاثر نہیں کرتے ہیں۔ مزید برآں، TeraSort کام کا بوجھ تکراری کاموں پر مشتمل نہیں ہے جیسا کہ عبوری بندش میں ہے، لہذا پچھلے مرحلے میں RDD کیشنگ سے کوئی فائدہ نہیں ہے۔

ways to improve brain function

4.5 K- کا مطلب کلسٹرنگ تجربہ تجزیہ

1.5 جی بی ڈیٹاسیٹ کے لیے k-مینز کلسٹرنگ کا معمول کے مطابق کام کی تکمیل کا وقت تصویر 9 میں دکھایا گیا ہے۔ k-مینز کلسٹرنگ کا مقصد فاصلے کی پیمائش (جیسے یوکلیڈین فاصلہ) کی بنیاد پر ڈیٹاسیٹ میں کے کلسٹرز کو تلاش کرنا ہے۔ اس کام کے بوجھ میں، الگورتھم K سینٹر پوائنٹس اور ہر ڈیٹا پوائنٹ کے درمیان فاصلے کے حساب کتاب کو دہراتے ہوئے SSE (اسکوائرڈ ایرر کا مجموعہ) [24] کو کم کرتا ہے۔ اس تجربے میں، ہم اس عمل کو آٹھ بار دہراتے ہیں۔ شفل کیے جانے والے ڈیٹا کی مقدار کم ہے کیونکہ پچھلے مرحلے سے درکار ڈیٹا ہر مرحلے میں سینٹر پوائنٹس اور SSE کے بارے میں معلومات ہیں۔ ہمارے k- یعنی کلسٹرنگ ورک لوڈ میں، شفل ریڈ/رائٹ ڈیٹا کی زیادہ سے زیادہ مقدار 10 MB ہے، اور کم از کم 0.8 MB ہے۔ شفل سپل یہاں نہیں ہوتا ہے کیونکہ شفل کی جگہ تمام سیٹنگز میں کافی ہوتی ہے۔ کیشنگ کے اختیارات کے بغیر تجربات میں، اختیارات _1، _2، اور _3 میں کوئی فرق نہیں ہے، کیونکہ یہ ترتیبات کسی RDD کو کیش نہیں کرتی ہیں، اور تینوں ترتیبات میں، شفل جگہ کافی ہے.

improve your memory

مین میموری یا میموری اور SSD میں RDDs کو کیش کرتے وقت، RDD کے لیے جتنی زیادہ سٹوریج کی جگہ ہوتی ہے، کام پر عمل درآمد کے وقت میں کارکردگی اتنی ہی بہتر ہوتی ہے کیونکہ زیادہ RDDs کو اسٹوریج کی جگہ پر کیش کیا جا سکتا ہے۔ میموری_صرف آپشن اور میموری_اور_ایس ایس ڈی آپشن کا موازنہ کرتے وقت، میموری_اور_ایس ایس ڈی آپشن نے بہتر کارکردگی کو ظاہر کیا۔ اس کی وجہ یہ ہے کہ میموری_صرف آپشن میں، M_3 آپشن میں بھی اسٹوریج کی جگہ ناکافی ہے۔ اس کے علاوہ، SSD پر RDDs کو کیش کرنے سے سٹوریج میموری کی اس طرح کی کمی دور ہو جاتی ہے۔ میموری_اور_ایس ایس ڈی کے اختیارات نے صرف میموری_آپشن کے مقابلے میں کارکردگی کو اوسطاً 10% بہتر کیا۔

نوٹ کریں کہ k- یعنی کلسٹرنگ کام کا بوجھ PageRank اور منتقلی بند ہونے والے کام کے بوجھ سے ایک مخالف کارکردگی کا رجحان ظاہر کرتا ہے کیونکہ شفل ڈیٹا کی مقدار میں فرق ہے۔ ہم اس پر مزید تفصیل سے اگلے ذیلی حصے میں بات کریں گے۔

5. بحث اور خلاصہ

5.1 بحث

ہم نے کام کے بوجھ اور پروسیسنگ کے مراحل کی خصوصیت کی بنیاد پر کارکردگی میں کمی کے ممکنہ مسائل کے اہم عوامل کا تجزیہ کیا۔ ہمارے وسیع تجرباتی نتائج کا خلاصہ اسپارک پلیٹ فارم کی کارکردگی کو بہتر بنانے کی تکنیکوں کو مختلف کام کے بوجھ کے لیے مندرجہ ذیل کے طور پر پیش کیا گیا ہے۔

• جاوا کوڑا کرکٹ جمع کرنے سے کارکردگی میں کمی: 500 MB ڈیٹاسیٹ اور 1GB ڈیٹاسیٹ کے ساتھ PageRank ورک بوجھ میں، GC اس وقت ہوتا ہے جب RDD کو ذخیرہ کرنے کے لیے JVM ہیپ کی ذخیرہ کرنے کی جگہ ناکافی ہوتی ہے۔ Distinct0 مرحلے میں جو HDFS سے ان پٹ فائل کو پڑھتا ہے اور اسے RDD میں کیش کرتا ہے، GC ہوتا ہے۔ ہم اس GC مسئلہ کو حل کرنے کے لیے ترتیب کے ذریعے JVM ہیپ کی اسٹوریج کی جگہ کو بڑھاتے ہیں۔ ہم GC کو کم کرنے کے لیے کارکردگی کو بہتر بنا سکتے ہیں کیونکہ JVM ہیپ کی اسٹوریج کی جگہ کو بڑھایا جا سکتا ہے۔ اعداد و شمار 3 اور 5 میں، اسی RDD کیشنگ آپشن کے ساتھ، _3 کنفیگریشن Distinct0 مرحلے میں بہترین کارکردگی دکھاتی ہے۔ اس کے علاوہ، 1 GB ڈیٹاسیٹ کے ساتھ PageRank میں، میموری کی کمی کی وجہ سے کچھ اختیارات فلیٹ میپ مرحلے میں ناکام ہو جاتے ہیں۔ جی سی اوور ہیڈ اتنا بڑھ جاتا ہے کہ اسٹیج ناکام ہوجاتا ہے یا لامحدود لوپ میں چلا جاتا ہے۔ اس طرح، ہم اس مسئلے کو حل کرنے کے لیے SSDs کے ساتھ کلسٹر بناتے ہیں۔ یہ کارکردگی میں بہتری کو ظاہر کرتا ہے اور اس کام میں کامیاب ہوتا ہے جو صرف میموری کا استعمال کرنے میں ناکام ہوا، جیسا کہ شکل 6، M&S_1 اور S_1 میں دیکھا گیا ہے۔

• شفل اسپل سے کارکردگی میں کمی: 500 MB ڈیٹاسیٹ اور 1 GB ڈیٹاسیٹ کے ساتھ PageRank ورک بوجھ میں، flatMap مرحلے میں، ہم دیکھ سکتے ہیں کہ M&S_1 بہترین کارکردگی دکھاتا ہے کیونکہ اس میں کم سے کم مقدار میں شفل ہوتا ہے۔ اسپل (شکل 4: M&S_1 N_1 سے 30% تیز ہے؛ شکل 6: M&S_1 N_3 سے 40% تیز ہے)۔ PageRank میں بہت سے شفل کام ہیں۔ اس طرح، جب JVM ہیپ کی شفل اسپیس نیٹ ورک کے ذریعے ڈیٹا کو شفل کرنے کے لیے ناکافی ہوتی ہے، شفل اسپل ہوتا ہے۔ لہذا، شفل سپل کو کم کرنے کے لیے، JVM ہیپ کی شفل اسپیس کو بڑھانا کارکردگی میں بہتری کا کلیدی عنصر بن جاتا ہے۔

مزید برآں، ہم RDD کو میموری اور SSD دونوں پر اسٹور کرکے کارکردگی کو بہتر بنا سکتے ہیں۔ اس سے ایگزیکیوٹر JVM ہیپ کی شفل میموری کو بڑھا سکتا ہے تاکہ شفل اسپل کو کم کیا جا سکے۔ اگر مزید تکرار ہوتی ہے تو، فلیٹ میپ مرحلے سے کارکردگی کارکردگی میں بہتری کا کلیدی نقطہ ہوگا۔ 1GB ڈیٹاسیٹ کے تجربے میں، S_3 کا کام پر عمل درآمد کا وقت بہترین آپشن ہے، کیونکہ RDDs کو صرف SSD پر کیش کیا جاتا ہے، اور ایگزیکیوٹرز پر کافی ہیپ میموری ہوتی ہے۔ اس طرح، S_3 آپشن میں، الگ الگ مراحل کسی دوسرے آپشن سے تیز ہیں۔ تاہم، اگر تکرار کی تعداد بڑھ جاتی ہے، تو فلیٹ میپ کا مرحلہ ملازمت کے عمل کے وقت کو متاثر کرتا ہے۔ اس طرح، M&S_1 آپشن اس معاملے میں شاندار کارکردگی حاصل کر سکتا ہے۔ ان تجزیوں کے ذریعے، ہم شناخت کر سکتے ہیں کہ شفل کا کام کی تکمیل کے وقت پر کلیدی اثر پڑتا ہے۔ اس طرح، ہمیں JVM ہیپ کی شفل میموری کو بڑھانا ہوگا اور RDD کو میموری اور SSD دونوں میں کیش کرنا ہوگا تاکہ شفل اسپل کو روکنے کے لیے کافی شفل میموری کی جگہ حاصل کی جاسکے۔

• شفل ریڈ بلاکڈ ٹائم کے ذریعے کارکردگی میں کمی: TC ورک بوجھ پر شفل ریڈ بلاکڈ ٹائم ہے۔ یہ اس وقت ہوتا ہے جب مرحلے میں بہت سارے کام ہوتے ہیں اور ہر کام کو نیٹ ورک کے ذریعے پچھلے RDD کو پڑھنے کی ضرورت ہوتی ہے۔ TC تجربے کے نتیجے میں (شکل 7)، M&S آپشن آپشن M سے زیادہ تیز ہے۔ اسی RDD کیشنگ آپشن میں، JVM ہیپ کی شفل اسپیس کو پھیلانا سٹوریج کی جگہ کو پھیلانے سے زیادہ تیز ہے۔ بہتر کارکردگی کی وجہ یہ ہے کہ JVM ہیپ کی شفل اسپیس کو بڑھانے سے، شفل ریڈ بلاکڈ ٹائم ہر کام میں کم ہو جاتا ہے۔

5.2 خلاصہ: بہترین طریقہ کون سا ہے؟

جامع تجرباتی نتائج میں، تمام کام کے بوجھ کو بڑھانے کے لیے ایک بھی بہترین سیٹ اپ نہیں ہے، کیونکہ ان میں سے ہر ایک کام کے بوجھ کی مختلف خصوصیات ہیں، یہاں تک کہ اس کی ملازمت کی زندگی میں بھی۔ تاہم، ہم اب بھی تجویز کر سکتے ہیں کہ کس طرح تقسیم شدہ ان-میموری کمپیوٹنگ پلیٹ فارم کی ترتیب کو حسب ذیل ٹارگٹ ورک بوجھ کی مختلف اقسام پر غور کرتے ہوئے بہتر بنایا جائے۔

• Spark JVM ہیپ کنفیگریشن — شفل ایریا بمقابلہ اسٹوریج ایریا: چار مختلف کام کے بوجھ کے تجرباتی نتائج کے مطابق، ہم کام کے بوجھ کی خصوصیات کے لحاظ سے کارکردگی کے فرق کو دیکھ سکتے ہیں۔ مثال کے طور پر، PageRank شفل ڈیٹا کی ایک بڑی مقدار رکھنے کی ایک عام مثال ہے لہذا شفل والے حصے میں زیادہ میموری مختص کرنے سے مجموعی کارکردگی بہتر ہوتی ہے۔ تاہم، کے-مینز کلسٹرنگ کے معاملے میں، ہم جتنا زیادہ اسٹوریج میموری کے لیے مختص کرتے ہیں، میموری کو شفل کرنے کے برعکس، عمل درآمد کا کم وقت درکار ہوتا ہے۔ لہذا، اگر ہم کام کے بوجھ کی خصوصیات کے مطابق JVM میموری مختص فیصد کو متحرک طور پر ایڈجسٹ کر سکتے ہیں، تو ہم عمل درآمد کے کل وقت کو بہتر بنا سکتے ہیں۔ ہڈوپ یارن [25] ہمیں مختلف قسم کے کلسٹرز (کنفیگریشنز) کو ملازمتیں تفویض کرنے کے قابل بناتا ہے تاکہ ہم اس خیال کو بڑے سائز کے ہڈوپ کلسٹر پر لاگو کر سکیں تاکہ مختلف قسم کی ملازمتوں کے لیے میموری کی خصوصیات کو پورا کیا جا سکے۔

• RDD کیشنگ پالیسی—میموری بمقابلہ SSD: زیادہ تر معاملات میں، SSD کی حمایت یافتہ میموری کیچنگ بہترین کارکردگی دکھاتی ہے جب تک کہ تمام RDD اصل مین میموری میں فٹ نہ ہوں۔ لہذا، SSD کی مدد سے میموری کیشنگ پالیسی چیلنجنگ کام کے بوجھ کے لیے ایک قابل عمل انتخاب ہو سکتی ہے جس میں کافی مقدار میں مین میموری کی ضرورت ہوتی ہے جو کلسٹر میں کسی ایک نوڈ سے نہیں مل سکتی۔

6. نتائج

اس مقالے میں، ہم نے کموڈٹی سرور پر مبنی کمپیوٹنگ کلسٹر کے اوپر چلنے والے اسپارک سسٹم کی کارکردگی میں کمی کے اہم عوامل کی چھان بین کی ہے جس میں ناکافی دستیاب اہم یادیں ہیں۔ تجربہ اور تجزیہ کے بعد، ہم نے متبادل پیش کیے جو مجموعی کارکردگی کو بہتر بنا سکتے ہیں۔

جاوا کوڑا جمع کرنا اس وقت ہوتا ہے جب جسمانی میموری کی کمی کی وجہ سے JVM ہیپ کی ذخیرہ کرنے کی جگہ ناکافی ہوتی ہے۔ Java GC کاموں کو کچرا جمع کرنے کا انتظار کرتا ہے تاکہ کام کی تکمیل کا مجموعی وقت بڑھ جائے۔ شفل اسپل اس وقت ہوتا ہے جب شفل مرحلے کے دوران JVM ہیپ کی شفل جگہ ناکافی ہوتی ہے۔ شفل اسپیس کی کمی کی وجہ سے انٹرمیڈیٹ شفل ڈیٹا کو ڈسک میں پھیلانے کے لیے سیریلائزیشن کرنے کے لیے CPU اوور ہیڈ کو بڑھاتا ہے۔ TC ورک بوجھ کے تجربے میں، شفل ریڈ بلاک شدہ وقت کام کو شفل جگہ کی کمی کی وجہ سے نیٹ ورک کے ذریعے شفل ڈیٹا پڑھنے کا انتظار کرتا ہے۔ یہ تمام عوامل ممکنہ طور پر کام کی تکمیل کے مجموعی وقت کو بڑھا سکتے ہیں جو Spark سسٹم کی کارکردگی کو سنجیدگی سے متاثر کر سکتے ہیں۔

ان مسائل کو حل کرنے کے لیے، ہم ایک SSD کے ساتھ ایک کلسٹر بناتے ہیں اور میموری اور SSD دونوں پر RDD کو الگ الگ کیش کرتے ہیں تاکہ SSD کو میموری کی سٹوریج کی جگہ کی تکمیل کے لیے استعمال کیا جا سکے۔ اس کے علاوہ، ہم شفل کی جگہ کو بڑھانے کے لیے JVM ہیپ کنفیگریشن کو ایڈجسٹ کرتے ہیں۔ نتیجے کے طور پر، ہم PageRank کے کام کے بوجھ کے لیے 30% کارکردگی میں بہتری اور TC ورک بوجھ کے لیے 42% کارکردگی میں بہتری حاصل کر سکتے ہیں۔ ہم نے شناخت کیا ہے کہ شفل سپل کارکردگی کے انحطاط کا ایک اہم عنصر ہو سکتا ہے اور تجربہ کے ذریعے دکھایا گیا ہے کہ کام کے بوجھ میں کئی تکرار اور شفلنگ پر مشتمل ہے، شفل کی جگہ کو بڑھانا کارکردگی کے اہم فوائد فراہم کر سکتا ہے۔ اس کے علاوہ، ہم نے پایا کہ ملازمتوں کے میموری کے استعمال کے مختلف نمونے JVM میں اسٹوریج/شفل میموری فیصد مختص کے لحاظ سے عمل درآمد کے کل وقت کو متاثر کر سکتے ہیں۔ PageRank اور k-means کلسٹرنگ کی کارکردگی کے تجزیے کے مطابق، JVM میں میموری کی تقسیم جو کام کے بوجھ کی خصوصیات کے مطابق ہے، کام کی تکمیل کے وقت کو نمایاں طور پر بہتر بنا سکتی ہے۔

ان نتائج کو Spark پلیٹ فارم میں ضم کرنا ہمارے مستقبل کے کاموں میں سے ایک ہوگا۔ مثال کے طور پر، اگر کام کے بوجھ کو شفل ڈیٹا کی مقدار کے لحاظ سے مخصوص کیا جا سکتا ہے، تو ہدف کے کام کے بوجھ کی پروسیسنگ کو تیز کرنے کے لیے ایک بہترین کنفیگریشن خود بخود لاگو کی جا سکتی ہے۔ لہٰذا، متفاوت سرور کنفیگریشنز میں، ورک لوڈ میموری کے استعمال سے آگاہ شیڈولنگ سسٹم تیار کرنا اسپارک پر مبنی کلسٹر کی مجموعی کارکردگی کو بہتر بنا سکتا ہے۔

مصنف کی شراکتیں:

تصوراتی، JL (جاہوان لی)؛ طریقہ کار، جے ایل (جاہوان لی) اور جے سی؛ سافٹ ویئر، جے سی اور جے ایل (جاہیون لی)؛ توثیق، JC، JL (Jaehyun Lee) اور JL (Jaehwan Lee)؛ تفتیش، جے ایل (جاہوان لی) اور جے ایس کے؛ وسائل، جے ایل (جاہوان لی) اور جے ایس کے؛ ڈیٹا کیوریشن، جے سی اور جے ایل (جاہیون لی)؛ تحریر — اصل مسودہ کی تیاری، JC اور JL (Jaehyun Lee)؛ تحریر — جائزہ اور ترمیم، جے ایل (جاہوان لی) اور جے ایس کے؛ تصور، JL (جاہیون لی)؛ نگرانی، JL (Jehwan Lee) اور J.-SK؛ پروجیکٹ ایڈمنسٹریشن، جے ایل (جاہوان لی) اور جے ایس کے؛ فنڈنگ ​​کا حصول، جے ایل (جاہوان لی)۔ تمام مصنفین نے مخطوطہ کے شائع شدہ ورژن کو پڑھا اور اس سے اتفاق کیا ہے۔

help with memory

فنڈنگ:

اس تحقیق کو بنیادی سائنس ریسرچ پروگرام (NRF-2020R1F1A1072696) نے نیشنل ریسرچ فاؤنڈیشن آف کوریا (NRF) کے ذریعے تعاون کیا جس کی مالی اعانت وزارت سائنس اور ICT، Gyeonggi صوبے کے GRRC پروگرام (نمبر GRRC-KAU{ {5}}B01، "360VR سروسز کے لیے ویڈیو اور اسپیس کنورجینس پلیٹ فارم پر مطالعہ")، اور ITRC (انفارمیشن ٹیکنالوجی ریسرچ سینٹر) سپورٹ پروگرام (IITP-2021-2018-0-01423)۔

ادارہ جاتی جائزہ بورڈ کا بیان:

قابل اطلاق نہیں۔

باخبر رضامندی کا بیان:

قابل اطلاق نہیں۔

ڈیٹا کی دستیابی کا بیان:

فرمائش پر دستیاب.

مفادات میں تضاد:

مصنفین مفادات کے تصادم کا اعلان نہیں کرتے ہیں۔


حوالہ جات

1. ڈین، جے؛ Ghemawat, S. MapReduce: بڑے کلسٹرز پر آسان ڈیٹا پروسیسنگ۔ کمیون ACM 2008, 51, 107–113۔ [کراس ریف]

2. اپاچی ہڈوپ پروجیکٹ: قابل اعتماد، توسیع پذیر، تقسیم شدہ کمپیوٹنگ کے لیے اوپن سورس سافٹ ویئر۔ آن لائن دستیاب: https://hadoop.apache.org/ (10 ستمبر 2021 کو حاصل کیا گیا)۔

3. شواچکو، K.؛ کوانگ، ایچ. رادیہ، ایس. Chansler، R. Hadoop نے تقسیم شدہ فائل سسٹم۔ 2010 کے IEEE 26ویں سمپوزیم کی کارروائی میں ماس اسٹوریج سسٹمز اور ٹیکنالوجیز (MSST)، انکلائن ولیج، NV، USA، 3-7 مئی 2010؛ صفحہ 1-10۔

4. زہریہ، ایم. چودھری، ایم؛ فرینکلن، ایم جے؛ شینکر، ایس. Stoica، I. Spark: کام کرنے والے سیٹوں کے ساتھ کلسٹر کمپیوٹنگ۔ ہاٹ کلاؤڈ 2010، 10، 95۔

5. Osterhout, K.; رستی، آر. رتناسامی، ایس. شینکر، ایس. چون، بی جی ڈیٹا اینالیٹکس فریم ورک میں کارکردگی کا احساس دلانا۔ نیٹ ورکڈ سسٹمز ڈیزائن اور نفاذ (NSDI) پر 12ویں USENIX سمپوزیم کی کارروائی میں، اوکلینڈ، CA، USA، 4-6 مئی 2015؛ صفحہ 293-307۔

6. زنگ، ڈبلیو. غوربانی، A. وزنی پیج رینک الگورتھم۔ کمیونیکیشن نیٹ ورکس اور سروسز ریسرچ پر IEEE دوسری سالانہ کانفرنس کی کارروائی میں، فریڈریکٹن، NB، کینیڈا، 21 مئی 2004؛ صفحہ 305-314۔

7. چکردھر، ST؛ اگروال، وی ڈی؛ Rothweiler, SG ٹیسٹ جنریشن کے لیے ایک عبوری بندش الگورتھم۔ آئی ای ای ای ٹرانس۔ Comput.-Aided Des. انٹیگر سرکٹس سسٹم 1993، 12، 1015–1028۔ [کراس ریف]

8. O'Malley, O. Terabite Sort on Apache Hadoop. یاہو۔ مئی 2008۔ صفحہ 1-3۔ آن لائن دستیاب: http://sortbenchmark.org/ YahooHadoop.pdf (10 ستمبر 2021 کو حاصل کیا گیا)۔

9. K- کا مطلب کلسٹرنگ۔ آن لائن دستیاب: https://en.wikipedia.org/wiki/K-means_کلسٹرنگ (10 ستمبر 2021 کو رسائی)۔

10. زہریہ، ایم. چودھری، ایم؛ داس، ٹی. ڈیو، اے. ما، جے؛ McCauly، M.؛ فرینکلن، ایم جے؛ شینکر، ایس. Stoica، I. لچکدار تقسیم شدہ ڈیٹاسیٹس: ان میموری کلسٹر کمپیوٹنگ کے لیے ایک غلطی برداشت کرنے والا خلاصہ۔ نیٹ ورکڈ سسٹمز ڈیزائن اینڈ امپلیمنٹیشن (NSDI) پر نویں USENIX سمپوزیم کی کارروائی میں، سان ہوزے، CA، USA، 25-27 اپریل 2012؛ صفحہ 15-28۔

11. ڈیوڈسن، اے. یا، A. Spark میں شفل کی کارکردگی کو بہتر بنانا؛ تکنیکی رپورٹ؛ Berkeley-Department of Electrical Engineering and Computer Sciences, University of California: Berkeley, CA, USA, 2013۔

12. نکولائی، بی. کوسٹا، CHA؛ Misale، C.؛ کترینس، کے. Park, Y. بگ ڈیٹا اینالیٹکس کے لیے اجتماعی ڈیٹا شفلنگ پیٹرنز کو بہتر بنانے کے لیے اڈاپٹیو I/O کا فائدہ اٹھانا۔ آئی ای ای ای ٹرانس۔ متوازی تقسیم۔ سسٹم 2017، 28، 1663–1674۔ [کراس ریف]

13. ژانگ، ایچ. چو، بی؛ سیفے، ای. چنگ، اے. فریڈمین، ایم جے رائفل: بڑے پیمانے پر ڈیٹا اینالیٹکس کے لیے آپٹمائزڈ شفل سروس۔ تیرہویں یورو سیس کانفرنس کی کارروائی میں؛ EuroSys '18; ایسوسی ایشن فار کمپیوٹنگ مشینری: نیویارک، نیویارک، امریکہ، 2018۔ [کراس ریف]


For more information:1950477648nn@gmail.com




شاید آپ یہ بھی پسند کریں