معرفی Apache Ambari

Apache Ambari پروژه ای است برای ساده تر کردن مدیریت هدوپ ، با مانیتورینگ فعالیتهای کلاسترها و پیکربندی سرویسها. آپاچی امباری(Apache Ambari) با فراهم آوردن محیطی بصری مدیریت هدوپ را بسیار آسان می کند.

قابلیت هایی که آپاچی امباری برای مدیریت هدوپ فراهم می آورد عیارتست از :

ادامه مطالب

Data Node , Name Node , Job Tracker , Task Tracker

NAME NODE مقادیر متادیتا (تعداد بلاکها ، برروی کدام Rack و بروی کدام DATA NODE داده ها ذخیره می شوند ، ساختار پوشه ها و فایلها در HDFS و همچنین شامل خصوصیات آنها از قبیل مالکیتها ، مجوزها، محدودیتها می باشد) را ذخیره می کنند در صورتی که فقط داده ها روی DATA NODE ذخیره می شوند.

در یک هدوپ چند کلاستره (Multinode clusterNAME NODE و DATA NODEها بر روی ماشینهای متفاوت فعالیت می کنند. در یک کلاستر، یک NAME NODE و تعداد زیادی DATA NODE وجود دارد به همین دلیل ما NAME NODE را تنها نودی می نامیم که سیستم را Fail می کند. اگرچه SECONDRY NAME NODE(SNN) وجود دارد که بروی ماشین جداگانه ای کار می کند و از Fail شدن سیستم جلوگیری می کند اما مشکل اینجاست که SNN در حقیقت دقیقا کار NAME NODE اصلی را انجام نمی دهد. در واقع SNN ، نسخه پشتیبان NAME NODE است و کار Image کردن و بازیابی اطلاعاتNAME NODE را بر عهده دارد.

در یک Single node cluster ، NAME NODE و DATA NODE قادرند بطور همزمان برروی یک ماشین کار می کنند.

Job Tracker یک Master است که Jobها را تولید و اجرا می کند. JOB TRACKER در NAME NODE اجرا می شود و اجازه می دهد که TASK TRACKER داخل DATA NODE اجرا شود. TASK TRACKER وظایف را اجرا می کند و وضعیت وظایف را به JOB TRACKER گزارش می دهد.

TASK TRACKER یک نود در کلاستر است که وظایفی از قبیل Map-Reduce و عملیات Shufle را از Job Tracker قبول می کند. هر TASK TRACKER با مجموعه ای از Slotها پیکربندی می شود. وقتی که JOB TRACKER سعی دارد که یک جا برای یک پردازش پیدا کند ابتدا در همان سرور که داده ها ذخیره شده اند جستجو می کند اگر چنین Slot وجود نداشت درSlot  دیگر در همان Rack پردازش را ذخیره می کند.

TASK TRACKER وظایف را به صورت جداگانه بروی

ادامه مطالب

قبل از پیدایش HDFS و MapReduce

در این مقاله ما قصد داریم علل سوئیچ شرکتهای بزرگ مانند 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 به زبان ساده – بخش اول :

در این نوشته ما قصد داریم عملکرد MapReduce  را با استفاده از مثال Word Count به زبان بسیار ساده بیان کنیم .در ابتدا فرض کنید ما 5 میلیون صفحه تایپ شده داریم که نیاز است هیستوگرام تعداد کلمات آن را محاسبه کنیم. در شکل زیر به نمونه ای از عملیات اشاره شده است :

1

در شکل زیر مراحل شمارش 5 میلیون کلمه نمایش داده شده است

2

 

تا این مرحله ما عملا تعداد کلمات را شمارش کردیم که اصطلاحا آن را Map کردن می نامیم. 

بعد از انجام این مراحل تعداد کلمات بصورت جداگانه محاسبه شده اند و هیستوگرام جداگانه این فایلها کمکی به حل مسئله نکرده است. پس ما باید به دنبال روشی باشیم که کلمات یکسان را در کامپیوترهای مختلف جمع آوری کرده و آنها را به عنوان یک هیستوگرام واحد نمایش دهد. در شکل زیر روش حل این مسئله که با نام Reduce کردن معروف است نمایش داده شده است.

ادامه مطالب

نحوه نصب هدوپ به صورت Multi-Node

سیستم عامل: گنو/لینوکس

نوع نصب: Multi Node Cluster

در این آموزش به نصب هدوپ به صورت چند گره یا Multi Node پرداخته می شود. اگرچه که نمی توانیم کلاستر را به صورت کامل در این آموزش پیاده سازی کنیم ولی به صورت شبیه سازی شده ، محیط چند گره ای هدوپ را پیکربندی و نصب میکنیم که همین مراحل برای محیط واقعی هم صدق می کند.

m1

همانطور که در شکل بالا مشاهده می کنید بر خلاف محیط تک گره ای یا 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 و نیویورک تایمز نیز شروع به فعالیت در این حوزه کرده بودند.

ادامه مطالب