چارچوبهای پردازش کلانداده
چارچوبهای کلانداده به برنامهنویسان امکان میدهند تا مجموعهدادههایی بسیار بزرگتر از آنچه یک ماشین واحد میتواند پردازش کند را، با بیان محاسبات به صورت جریانهای داده موازی که زمان اجرا آنها را توزیع کرده و تحملپذیری خطا را فراهم میآورد، پردازش کنند.
Definition
یک چارچوب پردازش کلانداده سیستمی است که به برنامهنویس امکان میدهد تا یک محاسبه بر روی یک مجموعه داده بسیار بزرگ را به عنوان عملگرهای جریان داده سطح بالا بیان کند، و به طور خودکار دادهها را تقسیمبندی کرده، اجرای موازی را در یک خوشه زمانبندی میکند، و خرابی گرهها را تحمل میکند.
Scope
این موضوع مدل برنامهنویسی جریان داده برای پردازش داده در مقیاس خوشهای را پوشش میدهد: پارادایم MapReduce و محدودیتهای آن، موتورهای جریان داده درونحافظهای که بر پایه مجموعهدادههای توزیعشده مقاوم ساخته شدهاند، و پردازش یکپارچه دستهای و جریانی با پنجرهبندی، معناشناسی زمان رویداد، و تضمینهای دقیقاً یکبار. این موضوع به چگونگی تقسیمبندی دادههای عظیم و احتمالاً نامحدود، پردازش موازی آنها، و بازیابی پس از خرابیها میپردازد.
Core questions
- چگونه میتوان یک محاسبه بر روی دادههایی که برای یک ماشین بسیار بزرگ هستند را به صورت موازی بیان و اجرا کرد؟
- چگونه موتورهای درونحافظهای و جریانی، MapReduce دستهای را بهبود میبخشند؟
- چگونه تعادل بین صحت، تأخیر، و تحملپذیری خطا برای جریانهای نامحدود و خارج از ترتیب برقرار میشود؟
Key theories
- MapReduce
- MapReduce پردازش داده را به عنوان یک مرحله نگاشت (map) که رکوردها را به جفتهای کلید-مقدار تبدیل میکند و یک مرحله کاهش (reduce) که بر اساس کلید تجمیع میکند، بیان میکند، در حالی که زمان اجرا، موازیسازی، درهمسازی داده، و اجرای مجدد وظایف شکستخورده را مدیریت میکند.
- مجموعهدادههای توزیعشده مقاوم
- RDDها یک انتزاع درونحافظهای تحملپذیر خطا را فراهم میکنند که تبار تحولات قطعی آن امکان محاسبه مجدد پارتیشنهای از دست رفته را میدهد و محاسبات خوشهای تکراری و تعاملی را بسیار سریعتر از MapReduce مبتنی بر دیسک ممکن میسازد.
- جریان داده دستهای و جریانی یکپارچه
- موتورهای مدرن، پردازش دستهای را به عنوان یک مورد خاص از پردازش جریانی در نظر میگیرند، با استفاده از پنجرهبندی زمان رویداد و واترمارکها به علاوه اسنپشاتهای سازگار برای ارائه نتایج دقیقاً یکبار بر روی دادههای نامحدود و خارج از ترتیب.
Clinical relevance
این چارچوبها دادههای پشت جستجو، تحلیل، توصیه، و خطوط لوله یادگیری ماشین را پردازش میکنند، و موتورهای جریانی، نظارت بلادرنگ و برنامههای رویدادمحور را قدرت میبخشند، که آنها را به زیرساخت اصلی برای محاسبات دادهمحور تبدیل میکند.
History
مقاله MapReduce گوگل در سال ۲۰۰۴ (بازنگری شده در ۲۰۰۸) پردازش داده در مقیاس خوشهای را پایهگذاری کرد؛ مجموعهدادههای توزیعشده مقاوم اسپارک (۲۰۱۲) پردازش سریع درونحافظهای و تکراری را به ارمغان آورد؛ و سیستمهایی مانند Flink و مدل جریان داده (۲۰۱۵) پردازش دستهای و جریانی را با تضمینهای صحت قوی یکپارچه کردند.
Debates
- پردازش دستهای در مقابل پردازش جریانی به عنوان مدل اصلی پردازش
- پردازش دستهای سادهتر است و به راحتی میتوان آن را دقیقاً یکبار انجام داد اما تأخیر را افزایش میدهد، در حالی که پردازش جریانی تأخیر کمتری را با هزینه صحت دشوارتر در دادههای خارج از ترتیب ارائه میدهد؛ موتورهای یکپارچه استدلال میکنند که پردازش جریانی میتواند پردازش دستهای را در بر گیرد، اگرچه پردازش دستهای برای کارهای تاریخی بزرگ همچنان رایج است.
Key figures
- Jeffrey Dean
- Sanjay Ghemawat
- Matei Zaharia
- Tyler Akidau
Related topics
Seminal works
- dean2008
- zaharia2012
- akidau2015
Frequently asked questions
- چرا اسپارک و سیستمهای مشابه برای بسیاری از حجمهای کاری جایگزین MapReduce ساده شدند؟
- MapReduce نتایج میانی را بین هر مرحله روی دیسک مینویسد که برای الگوریتمهای تکراری کند است. انتزاعات درونحافظهای مانند مجموعهدادههای توزیعشده مقاوم، دادهها را در طول مراحل در حافظه نگه میدارند و تنها پارتیشنهای از دست رفته را در صورت خرابی مجدداً محاسبه میکنند، که سرعتهای زیادی را برای تحلیلهای تکراری و تعاملی فراهم میآورد.