بخشی از مقاله

مقايسه روش هاي پردازش کلان داده با استفاده از سيستم هاي پردازش داده موازي و MapReduce
چکيده –با توجه به افزايش روز افزون حجم داده ، کلان داده به عنوان يکي از موضوعات اساسي در عرصه ذخيره و پردازش داده مطرح است . از يک سو چارچوب DBMS موازي به عنوان يک ابزار قدرتمند و راهکاري قديمي به پشتوانه شرکت هاي بزرگ و محصولات تجاري موفق و از سوي ديگر چارچوب MapReduce به عنوان يک ساختار کد باز و ارزان ، با برنامه ريزي پايه براي پاسخگويي به نيازهاي پردازشي داده با حجم زياد، به صورت راهکاري نوپا مطرح است . در اين مقاله کوشش شده است تا با بررسي نکات کليدي و عملکردي اين دو شيوه در برخورد با پردازش کلان داده ، امکان مقايسه اي مناسب فراهم آيد.
کليد واژه - ديتابيس موازي ،کلان داده، محاسبات خوشه اي، DMBS موازي، MapReduce.


١- مقدمه
امروزه محاسبات خوشه اي، يکـي از تحـولات عظـيم کـامپيوتري است که دستيابي به آن مستلزم حـل مسـايلي نظيـر محاسـبات موازي، همکاري سرورهاي مختلف و مجموعه هاي نرمافزاري قوي براي انجام پردازشهاي موازي مورد نياز است . يکـي از ابزارهـاي جديد در اين زمينه MapReduce ميباشد[١]. MapReduce بـه اين دليل جذاب است که کاربر مـيتوانـد بـه سـادگي ارتباطـات سطح بالا در برنامه هاي توزيع شده را از طريق آن بيان نمايد و به همين دليل در ارتباطات آموزشي بسيار مورد توجه قرار دارد. بـه عنـوان مثــال IBM و گوگــل طرحـي بــراي ايجــاد يــک خوشــه MapReduce با ١٠٠٠ پردازنده ارائه نمودنـد کـه بـراي تـدريس برنامه نويسي توزيع شده به دانشجويان قابل استفاده باشد.
سوال اساسـي در اسـتفاده از MapReduce ايـن اسـت کـه چـرا از DBMSهاي موازي استفاده نشـود؟ سيسـتم هـاي پايگـاه داده موازي که به صورت اقتصادي در دو دهه اخير در دسترس بـوده - اند و يک دوجـين از آنهـا در بـازار موجـود اسـت نظيـر تراديتـا، اســترديتا،ِ نتِــزا، ديتـالگرو، SQL ســرور مايکروســافت در پــروژه ماديسون، ديتايوپيا، ورتيکا، پاراسـل ، نئوويـو، گـرين يـلام، DB٢، اراکل (اگزاديتا) که همه آنها پلتفرمهايي هوشمند با توان اجرايـي بالا هستند و مانند MapReduce محيط برنامه نويسي سطح بالا و امکان موازي سازي آسان را فراهم ميآورند. گرچه به نظر ميآيـد که هـر کـدام از MapReduce و DBMSهـاي مـوازي طرفـداران خاص خود را دارند. در حقيقت همه پـردازشهـاي کـلان داده را هم ميتوان به صـورت مجموعـه اي از پـرس وجوهـاي ديتابيسـي نوشت (با تعريف توابع و تجميع فيلترها و ترکيب داده ها) و هم بـه صورت کارهاي MapReduce تعريف کرد. در اينجا بـرآنيم تـا بـه بررسي تفاوت روش MapReduce و روش هاي پردازش موازي در پردازش دادههاي با حجم زياد بپردازيم . هر دو کلاس از سيستم - ها در شرايط مختلف ، انتخابهـاي کليـدي هسـتند. بـراي مثـال همه DBMSها به تطابق داده براي ايجاد يک طرح خوش تعريـف نياز دارند در مقابل MapReduce اجازه ميدهـد کـه داده در هـر فرمتي وارد شود. تفاوت ديگر امکانات هر سيستم براي مقايسـه و نمايه سازي بهينه است و اينکه چطور توزيـع داده را انجـام مـي- دهند و استراتژيهاي اجراي پرسوجوي آن چگونه است .
در اين مقاله ما به بررسي اين انتخابها مـي پـردازيم . در بخش دوم، دو شــيوه آنــاليز کـــلان داده يعنـــي DBMS مـــوازي و MapReduce معرفي و در بخش سوم مقايسه بين ايـن دو شـيوه ارايه شده اسـت و سـرانجام در بخـش پايـاني، جمـع بنـدي ايـن مقايسه ها انجام گرفته است .
٢- معرفي دو شيوه آناليز کلان داده ها
هر دو کلاس از سيستم هايي که در اينجا بدان ها مـي پـردازيم بـه هستند[٢]. اين معمـاري صورت مجموعه اي از کامپيوترهاي SN2 به صورت مجموعه اي از شيوههاي مسـتقل اسـت کـه هـر کـدام ديسک محلي و حافظه محلي خود را دارند و از طريق شبکه هـاي محلي پرسرعت به يکديگر وصل ميشوند. هر دو سيستم نـامبرده از طريق تقسيم داده در پارتيشن هاي مختلف ، عمل موازي سازي را انجام ميدهند. پارتيشن ها از طريق نودهاي مختلـف تخصـيص داده ميشوند. در اين بخش يک ديدگاه کلي از مدل DBMSها و DBMS موازي را در محيط SN ارائه ميدهيم .
MapReduce -1-2
اولين کار کامل MapReduce توسـط گوگـل در سـال ٢٠٠٤ در منبع [١] معرفي شـد. MapReduce بـه منظـور پاسـخگويي بـه محاسبات مورد نياز کاربران گوگل که با حجم زيادي از داده خام انجام مي گرفت ، به وجود آمد[١]. تهيه پاسـخ هـاي کـاربران، بـه خزيدن در صفحات وب و ارايه گزارشات تقاضاي وب نياز داشـت .
محاسبات موتور گوگل ساده بود اما حجم زيادي از درخواسـت هـا و محاسبات غير ضـروري در ماشـين هـاي توزيـع شـده از سـوي کاربران بود. بنابراين ، اين سوال به وجود آمد که چگونه مـي تـوان محاسبات مختلف را تکرار کرد. اين سوال خود شامل سه قسـمت است : تلاش براي موازي سـازي، توزيـع داده، راه انـدازي مجـدد ماشين يا تحمل خرابي نود.
کتابخانه MapReduce به صورت مجرد به وجود آمد و به توسعه - دهندگان اجازه ميداد محاسبات خود را به صـورت صـريح بيـان نمايند و درگير جزييات موازيسازي ، تحمل خرابي و توزيـع داده و توازن بار در اين کتابخانه نباشند.
MapReduce شامل دو تابع ساده map و reduce اسـت . در فـاز map نود اصلي ، مجموعه داده ورودي را بـه زيـر مسـايل مسـتقل تقسيم ميکند و آنها را در بين نودهاي کـارگر توزيـع مـينمايـد.
سپس نودهاي کارگر پردازش مسايل کوچک را به صورت مـوازي آغار ميکنند و در فاز reduce، نود اصلي، پاسخ هاي زيرمسايل را با هـم ترکيـب نمـوده و خروجـي را توليـد مـي نمايـد. در مـدل MapReduce همه محاسبات به صورت زوج هاي (کليـد-مقـدار) مشابه آنچه در زير آمـده اسـت ، انجـام مـيشـود[3]. کـاربر بايـد برنامه اي بنويسد که با کتابخانه MapReduce يکپارچه شـود و از دو رابط map و reduce پشـتيباني نمايـد. شـکل نحـوه عملکـرد توابع map و reduce را نشان ميدهد.

