APACHE SPARK

اسپارکMapReduceبررسی اجمالی MapReduceمدل برنامه نویسی مورد استفاده Googleترکیبی از مدلهای Map و Reduce با پیاده سازی مرتبطبرای پردازش و تولید مجموعه داده های بزرگ استفاده می شودبررسی اجمالی MapReduceبسیار مقیاس پذیر است و در بسیاری از رایانه ها قابل استفاده است.از بسیاری از ماشین های کوچک می توان برای پردازش مشاغلی استفاده کرد که به طور معمول توسط یک ماشین بزرگ قابل پردازش نیست.مفهوم mapیک جفت کلید / مقدار را وارد می کندکلید ارجاع به مقدار ورودی استخب Value مجموعه داده ای است که می توان روی آن کار کردارزیابیعملکردی که توسط کاربر تعریف شده استبرای هر مقدار ورودی مقدار اعمال می شودممکن است نیاز به تجزیه ورودی باشدلیست جدیدی از جفت کلید / مقدار تولید می کندمی تواند از جفت ورودی متفاوت باشدمقادیر را کاهش دهید.با واسط بین جفت کلید / مقدار ​​شروع می شودبا جفت کلید / مقدار نهایی به پایان می رسدجفت های شروع بر اساس کلید مرتب می شوندمقادیر مربوط به یک کلید داده شده در تابع Reduce را تأمین می کند.به طور معمول تابعی که:با تعداد زیادی جفت کلید / مقدار شروع می شودیک کلید / مقدار برای هر کلمه در تمام پرونده هایی که به هم مربوط می شوند (از جمله چندین ورودی برای همان کلمه)با تعداد بسیار کمی از جفت کلید / مقدار به پایان می رسدیک کلید / مقدار برای هر کلمه منحصر به فرد در تمام پرونده ها با تعداد موارد جمع شده در این ورودیشکسته شده بنابراین یک worker معین با ورودی همان کلید کار می کند.نقشه متن را می خواند و برای هر کلمه خوانده شده یک جفت {<word>، 1} ایجاد می کندسپسReduce تمام آن جفت ها را گرفته و برای تولید شمارش نهایی آنها را شمارش می کند.اگر 20 جفت{word ، 1} وجود داشته باشد ، خروجی نهایی Reduce یک جفت {word ، 20} خواهد بود.خلاصهالگوی MapReduceبستر های نرم افزاری برای محاسبات موازی قابل اعتماد و مقیاس پذیرموضوعات توزیع شده و موازی محیط را از برنامه نویس خلاصه می کند.سیستم های پرونده توزیع شده را اجرا می کندسیستم پرونده Googleسیستم فایل Hadoop) HDFS)HDFS (Hadoop Distributed File System)معرفی فایل سیستم HDFSفایل HDFS برای پرونده های بسیار بزرگی که بصورت استریمینگ به آنها داده می شود طراحی شده است و روی سخت افزارهای متداول اجرا می شود. به عبارت دیگر این فایل سیستم برای پرونده های چند گیگابایتی تا چند ترابایتی که یک بار نوشته می شود و بارها خوانده می شود مناسب است و از آنجا که در سخت افزارهای اجرا می شوند و نیازی به نرم افزارهای خاص ندارند ، باید آماده مقابله با از کار افتادن دیسک یا نود در خود فایل سیستم وجود داشته باشد. به همین دلایل hdfs برای عملیات فایلی که نیاز به تاخیر کم (کم تاخیر) مناسب نیست. علاوه بر این hdfs برای جایی که بسیار زیاد پرونده های کوچک وجود دارد یا برای جاهایی که مداوم به پرونده برای نوشتن در بخش های مختلف است مناسب نیست.در واقع HDFS پرونده ها را بصورت بلوک های ۶۴ یا ۱۲۸ مگابایتی تقسیم می کند و نگهداری می کند. اگر کسی با ساختار دیتا آشنا باشید ، می دانید که چرا سایز بلوک روی یک دیسک 51 تا 449 بایت (اندازه یک اسکتور) و در فایل سیستم های معماری 4 کیلوبایت تا 16 کیلو بایت است. اما hdfs از بلوک های این بزرگی (۶۴ مگابایت) برای این کار باعث می شود تا زمان جستجو برای زمان کل سیستم را کم کنید.ساختار hdfs به این صورت است که یک NameNode و یکسری DataNode وجود دارد. وظیفه NameNode که از اینجا به بعد ما آنرا NN می نامیم ، این است که اطلاعات متادیتای فایل را در خود نگهداری کند و DataNode اطلاعات بلوک های پرونده را در خود نگهداری می کند. HDFS کاملاً با استاندارد POSIX سازگار نیست ، ولی بخش زیادی از آنرا تولید می کند. دسترسی کاربر و گروه مشابه posix است و ACL (لیست کنترل دسترسی) در آن وجود ندارد. از آنجا که فایل ها را از روی HDFS نمی توانید انتخاب کنید گزینه X در دسترسی به ندیده گرفته می شود.برای استفاده از این HDFS می توانید بک اند (backend) و اینترنت (اینترفیس) به صورت متنوعی داشته باشید که بتوانید دیتا را با فرم های مختلفی (به عنوان مثال RAID توزیع شده جدید) ذخیره کنید ، یا اجازه دهید آن را بصورت http ، ftp ، sftp را مجاز کنید بدهند.ویژگی های اساسی: HDFSتحمل پذیری خطای بالاتوان عملیاتی بالامناسب برای برنامه های دارای مجموعه داده های بزرگدسترسی مستقیم به داده های سیستم فایلاز سخت افزار گره ها ساخته می شودسیستم های پرونده توزیع شدهسیستم فایل توزیع شده بسیار مقیاس پذیر برای برنامه های بزرگ با حجم زیاد داده.به عنوان مثال گره های 10K ، 100 میلیون پرونده ، 10 PBذخیره انبوه حجم انبوه داده ها در رایانه های ارزان قیمت و غیر قابل اطمینان را فراهم می کندپرونده ها برای رسیدگی به خرابی سخت افزار تکثیر می شوندشکست ها را شناسایی کرده و از آنها بازیابی کنیدبستری فراهم می کند که سیستم های دیگری مانند MapReduce ، BigTable بر روی آن کار می کنند.اسپارکمحاسبات خوشه ای سریع ، تعاملی ، یکپارچه با زبانموتور آپاچی اسپارک یک موتور تجزیه و تحلیل متحد برای پردازش داده در مقیاس بزرگ است.هسته اسپارک موتور پایه ای برای پردازش داده های موازی و توزیع شده در مقیاس بزرگ است.وظیفه انجام این موارد به عهده موتور اسپارک است:مدیریت حافظه و بازیابی خطابرنامه ریزی ، توزیع و نظارت بر کار ها در یک خوشهتعامل با سیستم های ذخیره سازیسرعتبارهای کاری را 100 برابر سریعتر اجرا می کند.آپاچی اسپارک با استفاده از برنامه ریزی پیشرفته DAG ، بهینه ساز جستجو و موتور اجرای فیزیکی ، هم برای داده های دسته ای و هم برای پخش جریانی ، عملکرد بالایی دارد.سهولت استفادهبرنامه ها را به سرعت در جاوا ، اسکالا ، پایتون ، R و SQL بنویسید.اسپارک بیش از 80 اپراتور سطح بالا را ارائه می دهد که ساخت برنامه های موازی را آسان می کند. و می توانید به صورت تعاملی از پوسته های Scala ، Python ، R و SQL استفاده کنید.عمومیتترکیب SQL ، جریان و تجزیه و تحلیل های پیچیده.اسپارک مجموعه ای از کتابخانه ها را که شامل DataFrames ،SQL و (MLlib برای یادگیری ماشین) ، GraphX و Spark Streaming ایجاد می کند و می توانید این کتابخانه ها را به صورت یکپارچه در همان برنامه ترکیب کنید.همه جا اجرا می شوداسپارک در Hadoop ، Apache Mesos ، Kubernetes ، مستقل یا در cloud اجرا می شود. این می تواند به منابع مختلف داده دسترسی پیدا کند.Spark Architectureمعماری اسپارک (Spark) یک معماری ارباب برده یا کلاینت سرور است و شامل پنج موجودیت اصلی زیر است:· برنامه راه انداز Driver· مدیر خوشه Cluster manager· کارگرها Workers· مجری executor· وظایف tasksبطور خلاصه، بخش اصلی برنامه راه انداز را برنامه کاربردی Spark مورد نظر تشکیل میدهد که در متد main آن، شیء SparkContext ساخته میشود (ابتدای برنامه های که قرار است در خوشه اجرا شود، شیء SparkContext ساخته میشود). Spark در دو حالت محلی (در یک ماشین و خوشه (در چندین ماشین) اجرا میشود. راه انداز، در حالت خوشه، با مدیر خوشه ارتباط برقرار میکند و به محض اتصال، Spark، فرآیندهای مجری را در گره های خوشه ايجاد میکند که مسئول اجرای پردازش (وظایف) و ذخیره دادهها هستند. سپس، راهانداز، کد برنامه کاربردی (گرافی جهتدار و بدون دور که بیانگر عملیاتی است که باید اجرا شود) و وظایفی جهت اجرا را به فرآیندهای مجری ارسال میکند.بیش از توضیح اجزای معماری اسپارک، به مفهوم اصطلاحات ذیل باید توجه کرد: قسمت Application : که قرار است در خوشه اجرا شود. در ابتدای متد main این برنامه، شیء SparkContext ساخته میشود. SparkContext، منطق پردازشی را ذخیره میکند و میتواند مجموعهای از کارهای موازی با سری را زمانبندی کند. قسمت job: مجموعه کاملی از تبدیلات روی RDD که با یک عمل action یا ذخیره سازی داده، خاتمه می یابد. در نتیجه، هر برنامه کاربردی، ممکن است شامل چندین کار باشد. قسمت Stage : اسبارک هر کار را به گرافی از گامها تقسیم میکند. همچنین، هر گام شامل، مجموعه ای از وظایفی است که قابل اجرا توسط گره کارگر هستند.قسمت Driver راه انداز وظایف ذیل را برعهده دارد:مذاکره با مدیر خوشه جهت تخصیص منابع به کارگرها. و هر کار را به DAG (گراف بدون دور جهت دار) ترجمه میکند.(Direct Acyclic Graph) . گراف را به گامهایی تقسیم میکند. عملیات تبدیل در یک گام، و عملیات action در گام دیگر قرار میگیرندوظایف را زمانبندی و اجرای آنها را کنترل میکند (بر اساس وضعیت کش جاری گرهها، مكان های مطلوب و مناسب جهت اجرای هر وظیفه تعیین میشود).قسمت Cluster manager : راه انداز، قادر است تا به سه نوع مدیر خوشه (مدیر خوشه مستقل ،spark Mes06 یا Yarn) متصل شود و از آن درخواست منابع کند. هر کدام از این سه مدیر خونه برای شرایطی خاص مناسب اند و میتوان یکی از آنها را برای مدیریت خوشه موجود انتخاب کرد. باید توجه داشت که مدیر خوشه مستقل Spark، بهمراه بسته Spark ارایه میشود، مدير خوشه Yarn، نیز در بشته هادوب و مدیر خوشه Mesos نیز چارچوب مستقل دیگری است. هر کدام از این سه مدیر خوشه، شامل دو بخش هستند(۱) سرویس ارباب مرکزی (مدیر منابع Yarn، ارباب Mesos، یا ارباب مستقل Spark) که تصمیم میگیرد کدام فرآیندهای مجری، چه زمانی و در چه مکانی اجرا شوند.(۲) سرویس برده که در تمام گرهها اجرا میشود (مدیر گره در Yarn برده در Mesos و برده در مدیر خوشه مستقل Spark) و فرآیندهای مجری را اجرا میکند و همچنین بر مصرف و حیات منابع انها نظارت می کند.قسمت Executor : در هر گره کارگر Spark، چند بردازش مجری وجود دارد (معمولا به اندازه تعداد هسته های گرهی برده، مجری ایجاد میگردد). هر برنامه کاربردی Spark، پردازشهای مجری خودش را دارد. هر مجری، مسئول موارد ذیل است و اجرای وظایفی که توسط راه انداز زمانبندی شدهاند، در چند نخ. . ذخیرهسازی نتایج محاسبات در حافظه (کش کردن نتایج در heap ماشین مجازی جاوا) یا دیسک . تعامل با سیستمهای ذخیره سازی . پس از تکمیل اجرای وظیفه، نتایج را به راه انداز ارسال میکنند.قسمت Workers : در معماری اسپارک، گره های برده به عنوان گره کارگر شناخته میشوند که برای برنامه Spark ، CPU حافظه و منابع ذخیره سازی فراهم میکنند.قسمت tasks : وظیفه، کوچکترین واحد کار است که Spark آن را به یک مجری ارسال میکند. هر وظیفه توسط یک یال جهتدار در یک مجری اجرا میشود. Spark، وظیفهای به ازای هر پارتیشن داده ایجاد میکند. مجری، ممکن است یک یا چند وظیفه را بصورت همروند اجرا کند. همانطور که واضح است، درجه موازی سازی، توسط تعداد پارتیشنها تعیین میشود.مدل برنامه نویسیمجموعه داده های توزیع شده انعطاف پذیر (RDD)مجموعه های غیرقابل تغییر و تقسیم شده اشیااز طریق تحولات موازی (نقشه ، فیلتر ، گروه بندی ، پیوستن ، ...) بر روی داده های ذخیره شده پایدار ایجاد شده استبرای استفاده مجدد کارآمد قابل ذخیره سازی استاقدامات درRDDتعدد ، map، reduce ، پس انداز ،RDD (Resilient Distributed Datasets)اسپارک مفهوم RDD (مجموعه انعطاف پذیر توزیع شده) را معرفی می کند ، یک مجموعه توزیع شده از اشیا و تحمل ناپذیر در برابر تغییر که می تواند به صورت موازی کار کند. RDD می تواند شامل هر نوع جسمی باشد و با بارگذاری یک مجموعه داده خارجی یا توزیع مجموعه ای از برنامه درایور ایجاد می شود.در واقع RDD از دو نوع عملیات پشتیبانی می کند:تحولات عملیاتی (مانند نقشه ، فیلتر ، map و reduce و غیره) که بر روی RDD انجام می شوند و یک RDD جدید حاوی نتیجه را ارائه می دهند.اقدامات عملیاتی هستند (مانند reduce، شمارش و غیره) که پس از اجرای محاسبات روی RDD مقداری را برمی گردانند.در اسپارک ، همیشه کار خود را با یک مجموعه داده یا پایه (Base RDD) که قرار است پردازش انجام شود ، شروع می کند. این مجموعه با استفاده از RDD پذیرفته می شود و شما می توانید در HDFS ، بانک اطلاعاتی ، پرونده ها و سایر منابع داده را با کمک RDD ها ایجاد کنید. پردازش اصلی داده ها در اسپارک مجموعه عملیاتی و تبدیلاتی است که با بر پایه RDD ، انجام می شود ، اسپارک یک RDD تغییر ناپذیر ایجاد میکند و با هر تبدیل یا انجام یک عمل ، یک RDD جدید ایجاد خواهد شد تا زمانی که به جواب نیاز شما رسیده و پردازش ما به اتمام برسد.منظور از برگشت پذیر بودن این است که هر زمان مشکلی در بخشی از کلاستر بوجود آمد و یک یا چند RDD از بین رفت به راحتی قادر به شروع RDD جدید با استفاده از RDD قبلی بوده تا این مشکل کلاستر ایرادی در روند کار اسپارک بوجود نیاورد و انجام زنجیر و تبدیل و عملیات مورد نیاز کاربر ، دوباره آنها را تولید کرد و باید نگران از بین رفتن آنها نیستیم. لغت Resilient به معنای مقاوم در برابر شکست و خطا و بازگشت آهسته اشاره دارد.توزیع داده ها در اسپارک و استفاده از یک مجموعه برای تولید RDDیکی از ویژگی های اصلی اسپارک ، در مقایسه با سایر چارچوب های تحلیل داده (از قبیل هدوپ) ، ذخیره سازی داده شده بر روی حافظه به جای دیسک می باشد. این ویژگی به برنامه های اسپارک اجازه می دهد که به سرعت اجرا شود ، چرا که برای مراجعه به دیسک برای اطلاعات لازم ،نیاز است پردازش صورت گیرد تا به آن دسترسی پیدا کنید. تصویر بالا فرآیند تجزیه یک لیست در چند بخش و توزیع هر یک را ببینید که به خوبی نمایش می دهد. هر کدام از این بخش ها در حافظه یک گره ذخیره می شود.تحمل خطای RDDدر اصل RDD اطلاعات نسب را حفظ می کند که می تواند برای بازسازی پارتیشن های از دست رفته استفاده شود.خب به پایان مقاله رسیدیم امیدوارم تونسته باشم اطلاعات اندکی درباره اسپارک به شما منتقل کرده باشم.ممنون از همراهیتون