24
مدلMapReduce ی رضای ناصر[email protected]

مدل MapReduce

Embed Size (px)

Citation preview

MapReduceمدل ناصر رضایی

[email protected]

مقدمه

•MapReduceمدل برنامه نویسی برای پردازش داده ها است.

•Hadoop می تواند برنامه هایMapReduceنوشته شده در زبان های مختلف را اجرا کند.

.به صورت موازی اجرا می شوندMapReduceبرنامه های •

Map وReduce

•MapReduceبه دو قسمت تقسیم می شود .Map وReduce.

.مقدار برای ورودی و جفِت کلید مقدار برای خروجی است-هر فاز دارای جفِت کلید•

.ارسال می شودReduceگرفته می شود و خروجی آن به HDFSاز Mapورودی •

و تابعی برای Reduceو Mapتابع 2باید حداقل MapReduceبرنامه نویس برای پیاده سازی •.فراخوانی این دو را پیاده سازی کند

MapReduceپیاده سازی

•MapReduceدر قالب یک مساله:.میخواهیم بیش ترین دمای ثبت شده توسط ایستگاه های هواشناسی در هر سال را بدست آوریم•

.برای افزایش سرعت می توان پردازش ها را به صورت موازی انجام داد•.ساده ترین پیاده سازی موازی، بدست آوردن بیشترین دمای هر سال توسط یک پردازش است

