بررسی ابزارهای MapReduce در BigData

از OCCC Wiki
پرش به ناوبری پرش به جستجو

مقدمه

در حال حاضر حجم داده در فضای اینترنت رشد بسیار زیادی در حد ترابایت و پتابایت دارد. همزمان با رشد داده، انواع داده تولیدشده توسط برنامه ها نیز از گذشته بیشتر می شود. در نتیجه روش ذخیره سازی پایگاه های داده رابطه ای دیگر پاسخگو نبوده و بسیاری از شرکت های فعال در زمینه فناوری اطلاعات به پایگاه های داده NoSQL نظیر Cassandra و HBase برای مدیریت گران داده (BigData) روی آورده اند و ممکن است از سیستم های محاسباتی توسعه یافته نظیر Hadoop نیز در کنار آنها استفاده کنند. پایگاه های داده NoSQL معمولا از روش ذخیره سازی کلید-مقدار (key-value)، غیررابطه ای توسعه یافته، با مقیاس افقی و بدون ساختار استفاده می کنند. با این وجود آیا ما امروزه به مدل سازی داده نیاز داریم؟ مدل سازی در روش رابطه ای بر روی پیچیدگی روابط چندین schema تمرکز داشت ولی این موارد برای پایگاه های داده غیررابطه ای و بدون schema دیگر مطرح نیست. لذا روش های مدل سازی داده قدیمی دیگر کارامد نبوده و ما به یک متدولوژی جدید برای مدیریت گران داده نیاز داریم. دیاگرام زیر معماری کلی گران داده را نمایش می دهد:

Mapreduce-Model.png

همان طور که از دیاگرام فوق مشخص است مدل های گران داده در سه لایه نشان داده شده اند:

  1. لایه داده فیزیکی: داده ای است که ما در یک سیستم گران داده داریم که می تواند در انواع مختلف نظیر video، audio،logs ،business tables و غیره باشد.
  2. لایه مدل سازی داده: لایه ای است که برای مدیریت داده فیزیکی به کار می رود.
  3. لایه مدل سازی محاسباتی: لایه کاربردی که برای بازیابی اطلاعات برای ارزش گذاری تجاری به کار می رود.

تمرکز ما در این مقاله بر روی لایه سوم یا مدل سازی محاسباتی می باشد که به بررسی ابزارهای نگاشت کاهشی خواهیم پرداخت.

چکیده

با رشد روزافزون حجم و انواع داده ها ضروریست که سازمان ها به دنبال روش هایی برای افزایش سرعت در پردازش داده های حجیم باشند. MapReduce مدلی برای پردازش حجم بسیار بزرگ داده است که اولین بار توسط گوگل ارایه گردید. این مدل شامل دو وظیفه است: اولی وظیفه نگاشت (Map) که داده را از یک مجموعه وسیهع دریافت می کند و عناصر آن به جفت های کلید-مقدار (key-value pairs) شکسته می شوند. و دومین وظیفه که Reduce نام دارد خروجی Map را گرفته و بخش های مختلف داده را با هم ترکیب نموده یک مجموعه کوچکتر از جفت های کلید-مقدار به عنوان خروجی بر می گرداند.

Mapreduce.png

در این مقاله می خواهیم دو ابزار معروف MapReduce به نام های Hadoop و Spark محصول کمپانی Apache را مورد بررسی قرار دهیم.


تاریخچه و معرفی مدل نگاشت کاهشی

یکی از فراگیرترین مدل های برنامه نویسی تجمعی برای گران داده مدل نگاشت کاهشی است. که توسط گوگل در سال 2004 پیشنهاد شد و برای پردازش حجم وسیع داده روی ماشین های کلاستر شده به کار گرفته شد.[1] مدل نگاشت کاهشی بر پایه یک ساختار جفت <کلید ، مقدار> طراحی شده است که در فاز نگاشت، هر برنامه تابع نگاشت، یک تک جفت <کلید ، مقدار> به عنوان ورودی گرفته یک لیست میانی از <کلید ، مقدار> به عنوان خروجی تولید می کند. توضیحات فوق را می توان در قالب فرم زیر نمایش داد:
map (key1, value1) → {(key2, value2) , . . .} ) (1)

سپس کتابخانه نگاشت کاهشی تمام جفت های <کلید ، مقدار> میانی را بر اساس کلید گروه بندی می کند. نهایتا تابع کاهش جفت های گروه بندی شده را گرفته و به ازای هر گروه یک جفت <کلید ، مقدار> جدید به عنوان خروجی تولید می کند که می توان به فرم زیر این موضوع را نمایش داد:

reduce (key2, {value2, . . .}) → (key2, value3) (2)

