<

عصر هدوپ

آشنایی با Big Data و کار با Hadoop

عصر هدوپ

آشنایی با Big Data و کار با Hadoop

عصر هدوپ
بایگانی

۵ مطلب در آذر ۱۳۹۳ ثبت شده است

در مطالب قبلی چگونگی کار MapReduce با ورودی کم را مشاهده کردید. حالا نوبت آن است که با نگاهی از بالا به پایین سیستم را مورد ارزیابی قرار داده و جریان داده موجود در MapReduce را با ورودی زیاد مورد بررسی قرار دهیم. برای سادگی کار، در مثال قبلی فایل ورودی (Sample.txt) بروی فایل سیستم محلی نگهداری می شد. به منظور گسترش کار، ابتدا می بایست داده ورودی روی یک فایل سیستم توزیع شده که نوعا HDFS (درمطالب بعدی از آن صحبت خواهیم کرد) است، قرار گیرد، تا هدوپ بتواند محاسبات تعریف شده در قالب MapReduce را در سطح کلاستر که در آن هر بخش از داده بروی یک ماشین قرار دارد، به منظور اجرا منتشر نماید.

جریان داده

در آغاز، چند واژه جدید. یک Job  در MapRedcue به یک واحد کاری گفته می شود که به دستور client صورت می گیرد که متشکل است از داده ورودی، برنامه MapReduce، تنظیمات اولیه. هدوپ یک Job را به منظور اجرا به تعدادی Task تقسیم می نماید که خود دارای دو نوع است : Map Task , Reduce Task.

۰ نظر موافقین ۰ مخالفین ۰ ۲۷ آذر ۹۳ ، ۲۱:۳۰
مهدی شهیدی صادقی

نصب و اجرای هدوپ بروی یک ماشین به منظور تست و بررسی اولیه، کار بسیار ساده ای می باشد.

هدوپ به سه حالت نصب می شود:

•  Standalone

در این حالت هیچ یک از Server Role ها (Daemons) نصب نمی شوند (در قسمت های بعدی به آنها خواهیم پرداخت) و تنها یک JVM وظیفه اجرا را به عهده می گیرد. این حالت برای تست و بررسی اولیه برنامه های نوشته شده در MapReduce کاربرد دارد.

•  Pseudo-distributed

در این حالت تمامی Server Role ها (Daemons) بروی یک ماشین نصب می شوند، بنابراین امکان ایجاد یک کلاستر شبیه سازی شده در ابعاد کوچکتر را فراهم می سازد.

•  Fully distributed

در این حالت تمامی Server Role ها (Daemons)  بروی کلاستری از ماشین ها نصب می شوند. این حالت در محیط های عملیاتی مورد استفاده قرار می گیرد.

برای اجرای هدوپ در یکی از سه حالت ذکر شده می بایست به دو نکته دقت شود: Property های مورد نیاز هر حالت مقداردهی شوند، Server Role های (Daemons) هدوپ Start شوند. در حالت Standalone یا Local، فایل سیستم محلی و MapReduce محلی مورد استفاده قرار می گیرد، درمقابل برای دیگر حالت ها HDFS و Server Role های (Daemons) مربوط به MapReduce شروع به کار می کنند.

۸ نظر موافقین ۰ مخالفین ۰ ۱۹ آذر ۹۳ ، ۱۰:۲۱
مهدی شهیدی صادقی

Java MapReduce

 بعد از آشنایی با چگونگی عملکرد MapReduce، نوبت به پیاده سازی مثال قسمت قبل (یافتن بیشترین درجه آب و هوا به ازای هر سال) در زبان برنامه نویسی Java رسیده است. ما به سه چیز نیاز داریم: تابع map، تابع reduce، تابع main. 


تابع map:


۰ نظر موافقین ۰ مخالفین ۰ ۱۰ آذر ۹۳ ، ۱۰:۵۰
مهدی شهیدی صادقی

تحلیل داده توسط هدوپ

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


Map and Reduce

در MapReduce پردازش به دو فاز تقسیم می شود: فاز map و فاز reduce. هر فاز به عنوان ورودی و خروجی لیستی از زوجهای key-value دارد، که نوع آن توسط برنامه نویس تعیین می شود. همچنین برنامه نویس موظف است برای هر فاز بصورت جداگانه یک تابع بنویسد: تابع map و تابع reduce.

مثال: بیشترین درجه آب و هوا به ازای هر سال را مشخص نمایید.

در مجموعه داده هواشناسی، فایل های لاگ بصورت متنی و سطر به سطر طراحی شده اند، بنابراین در ورودی تابع map مقدار key بیانگر شماره سطر و مقدار value بیانگر محتوای سطر خواهد بود. البته در این مثال از مقدار key استفاده نمی شود. تابع map ساده می باشد. قرار است که دو فیلد سال و درجه از مقدار value استخراج شوند. توجه داشته باشید که به ازای هر سطر از ورودی یک بار تابع map فراخوانی می شود. در این مثال، تابع map تنها آماده سازی داده را انجام می دهد تا به واسطه آن ورودی تابع reduce فراهم شود.

۲ نظر موافقین ۰ مخالفین ۰ ۰۵ آذر ۹۳ ، ۰۹:۱۷
مهدی شهیدی صادقی

MapReduce یک مدل برنامه نویسی پردازش داده می باشد. هدوپ می تواند برنامه هایی که با این مدل در زبانهای برنامه نویسی گوناگون نظیر Java، Ruby، Python و ++C ایجاد شده است را اجرا نماید. اما نکته مهم این است که برنامه های نوشته شده تحت MapReduce ذاتا بصورت موازی طراحی و پیاده سازی می شوند، یعنی برای تحلیل یک حجم زیاد داده می بایست آن را بین چندین ماشین تقسیم نمود.


یک مجموعه داده هواشناسی

برای مثال، می خواهیم برنامه ای بنویسیم که روی یک مجموعه داده هواشناسی پردازش انجام دهد. سیستم های هوشمند هواشناسی همواره مشغول به جمع آوری لحظه ای اطلاعات از سرتاسر دنیا هستند که این عمل باعث ایجاد حجم زیادی داده یا به اصطلاح تعداد زیادی فایل لاگ می شود، و از آنجایی که نوع داده آنها نیمه ساختار یافته و طراحی آن بصورت رکورد به کورد می باشد، برنامه های نوشته شده توسط MapReduce به خوبی از آنها استفاده می کنند. نمونه ساده شده از یک رکورد از این نوع داده در ادامه آورده شده است که برای خوانایی بیشتر، هر فیلد جدا گانه توضیح داده می شود.

۲ نظر موافقین ۲ مخالفین ۰ ۰۱ آذر ۹۳ ، ۰۹:۵۷
مهدی شهیدی صادقی