افه شده بعضی از ایستگاه ها اخیرا اض)از آنجایی که میزان داده ثبت شده در هر سال متفاوت است : اوالاز رکورد های % 30مثال فرض کنید . پردازش ها خاتمه می یابندبعضی پردازش ها خیلی زودتر از سایر ( اند

.ثبت شده مربوط به یک سال باشند

.ترکیب جواب های هر سال و مرتب سازی آن ها به پردازش دیگری احتیاج دارد: ثانیا

ت شده در آن هر دسته حداکثر دمای ثب. بهتر است مساله را به دسته های مختلفی برای هر سال تقسیم کنیم.مدسته را برمی گرداند، و با پیدا کردن بزرگ ترین مقدار دسته های هر سال به جواب نهایی می رسی

MapReduceپیاده سازی

دیتاست آزمایشی•NCDCبرای پیاده سازی از داده های دیتاست •

1که گزارش وضعیت آب و هوا از ایستگاه های هواشناسی

.آمریکا را نگه داری می کند استفاده کرده ایم

.ASCIIفرمت ذخیره سازی •

.هر گزارش در یک خط•

رتفاع، بعضی از فیلد های نمونه شامل تاریخ مشاهده، زمان مشاهده، طول جغرافیایی، عرض جغرافیایی، ا•...درجه هوا، کد کیفیت نمونه، فشار هوا و

رای یک با فایل های بزرگ بهتر کار می کند تمام رکوردهای ثبت شده بHadoopاز آن جایی که •.سال را در یک فایل ذخیره کرده ایم

1National Climatic Data Center

MapReduceپیاده سازی

:رکورد ذخیره شده در دیتاست مانند زیر باشد5فرض کنید •• 0067011990999991950051507004...9999999N9+00001+99999999999...

• 0043011990999991950051512004...9999999N9+00221+99999999999...

• 0043011990999991950051518004...9999999N9-00111+99999999999...

• 0043012650999991949032412004...0500001N9+01111+99999999999...

• 0043012650999991949032418004...0500001N9+00781+99999999999...

می از آنجایی که فقط اطالعات درجه هوا و سال برای ما اهمیت دارد، اطالعات زیر از رکورد های باال استخراج•(:Mapدر تابع )شود

• (1950, 0)

• (1950, 22)

• (1950, −11)

• (1949, 111)

• (1949, 78)

Reduceو Mapورودی و خروجی

.مقدار است-به صورت کلیدReduceو Mapهمان طور که قبال گفتیم ورودی و خروجی توابع •

ال و آفست شروع هر رکورد از ابتدای فایل و رکورد ذخیره شده را به عنوان ورودی می گیرد و سmapتابع •.دمای ثبت شده را به عنوان خروجی برمی گرداند

.را بر مبنای سال دسته بندی می کنداطالعات Shuffleتوسط mapخروجی تابع •

.اندرا گرفته و حداکثر آن را به ازای هر سال را برمی گرددماهای ثبت شده به عنوان ورودی reduceتابع •

کالس 1Mapper

1Sources at: https://github.com/tomwhite/hadoop-book

Mapperکالس

.مشخص می شودMapperبا کالس Mapتابع •

•Hadoopاز انواع داده ای خود به جای انواع داده ای جاوا استفاده می کند .LongWritableدر این مثال استفاده شده Integerبه جای IntWritableو Stringبه جای Long ،Textشبیه

.قرار دارند org.apache.hadoop.ioاند که در پکیج

( substring(92,93))ثبت شده Qualityدمای اندازه گیری شده در صورتی ثبت می شود که •.نباشد( 9999)باشد و میزان ثبت شده خطا [01459]یکی از اعداد

فرستاده Reducerبرای نوشتن نتایج در خروجی استفاده می شود که به ورودی Contextاز •.می شود

Reducerکالس

Reducerکالس

.باشدMapperبایستی مطابق با انواع داده ای خروجی Reducerانواع داده ای ورودی •

ت می مقدار خروجی با پیمایش دماهای ثبت شده برای هر سال و انتخاب ماکزیمم آن ها بدس•.آید

کالس اصلی

کالس اصلی

.قرار می دهد تا در کالستر توزیع کندJarرا در قالب فایل Jobاین کالس یک •کالس addInputPath)(از تابع HDFSبرای تعیین کردن مسیر ورودی و خروجی روی •

FileInputFormatاستفاده کرده ایم.را تعریف کرده Reducerو Mapperکالس های ()setReducerClassو ()setMapperClassبا توابع •

.ایممقدار خروجی را مشخص کرده -کلید()setOutputValueClassو ()setOutputKeyClassبا توابع •

.ایم.را ثبت می کند و تا زمان پایان آن صبر می کندwaitForCompletion() ،Jobمتد •برای اجرای برنامه بایستی دستور های زیر را در ترمینال وارد کرد•

1.

• export HADOOP_CLASSPATH=hadoop-examples.jarhadoop MaxTemperature input/ncdc/sample.txt output

1Full Instruction at: https://github.com/tomwhite/hadoop-book

جریان داده ای

•MapReduce یک واحد از کاری است کهclient داده های ورودیمیخواهد انجام دهد که شامل ،.استاطالعات پیکربندی و MapReduceبرنامه

.Reduceو Map: شکسته می شود( Task)به دو وظیفه( Job)هر کار•

اجرا می ( کامپیوتر های مستقل کالستر)ها nodeزمانبندی می شوند و روی YARNوظیفه ها توسط •.شوند

.از داده های ورودی را پردازش می کند( split)تکه ای Mapهر وظیفه •همروند همان اگر تعداد زیادی تکه ورودی داشته باشیم به دلیل همزمانی مدت زمان پردازش نسبت به پردازش غیر •

های سریع تر تکه های nodeبهتر اتفاق می افتد و Load Balancingداده ها کاهش چشم گیری پیدا می کند و .بیشتری را پردازش می کنند

ان کلی اگر تکه های ورودی خیلی کوچک باشد بار اضافی ناشی از مدیریت تکه های ورودی باعث افزوده شدن زم•.پردازش می شود

•HDFS مگابایتی استفاده می کند که برای اغلب کاربرد ها مناسب است128از اندازه بلوک یا تکه های.

جریان داده ای

•Hadoop در بهترین حالت وظیفه هایMap ها را رویnode هایی که داده های ورودی روی آن قرار گرفته اند.پردازش می کند

Mapداده ها افزایش پیدا می کند و پهنای باند ارزشمند کالستر صرف انتقال ورودیLocalityدر این حالت •.نمی شود

(شکل صفحه بعد. )دیگری خوانده شوندRackدیگر و یا حتی از nodeدر مواقعی ممکن است داده ها از •

جریان داده ای

Reduceنوشته می شود چون نتایج اش تنها باید توسط nodeروی دیسک همان Mapخروجی •.پردازش شود و پس از آن حذف می شود

nodeبه صورت اتوماتیک Hadoopرا انجام می دهد از کار بیفتد Mapی که nodeاگر •.دیگری را جایگزین می کند

به صورت جداگانه nodeکه برای هر تکه داده ای به وجود می آمد و در هر Mapبر خالف •.فرستاده می شودReduceها به یک وظیفه Mapپردازش می شد، خروجی تمام

را اجرا می کند ادغام می شود و سپس به تابع Reduceی که nodeها داخل Mapخروجی مرتب شده •Reduceتعریف شده توسط کاربر ارسال می شود.

جریان داده ای

می کنند و هر بخش را به بخش بندیخروجی شان را Mapداریم، وظیفه های Reducerوقتی که چند •.می فرستندReducerیک

. ها جواب نهایی را می دهدMapدر این حالت خروجی . ی نداشتReduceمی توان هیچ وظیفه •

Combinerتوابع

.باعث می شود که پهنای باند روی کالستر ها با محدودیت مواجه شودMapوجود تعداد زیادی کار •

•Hadoop به کاربر این امکان را می دهد که تابعCombiner برای گرفتن چند خروجی و ترکیب آن ها تعریف. فرستاده می شودReduceبه Combinerخروجی .کند

خروجی تاثیری روی( صفر یا بیشتر)یک تابع بهینه سازی است فراخوانی آن به هر تعداد Combinerچون •Reduceندارد.

.ها رد و بدل می شود را کاهش دهدReducerو Mapperمی تواند میزان داده ای که بین Combinerتابع •

Combinerتعریف تابع

آورده شده Combinerدر مثال اسالید بعدی نمونه بازنویسی شده کالس اصلی پیدا کردن باالترین درجه با •.است

بدست آوردن ماکزیمم )عمل می کند Reducerدر این مثال شبیه به Combinerدقت کنید از آن جایی که •.معرفی کرده ایمCombinerرا به عنوان Reducerیک نمونه از ( چند مقدار

Combinerتعریف تابع

Streaming درHadoop

•Hadoop یکAPI برایMapReduce فراهم کرده است که به شما این اجازه را می دهد که توابعMap وReduceرا در زبان های غیر از جاوا بنویسید.

•Hadoop Streaming از استریم استانداردUNIX برای ارتباط بینHadoopو برنامه شما استفاده می کند ..استفاده کردMapReduceبنابراین از هر زبانی که این استریم را پشتیبانی کند می توان برای نوشتن کدهای

•Streamingبرای کاربرد های پردازش متن مناسب است.

منابع

• White, Tom. Hadoop: The definitive guide, 4th edition. " O'Reilly Media, Inc.", 2015.