# پایگاه‌های داده > NoSQL >  فرق هدوپ با map-reduce

## amirreyhaneh

با سلام واحترام
نمی دونم این سوالم درسته یا نه؟
میخوام بدونم فرق هدوپ با map-reduce چیست؟
ممنون

----------


## مبین رنجبر

> با سلام واحترام
> نمی دونم این سوالم درسته یا نه؟
> میخوام بدونم فرق هدوپ با map-reduce چیست؟
> ممنون


سوال درستی نیست چون از نظر ماهیت با هم متفاوت هستند و نمیشه با هم مقایسه شون کرد. هدوپ در واقع یک فریم ورکی از ابزارها است که می توان از آنها برای پردازش و ذخیره سازی داده های کلان به صورت توزیع شده استفاده کرد. هدوپ به خودی خود نه نرم افزار است و نه پایگاه داده. اما MapReduce یک مدل برنامه نویسی است که می توان از آن برای پردازش داده های کلان استفاده کرد. MapReduce را می توان در تمامی زبان های برنامه نویسی و جدای از هدوپ نوشت و اجرا کرد ولی MapReduce ای که در پروژه هدوپ قرار گرفته تحت این فریم ورک به صورت توزیع شده و هماهنگ با دیگر ابزار ها کار میکند. در نسخه های اولیه هدوپ ، MapReduce نسخه ۱ موجود بود که به همین نام شناخته می شد ولی در نسخه های اخیر هدوپ این مدل تحت نام YARN یا Yet Another Resource Negotiators شناخته می شود که نسخه جدیدی از MapReduce می باشد.

----------


## -سیّد-

ضمن تشکر از توضیح دوستمون، این رو هم اضافه کنم:
پروژه‌ی hadoop شامل ۴ بخش هست:
*hdfs*: فایل‌سیستم توزیع‌شده‌ی هدوپ هست که از روی GFS گوگل مهندسی معکوس شده: http://research.google.com/archive/gfs.html*mapreduce*: مدل برنامه‌نویسی و پردازش داده‌ی بزرگ به صورت توزیع‌شده که از روی MapReduce گوگل مهندسی معکوس شده: http://research.google.com/archive/mapreduce.html
توجه کنید که File System مورد استفاده‌ی MapReduce هدوپ، HDFS هست (یعنی ورودی رو از HDFS می‌گیره و خروجی نهایی رو در HDFS می‌نویسه). بنابراین می‌شه گفت MapReduce هدوپ به HDFS وابسته هست. البته می‌تونید از ورودی و خروجی‌های دیگه هم استفاده کنید و الزامی به استفاده از HDFS نیست، ولی پیش‌فرض HDFS هست و معمولاً از همون استفاده می‌شه. مثلاً ممکنه بخواین داده رو از یه جای دیگه بخونید (مثلاً Cassandra یا HBase یا Data Source دیگه‌ای)، ولی باز هم معمولاً خروجی رو روی HDFS می‌نویسن.*commons*: کتابخانه‌های کلی مشترک مورد استفاده در بخش‌های مختلف hadoop (که البته بعضی‌هاش در جاهای دیگه هم کاربرد دارن، مثلاً کلاس StringUtils که ارتباط مستقیم با hadoop نداره ولی در این کتابخونه هست).*YARN*: که همونطور که گفتن نسبتاً جدید هست، مدل جدید انجام کار توزیع‌شده هست که در واقع نسخه‌ی جدید MapReduce هدوپ، بر مبنای YARN کار می‌کنه.
توضیحات بیشتر در سایت خود هدوپ: http://hadoop.apache.org

بنابراین شما مستقیماً با هدوپ کاری ندارید. اگه می‌خواین داده‌ی بزرگتون رو به صورت توزیع‌شده و batch تحلیل کنید، می‌تونید داده‌تون رو روی HDFS بریزید و از MapReduce هدوپ استفاده کنید. البته پیاده‌سازی‌های دیگه‌ای هم از MapReduce وجود داره، که اوریجینالش مال گوگل هست! ولی معمولاً وقتی می‌گن MapReduce، منظورشون MapReduce هدوپ هست. و بالعکس: معمولاً وقتی می‌گن هدوپ، منظورشون MapReduce هدوپ هست. دلیلش اینه: شما فرض کن چند صد ترابایت داده رو ریختی روی HDFS، چه استفاده‌ای ازش می‌خوای بکنی؟ احتمالاً بعدش می‌خوای تحلیلش کنی. پس احتمالاً از MapReduce استفاده می‌کنی. برای همین معمولاً HDFS فقط یه بستر برای استفاده از MapReduce هست و به تنهایی کمتر مورد استفاده قرار می‌گیره.

صفحه‌ی ویکیپدیای MapReduce خوب توضیح داده:
https://en.wikipedia.org/wiki/MapReduce




> MapReduce libraries have been written in many programming languages, with different levels of optimization. A popular open-source implementation that has support for distributed shuffles is part of Apache Hadoop. The name MapReduce originally referred to the proprietary Google technology, but has since been genericized.  MapReduce as a big data processing model is considered dead by many  domain experts, as development has moved on to more capable and less  disk-oriented mechanisms that incorporate full map and reduce  capabilities.[10]




این بخشش چند تا از پیاده‌سازی‌هاش رو نوشته:
https://en.wikipedia.org/wiki/MapRed...s_of_MapReduce

----------


## suraty

*سلام،

برای مشاهده آموزش

**نصب Hadoop و اجرای روش MapReduce (تک نود Single Node)*

*میتوانید به آدرس زیر مراجعه بفرمایید.

*http://narmafzaria.blogfa.com/post/10

----------

