معرفي هدوپ و MapReduce به عنوان ابزاري براي تحليل داده هاي عظيم
ابزاري كه براي تجزيه و تحليل داده ها به كار مي روند، روز به روز در حال گسترش و توسعه هستند تا بتوانند بر مبناي انواع دادهاي گوناگون، به جمعآوري و تجزيه و تحليل دادهها ، در هر نوعي كمك رساني كنند و در دادههاي عظيم به دليل ويژگيهاي خاص آن، ابزارهايي ويژه به كار ميروند كه با ابزارهاي سنتي مبتني بر رابطهي اجزا، متفاوت هستند.
ابزار موازي سازي هدوپ
تكنولوژي هاي بسياري هستند كه در زمينه ي پردازش داده هاي عظيم مطرح شدهاند، اما هادوپ يكي از معروفترين آنها است. هادوپ يك چارچوب متن باز است كه براي پردازش و ذخيره سازي اطلاعات از انواع مختلف به كار ميرود كه صنايع مبتني بر داده را در دسترسي سريع به ارزش هاي نهان در داده ها و پردازش و كاوش آنها، ياري مي كند. ويژگي هاي اصلي اين ابزار به شرح زير است:
- اين ابزار به صورت متن باز است و به همين دليل منابع آن و كتابخانه ها و توابع به راحتي در دسترس است.
- لايه ها و اجزاي آن به صورت مستقل عمل ميكنند و يكپارچه نيستند.
- از دسترسي به فايل هاي خارجي پشتيباني مي شود.
- در هنگام بار زياد سيستم، هادوپ، عمليات انجام يك دستور را به چندين گروه وظيفه مي شكند. و به همين دليل برنامه ريزي براي كارهايي كه نياز چندين گروه عمليات دارند، ساده تر صورت مي گيرد.
- برقراري تعادل خودكار بار در هركدام از گرههاي سيستم توزيع شده، در هنگامي كه ترافيك داده افزايش مييابد.
- پشتيباني از جايگزيني ماشينها و گرهها در هنگام خرابي
اين ابزار، يك معماري لايه اي دارد. در پايين ترين سطح يك لايهي حافظه اي مبتني بر ركورد قرار دارد و اين مجموعه ي داده اي به صورت سطري و ستوني مديريت ميشود و در هر ماشين موجود در خوشه هاي توزيع شده، يك مدير حافظه وجود دارد كه حافظه ي موجود در سيستم را مديريت ميكند. لايه ي وسط، يك لايهي اجراي جريان كاري است كه در آن عملگرهاي رابطه اي براي انجام عمليات بر روي مجموعهي دادهها، وجود دارند. در پايينترين سطح نرم افزاري هادوپ، يك فايل سيستم توزيع شده وجود دارد كه به اختصار HDFS ناميده ميشود. هر فايل در اينجا بخش بندي شده و در دنبالهاي از مكانهاي حافظه آدرسپذير و ادامهدار قرار ميگيرد و به صورت دستهاي پردازش ميشود. در لايهي وسطي نرم افزاري فايلها، تقسيمبندي و بخشبندي شده و هر قسمتي از پردازش در اختيار يك گره قرار ميگيرد و در نهايت نتايج نيز از گره ها جمع آوري شده و تبديل به خروجي نهايي خواهد شد. اين تقسيمبندي و جمعبندي، بر اساس تابع Map-Reduce يا نگاشت- كاهش انجام مي شود.
فايل سيستم توزيع شده هدوپ
همان طور كه در قسمت معماري هادوپ اشاره ي كوچكي به اين فايل سيستم شد ، به اختصار آن را HDFS ميناميم. و اين قسمت سيستم اصلي حافظه را در هادوپ دربر ميگيرد. زماني كه اطلاعات وارد ميشود، اين فايل سيستم، آنها را به قسمتهاي كوچكتري تقسيم ميكند و اين بخشها را بين سرويس دهندههاي مختلف كه به عنوان يك گره در سيستم قرار گرفتهاند، توزيع ميكند. هر سرويس دهنده، فقظ قسمت كوچكي از اطلاعات اصلي را نگه ميدارد و بر روي آن پردازش انجام ميدهد. هر كدام از اين بخشها براي تحمل پذيري در مقابل خطا، بر روي چندين سرويس دهنده ، كپي شدهاند. گرهي مركزي كه وظيفه ي نظارت و تقسيم بندي و جمع آوري نتايج را بر عهده دارد Name ناميده ميشود. گرههاي مختلف كه اطلاعات را نگه داري مي كنند، گره اطلاعاتي يا Data ناميده ميشوند و لايه ي مياني كه به آن در معماري اشاره شد براي بهينه سازي عملكرد HDFS به كار مي رود كه براي ارتباط بهتر دادهاي به كار مي رود.
هدوپ توسط Doug Cutting سازنده Apache Lucene که بصورت گسترده برای عملیات جستجوی متنها استفاده میشود، تولید شد. در حقیقت به وجود آمدن هدوپ از کار بر روی Nutch شروع شد. Apache Nutch یک فریم ورک متن باز برای ایجاد موتور جستجو است که بصورت گسترده، عملیات جستجوی متنها را به روشی که خزیدن یا نام گرفت انجام می دهد. در خصوص نامگذاری نام هدوپ (HADOOP) باید گفت که مخفف عبارت خاصی نیست، این نامی است که پسر Doug برروی عروسک فیل خود که زرد رنگ بود گذاشته بود.
برای شروع، Doug و همکارش Mike ایده ساختن یک موتور جستجوگر وب را در سر داشتند اما این تنها چالش آنها نبود، قیمت سخت افزار یک موتور جستجوگر که ۱ میلیون صفحه وب را جستجو و ایندکس میکند در حدود ۵۰۰۰۰۰ دلار بود با این وجود آنها باور داشتند که این پروژه یک هدف ارزشمند است.
Nutch در سال ۲۰۰۲ شروع به کار کرد و در همان زمان عملیات و روشهای جستجوی صفحات وب به سرعت رشد کرد. طی زمانی معماران پروژه دریافتند که این پروژه قابلیت و توانایی کار کردن با میلیونها صفحه وب را ندارد، در همان برهه در سال ۲۰۰۳ مقالهای از شرکت گوگل منتشر شد که توانست راه گشای مشکل آنها باشد و معماری(Google File system (GFS را توصیف میکرد.
تابع نگاشت-كاهش يا MapReduce
يك مدل معماري براي پردازش موازي در سيستم هاي محاسباتي توزيع شده است. در اين مدل، داده ها به قسمتهاي كوچكتر تقسيم شده و هر فرايند نيز به دستورات كوچكتر شكسته مي شود و گرههاي مختلف در سيستمهاي توزيع شده، بخشي از عمليات را بر مبناي اين قسمتها مديريت ميكنند. اين امر، باعث ميشود كه قدرت پردازش بالا برود.
بخش اوليه اين الگوريتم، يعني نگاشت، براي تقسيم داده ها استفاده مي شود و زير مجموعه اي از دستورات و وظايف را به هركدام از گره هاي محاسباتي اختصاص مي دهد. در اين مرحله از الگوريتم، ابتدا اطلاعات ورودي خوانده ميشود و مجموعهاي از ركوردهاي مياني براي محاسبات توليد ميشود سپس برچسب گذاري ميشود. اين ركوردها، در ميان گرههاي محاسباتي، بر اساس استفاده از توابع درهم ساز توزيع مي شود. گرهها هركدام فرآيند مربوط به خودشان را به صورت جداگانه و مستقل آغاز ميكنند. هر كدام نتيجهي توليد شدهي خود را به عنوان خروجي به گره مركزي انتقال ميدهند در اين زمان، گام دوم الگوريتم يعني كاهش آغاز خواهد شد. اين تابع نتايج را جمع آوري كرده و نتيجه ي اصلي را بر مبناي فرمت درست خروجي توليد خواهد كرد.
این فریم ورک مانند برنامهنویسی شیءگرا یک رویکرد است و نیاز به پیادهسازی دارد، hadoop یک پیادهسازی برای MapReduce است همانطور که زبان برنامهنویسی C++ یک پیادهسازی از برنامهنویسی شیءگرا است. وجود دادههای عظيم باعث توجه به این روش شده است،دیگر با استفاده از رویکردهای سنتی نمیتوان دادههایی که ۲۰ میلیون رکورد دارد يا متونی که ۱ ترابایت حجم دارد را پردازش کرد. این نیاز باعث شکلگیری این فریم ورک شد.
دیدگاه ها