دو پیاده سازی از برنامه نویسی نگاشت کاهشی در سال های اخیر Hadoop و Spark می باشند.[1]

معرفی ابزار Apache Hadoop

Apache Hadoop یک فریم ورک متن باز است که در زبان جاوا نوشته شده و امکان پردازش و مدیریت مجموعه های بزرگ داده را در محیط توسعه یافته فراهم می کند.[1]
Hadoop بر روی یک فایل سیستم توزیع شده Hadoop یا HDFS کار می کند که قادر است فایل های داده را در تعداد زیادی گره به صورت موازی توزیع کند و این کار امکان ارسال سریع داده را بین گره ها امکان پذیر نموده و هنگامی که یک یا چند گره مختل شوند، سیستم همچنان بدون وقفه قادر به ادامه سرویس دهی خواهد بود.[1]
در حالت کلی توابع نگاشت کاهشی به همراه مولفه های دسترسی و جابجایی داده، تعیین کننده اصلی تاخیر در برنامه های end-to-end هستند. مطالعات متعدد کارایی نشان می دهند که Hadoop دارای نقاط حساس زیادی است که می توانند بر روی کارایی آن تاثیرگذار باشند. در حقیقت Hadoop دارای حدود 200 پارامتر تنظیم کننده است که هرکدام از آنها برروی کارایی آن اثرگذارند و یک برنامه نویس باید تمامی آنها را برای دریافت یک کارایی خوب تنظیم کرده باشد. شواهد تجربی نشان می دهد که تنظیم دقیق تعداد کمی از این پارامترها می تواند کارایی را 100 تا 200 درصد افزایش دهد. بهینه سازی تنظیمات یک برنامه Hadoop بر روی یک بستر اجرایی یک طراحی بسیار پیچیده است. [3]
مولفه های مهم Hadoop عبارتند از:[6]

  • Distributed File System (HDFS)

یک سیستم فایل توزیع شده برای ذخیره داده بر روی کلاستری از چندین سرور است که امکاناتی نظیر مقاومت در برابر خرابی (Fault Tolerance) را ارایه می کند.

  • Hadoop YARN

یک لایه مدیریت منابع و زمانبندی کارها در کلاستر می باشد.

  • Apache Pig

یک Wrapper برای مدل نگاشت کاهشی است که محیط آن شبیه SQL است که توسط Yahoo توسعه یافته و سازمان های زیادی نظیر Yahoo، Twitter، AOL و LinkedIn و ... از آن استفاده می کنند.

  • Hive

Wrapper دیگری برای مدل نگاشت کاهشی است که توسط Facebook توسعه یافته است. در واقع این ابزار و ابزار Pig به برنامه نویسان کمک می کنند که درگیر پیچیدگی های کدنویسی مدل نگاشت کاهشی نشوند.

  • HBase

یک مدل پایگاه داده غیررابطه ای است که پرس و جوهای سطح پایین را پشتیبانی می کند و در واقع در مقابل Hive قرار می گیرد که کاملا از SQL پشتبیانی می کند. همجنین برخلاف Hive برای پردازش برنامه های real-time مورد استفاده قرار می گیرد.[2]

Hadoop-Structure.png

مراجع

1. Daniel Peralta, Sara del Río, Sergio Ramírez-Gallego, Isaac Triguero, Jose M. Benitez, and Francisco Herrera/Evolutionary Feature Selection for Big Data Classification: A MapReduce Approach/2015/ لینک به مقاله

2. Anand Loganathan, Ankur Sinha, Muthuramakrishnan V., and Srikanth Natarajan/A Systematic Approach to Big Data Exploration of the Hadoop Framework/2014/لینک به مقاله

3.Xing Wu, Yan Liu, Ian Gorton / Exploring Performance Models of Hadoop Applications on Cloud Architecture/2015/لینک به مقاله

4.Xiaoyi Lu ; Dept. of Comput. Sci. & Eng., Ohio State Univ., Columbus, OH, USA ; Rahman, M.W.U. ; Islam, N. ; Shankar, D / Accelerating Spark with RDMA for Big Data Processing: Early Experiences /2014/لینک به مقاله

5.MATEI ZAHARIA, MOSHARAF CHOWDHURY, TATHAGATA DAS, ANKUR DAVE, JUSTIN MA, MURPHY MCCAULEY, MICHAEL J. FRANKLIN, SCOTT SHENKER, AND ION STOICA / Fast and Interactive Analytics over Hadoop Data with Spark /2012/لینک به مقاله

6.Dilpreet Singh and Chandan K Reddy / A survey on platforms for big data analytics /2014/لینک به مقاله