مقاله ISI در زمینه داده های کلان
شماره تماس : 09217143226 مکتوبیان
شماره تماس : 09217143226 مکتوبیان
Email : Jamal.maktoobian@gmail.com
موضوعات در زمینه :
شماره تماس : 09133091692
09217143226
Radoop یک شرکت بزرگ تجزیه و تحلیل داده با هدف کم کردن موانع برای استفاده از Hadoop است. بسته Radoop اجازه می دهد تا حتی افراد غیر فنی نیز توانایی دسترسی ، تجزیه و تحلیل و شبیه سازی داده های بزرگ را داشته باشند. برای افراد متخصص علاوه بر امکانات ذکر شده برنامه نویسی ، تجزیه و تحلیل و پیش بینی پیشرفته را فراهم می کند و این دلیل محکمی است که RapidMiner با تکیه بر توانایی هدوپ در پردازش موازی داده های کلان به عنوان محبوب ترین ابزار داده کاوی یکپارچه شناخته شود و کم کم کاربران زیادی را به سمت خود سوق دهد.
Radoop محیطی گرافیکی و بسیار راحت برای تحلیل داده های کلان بر روی هدوپ فراهم می کند و همه اینها به این بستگی دارد که ما پیکربندی دقیق و بدون نقصی را برای نصب این افزونه تحلیل داده های کلان انجام دهیم. Radoop از ترکیب RapidMiner و هدوپ بوجود آمده البته وجود Hive در این افزونه به نظر الزامیست نه به این معنی که بدون Hive کار کردن غیر ممکن است بلکه به دلیل که Hive قدرتمند، انعطاف پذیر و آسان برای کار کردن است.
Apache Ambari پروژه ای است برای ساده تر کردن مدیریت هدوپ ، با مانیتورینگ فعالیتهای کلاسترها و پیکربندی سرویسها. آپاچی امباری(Apache Ambari) با فراهم آوردن محیطی بصری مدیریت هدوپ را بسیار آسان می کند.
قابلیت هایی که آپاچی امباری برای مدیریت هدوپ فراهم می آورد عیارتست از :
در این مقاله ما قصد داریم علل سوئیچ شرکتهای بزرگ مانند Google ، yahoo ، Facebook به سمت Hadoop Distributed File System و MapReduce را بیان کنیم.
بهتر است قبل از هرچیز نگاهی اجمالی به قبل از مدل MR و HDFS بیندازیم ، این به ما کمک می کند که نگاهی دقیقتر نسبت به این موضوع داشته باشیم که چرا ما نیازمندیم به سوی چیزی بهتر از قبل حرکت کنیم.
از اولین مدلهای کامپیوتری که شروع به استفاده از مدلهای توزیع شده کردند سوپر کامپیوترها بودند .در مدل سوپر کامپیوترها که قبلا و همکنون در مسائل خاص مورد استفاده قرار می گرفتند از مجموعه ای از کامپیوترها استفاده می شد که مدل طراحی آن را کلاسترینگ مدل می نامیدیم، البته نوع و مدل سخت افزاری ، طراحی و تجهیزات شبکه آن با تصورات ما نسبت به کامپیوتر بسیار متفاوت است.
MPI(Message Passing Interface) یک فریم ورک توزیع شده است که قبلا بسیار مورد استفاده بود. اما MPI چگونه کار می کند؟ MPI به زبان ساده از 2 عملکرد تقسیم می شود:
1
2
3
|
MPI_SEND MPI_RECIVE |
برای مثال ماشینM اطلاعاتی را به ماشین K می فرستد و ماشین K پیام دریافت اطلاعات را به ماشین M می فرستد، تکرار این عملیات در مقیاس بسیار وسیع باعث ایجاد Deadlock یا بن بست می شود.
اجازه دهید با یک مثال مسئله را شفافتر کنیم :
پردازشگر 2 اطلاعات A را به پردازشگر 1 ارسال می کند زمانی که پردازشگر 1 تمام اطلاعات را دریافت کرد، پردازشگر 1 شروع به ارسال اطلاعات B به پردازشگر 2 می کند و بسیار آسان همین عملیات ممکن است به بن بست ختم شود، زمانیکه پردازشگر 1 منتظر اطلاعات B است که در اختیار پردازشگر 2 می باشد و در همین حین پردازشگر 2 نیز منتظر اطلاعات Aاست که در اختیار پردازشگر 1 است . به زبان ساده تر پردازشگرها منتظر منابعی هستند که در اختیار پردازشگر دیگر می باشند و این باعث بن بست می شود.
راه حلهای متفاوتی برای حل این مسئله وجود دارد مانند MPI_SendRec ولی در کل این وظیفه برنامه نویسان است که راهی برای آزاد کردن منابع درخواستی ارائه دهند زیرا در محیط واقعی هزاران ماشین هستند که در هر دقیقه به دهها بن بست بر می خورند و مدیریت اینچنین سیستمی بسیار وقتگیر و طاقت فرسا می باشد.
این موضوع به حدی همه گیر شده بود که ما تصمیم گرفتیم یک بار برای همیشه به این موضوع به عنوان یک مقاله نگاه کنیم و تحقیقات خود را شروع کردیم. پس از بررسی ویدئو های مختلف و چک کردن سایت های مربوطه به این نتیجه رسیدیم که واژه "هدوپ" بهترین ترجمه پارسی برای این کلمه می باشد.
هدوپ با صدای google translate
در این نوشته ما قصد داریم عملکرد MapReduce را با استفاده از مثال Word Count به زبان بسیار ساده بیان کنیم .در ابتدا فرض کنید ما 5 میلیون صفحه تایپ شده داریم که نیاز است هیستوگرام تعداد کلمات آن را محاسبه کنیم. در شکل زیر به نمونه ای از عملیات اشاره شده است :
در شکل زیر مراحل شمارش 5 میلیون کلمه نمایش داده شده است
تا این مرحله ما عملا تعداد کلمات را شمارش کردیم که اصطلاحا آن را Map کردن می نامیم.
بعد از انجام این مراحل تعداد کلمات بصورت جداگانه محاسبه شده اند و هیستوگرام جداگانه این فایلها کمکی به حل مسئله نکرده است. پس ما باید به دنبال روشی باشیم که کلمات یکسان را در کامپیوترهای مختلف جمع آوری کرده و آنها را به عنوان یک هیستوگرام واحد نمایش دهد. در شکل زیر روش حل این مسئله که با نام Reduce کردن معروف است نمایش داده شده است.
سیستم عامل: گنو/لینوکس
نوع نصب: Multi Node Cluster
در این آموزش به نصب هدوپ به صورت چند گره یا Multi Node پرداخته می شود. اگرچه که نمی توانیم کلاستر را به صورت کامل در این آموزش پیاده سازی کنیم ولی به صورت شبیه سازی شده ، محیط چند گره ای هدوپ را پیکربندی و نصب میکنیم که همین مراحل برای محیط واقعی هم صدق می کند.
همانطور که در شکل بالا مشاهده می کنید بر خلاف محیط تک گره ای یا Single Node که همه گره ها نقش مدیر یا Master را بازی می کنند در کلاستر چند گره ای می بایست یکی از گره ها نقش مدیر را بازی کند و بقیه گره ها نقش فرعی یا Slave را می کنند.
برای شروع ما می خواهیم هدوپ را با سه گره در کلاستر راه اندازی کنیم. در ابتدا می بایست دو سیستم عامل مجازی سازی شده در هر کدام از نرم افزار های مجازی سازی مثل VMware و Cisco را ایجاد کنیم.(آموزش راه اندازی سیستم عامل مجازی خارج از موضوع این مقاله می باشد.). پس از ایجاد یک سیستم عامل در نرم افزار مجازی سازی می توان این سیستم عامل را با استفاده از ابزار Clone نمونه سازی کرد تا از نصب دوباره و طی مراحل نصب سیستم عامل جلوگیری شود.
آدرس ها و اسامی این سه گره به شرح زیر است:
Hadoop Master: 192.168.1.15 (hadoop-master(
Hadoop Slave: 192.168.1.16 (hadoop-slave-1(
Hadoop Slave: 192.168.1.17 (hadoop-slave-2(
سیستم مدیر یا Master سیستم فیزیکی حاضر شما می باشد و دو گره فرعی یا Slave مجازی سازی می شود.
مراحل نصب:
ابتدا مطمئن شوید که بسته JDK بر روی سیستم شما نصب می باشد. زیرا که هدوپ برای کارکردن نیاز به جاوا دارد. می توانید با دستور "java –version" در خط فرمان از نصب آن اطمینان حاصل کنید. پس از نصب جاوا می بایست مطمئن شوید که فایل های جاوا از طریق متغیر JAVA_HOME در خط فرمان قابل دسترس است. در غیر اینصورت هدوپ پیغام خطای عدم وجود جاوا را صادر می کند.
برای افزودن مسیر جاوا به متغیر JAVA_HOME ، از طریق خط فرمان فایل .bashrc را که در مسیر ~/.bashrc قرار دارد را با یکی از ویرایشگرهای متنی باز کنید و دو خط زیر را به آن اضافه کنید:
1
2
|
export JAVA_HOME= /usr/local/jdk1 .7.0_71 export PATH=PATH:$JAVA_HOME /bin |
*/usr/local/jdk1.7.0_71 مسیر نصب جاوا است
پس از آن می بایست یک حساب کاربری سیستمی بسازید. با دو دستور زیر در خط فرمان حسابی با نام hadoop و کلمه عبورhadoop می سازیم:
1
2
|
useradd hadoop passwd hadoop |
در مرحله بعدی می بایست فایل مربوط به میزبان های شبکه ای را بر روی تمامی گره ها به صورت زیر ویرایش و آدرس های زیر را به آن اضافه کنید(این فایل در مسیر /etc/hosts قرار دارد):
1
2
3
4
|
# vi /etc/hosts 192.168.1.109 hadoop-master 192.168.1.145 hadoop-slave-1 192.168.56.1 hadoop-slave-2
|
نوع نصب: Single Node Cluster (نصب به صورت Multi-Node)
برای نصب هدوپ راه های گوناگونی وجود دارد. با توجه به سطح آشنایی شما با فریم ورک هدوپ می تواند این فرآیند آسان و یا سخت باشد ولی نگران نباشید ما تمامی مراحل را شرح می دهیم.
بسته عمومی هدوپ یا Hadoop Common
بسته عمومی هدوپ که از سایت رسمی به صورت بسته رسمی هدوپ قابل دریافت است و همینطور در صفحه اصلی این سایت به صورت مستقیم قرار گرفته است شامل پروژه ها و سرویس های HDFS یا سیستم فایل توزیع شده هدوپ،YARN یا زمان بند وظایف و مدیر کلاستر،MapReduce یا سیستم پردازش موازی داده های عظیم و همچنین فایل اجرایی hadoop می باشد که برای پیکربندی کلی هدوپ می باشد. به دلیل اینکه هدوپ به زبان جاوا نوشته شده است نسخه های مختلف برای سیستم عامل های مختلف وجود ندارد و یک بسته می تواند با استفاده از JRE بر روی تمامی سیستم عامل ها اجرا شود.
مراحل نصب عادی بسته عمومی
قبل از هر چیز مطمئن شوید که JRE یا Java Runtime Environment را بر روی سیستم خود نصب کرده اید. می توانید با اجرای دستور java –version در محیط خط فرمان از نصب بودن این برنامه مطمئن شوید.
بسته عمومی هدوپ را از سایت رسمی یا از طریق همین وب سایت دانلود و فایل ها را استخراج نمایید. (توجه: اگر در سیستم عامل لینوکس هستید مطمئن شوید فایل ها را در مکانی استخراج کرده اید که دسترسی مدیر را دارا می باشد و همینطور قابلیت اجرا را به فایل هاعمال کرده اید. به همین جهت پیشنهاد می شود بسته را در پوشه Home خود استخراج کنید.)
پس از استخراج به پوشه موردنظر رفته و وارد پوشه bin شوید. در اینجا فایل ها و پروژه هایی که در بالا توضیح داده شد را مشاهده می کنید.
در اینجا با مراجعه به خط فرمان سیستم عامل خود و تغییر پوشه جاری به پوشه ای که استخراج کردید و همینطور پوشه bin ، می تواند با اجرای هر دستور مثل hadoop ، hadoop fs شروع به کار با هدوپ کنید.
نصب آسان
برای نصب آسان هدوپ نیاز به دانلود بسته عمومی و دارا بودن JRE ندارید ولی پیش نیازهای زیر را می بایست دارا باشید:
در ابتدا بهتر است که بدانیم هدوپ چه چیزی نیست:
هدوپ توسط Doug Cutting سازنده Apache Lucene که بصورت گسترده برای عمیات جستجوی متن ها استفاده می شود ، تولید شد. در حقیقت به وجود آمدن هدوپ از کار بر روی Nutch شروع شد. Apache Nutch یک فریم ورک متن باز برای ایجاد موتور جستجو است که بصورت گسترده ، عملیات جستجوی متن ها را به روشی که خزیدن یا Crawling نام گرفت انجام می دهد.
در خصوص نامگذاری نام هدوپ(HADOOP) باید گفت که مخفف عبارت خاصی نیست، این نامی است که پسر Doug برروی عروسک فیل خود که زرد رنگ بود گذاشته بود.
برای شروع ، Doug و همکارش Mike ایده ساختن یک موتور جستجوگر وب را در سر داشتند اما این تنها چالش آنها نبود ، قیمت سخت افزار یک موتور جستجوگر که 1 میلیون صفحه وب را جستجو و ایندکس می کند در حدود 500000 دلار بود با این وجود آنها باور داشتند که این پروژه یک هدف ارزشمند است.
Nutch در سال 2002 شروع به کار کرد و در همان زمان عملیات و روشهای جستجوی صفحات وب به سرعت رشد کرد. طی زمانی معماران پروژه دریافتند که این پروژه قابلیت و توانایی کار کردن با میلیونها صفحه وب را ندارد ، در همان برهه در سال 2003 مقاله ای از شرکت گوگل منتشر شد که توانست راهگشای مشکل آنها باشد و معماری(Google File system) GFS را توصیف می کرد.
GFS توانست مشکل ذخیره سازی داده های عظیم را حل کند علاوه بر آن مدیریت ذخیره سازی نودها دیگر چالشی بود که در معماریهای قبلی بود و با استفاده از این روش آن مشکل نیز برطرف شد. در سال 2004 تیم Nutch توانست نسخه متن باز خود را با نام Nutch Distributed filesystem(NDFS) منتشر کنند. در سال 2004 گوگل با مقاله ای MapReduce را به جهان معرفی کرد، خیلی زود در سال 2005 برنامه نویسان Nutch شروع به کار با (MR)MapReduce کردند و تا اواسط همان سال Nutch نسخه جدید خود را که با NDFS و MR کار می کرد به جهان معرفی کرد. بعد از چندی معماران Nutch دریافتند که عملکرد آن فراتر از فقط یک موتور جستجوگر است و در فوریه 2006 آنها از پروژه Nutch که خود زیر پروژه Lucine به حساب می آمد به سمت پروژه ای آمدند که آن را Hadoop (هدوپ) نامیدند. در تقریبا همان سال Doug به Yahoo پیوست تا با استفاده از یک تیم مستقل هدوپ را آزمایش و پیاده سازی کند.
در سال 2008 شرکت یاهو ، موتور جستجویی را معرفی کرد که توسط 10000 کلاستر هدوپ عملیات جستجو را انجام می داد. در همان سال و در ماه ژانویه هدوپ در بالاترین سطح پروژه های Apache قرار گرفت در آن زمان دیگر تنها Yahoo تنها استفاده کننده این محصول نبود، شرکتهایی نظیر Last.fm ، Facebook و نیویورک تایمز نیز شروع به فعالیت در این حوزه کرده بودند.