يکي از موضوعات جالب در مورد MapReduce نيز همين سادگي برنامه نويسـي آن اسـت . در ايـن روش تنهـا از دو تـابع map و reduceکه توسط کاربر براي پردازش زوج هاي کليد-مقدار نوشته شده، استفاده ميشود و دادههاي ورودي به صورت مجموعه اي از پارتيشن ها، در سيستم فايل توزيع شده بر روي هر نود در خوشه ذخيره ميشوند. سپس برنامه به يـک چـارچوب پـردازش توزيـع شده تزريق و اجرا ميگردد.
همزمان با توليد رکوردها توسط تابع map، تابع split رکوردهـا را به R باکت مجزا تقسيم ميکند. عمل تقسيم با به کار بردن يـک تابع براي کليد هـر رکـورد خروجـي انجـام مـي شـود. تـابع split معمولا يک تابع هش است . گرچه هر تابع معين ديگري نيز مـي - توانست باشد. هر باکـت در يـک نـود پردازشـي بـر روي ديسـک محلي نوشته ميشود. تابع map زماني که R فايل خروجـي بـراي هر باکت توليد شود خاتمه مييابد. به صورت کلي چندين نمونـه از تابع map بر روي نودهاي مختلف از يک خوشه محاسباتي اجرا ميشود. در اينجا ما از اصطلاح نمونه 3 براي هر درخواست اجـراي توابع map وreduce استفاده ميکنـيم . هـر نمونـه map بـه يـک بخش مجزا از فايـل ورودي جهـت پـردازش نگاشـت مـي شـود و زمانبندي آن توسط زمانبند MapReduce انجام ميگيرد. اگـر M بخش مجزا در فايل ورودي وجود داشته باشـد آنگـاه R فايـل بـر روي ديسک بـراي ذخيـرهسـازي M کـار map وجـود دارد و بـه صورت کلي M×R فايل داريم که نکته کليدي اين است که همه نمونه هاي map از يک تـابع هـش استفاده ميکنند بنابراين همه رکوردهاي خروجي با يـک مقـدار هش در فايل خروجي ذخيره شدهاند.
فاز دوم از برنامـه MapReduce اجـراي نمونـه هـاي R در برنامـه reduce است ، جايي که R تعداد نودهاست . ورودي براي هر نمونه Rj شامل فايل هـاي Fij اسـت . ايـن فايـل هـا در شـبکه از طريـق نودهاي map بر روي ديسک هاي محلي منتقل ميشـوند. مجـددا توجه کنيد که در همه رکوردهاي خروجي از فاز نود کـه بـا يـک تابع هش توليد شدهاند، بدون در نظر گرفتن اينکـه کـدام نمونـه map، داده را توليد کرده است ، توسط يک نمونه reduce استفاده ميشوند.
هر پردازش reduce يا ترکيب رکوردها به چند روش به رکوردهـا نگاشت ميشوند و سپس رکوردها در يک فايل خروجي (در يـک سيستم توزيع شده) نوشـته مـيشـوند کـه بخشـي از محاسـبات نهايي را تشکيل ميدهد.
مجموعه دادههاي ورودي بـه صـورت يـک يـا چنـد پارتيشـن در سيستم فايل توزيع شده وجود دارد. تصميم در مورد اينکه چنـد نمونه کار map اجرا شوند و چطور به نودهـاي موجـود تخصـيص يابند به عهده زمانبند MapReduce است . همچنين زمانبند بايـد در مورد تعداد و موقعيـت نودهـاي در حـال اجـراي نمونـه هـاي Reduce نيــز تصـميم گيـري کنــد. مرکــز کنتــرل MapReduce مسئول پاسخگويي جهت همکاري فعاليت هاي سيستمي هر نـود است . يک برنامه MapReduce يک اجرا را زماني خاتمه ميدهـد که نتايج نهايي به صورت فايـل جديـد در سيسـتم فايـل توزيـع شده ، نوشته شده باشد[٤].
3 -instance
MapReduce در لايه بالايي سيسـتم DFS4 کـار مـيکنـد. ايـن سيستم به کاربر اجازه ميدهد فايل را در چندين نود متصـل بـه شبکه توزيع نمايد در حـاليکـه DFS نسـبت بـه خرابـي ، کـاملا تحمل پذير است و در صورت خرابي يک يا چند نود، کـل دادههـا سالم ميماند. MapReduce به کاربر اجازه ميدهد تمرکـز اصـلي را بر روي حل نيازمنديهاي منطقي براي رفع اشکال خود داشـته باشد[٥].
MapReduce به صورت گستردهاي توسط گوگـل اسـتفاده شـده است . گوگل DFS خاص خود به نام GFS٥ را ايجاد نمـوده اسـت .
در مقاله اصلي اين شرکت ، مشکلات توسعه اين مدل آمده اسـت
که خلاصه آن به شرح ذيل ميباشد[١]:
• مسائل يادگيري
• مباحث خوشه اي
• استخراج داده براي توليد گزارشات در پرس وجوهاي عمومي
• استخراج داده مربوط به ويژگيهاي صفحات وب

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید