ببینین اینجا ۲ تا مبحث مطرحه:
یکی مفهوم map-reduce هست، که یه روش اجرای الگوریتمها و کدها هست. و این مفهوم مستقل از پیادهسازی هست.
دوم پیادهسازی map-reduce هست، که اولیش مال گوگل بوده که به زبان ++C هست و متن باز نیست و در اختیار عموم هم نیست. البته paper اش رو گوگل سالها پیش داده، که از روی اون پیادهسازی apache اش درست شده. پس پیادهسازی دوم ازش که معروفترینش توی دنیای متنباز هست و در اختیار همه هست، پیادهسازی apache هست که تو دل hadoop هست.
حالا شما اول از همه باید با مفهوم map-reduce کاملاً آشنا بشین تا متوجه بشین که توش چه خبره و چطوری کار میکنه (خیلی هم پیچیده نیست، کافیه یه مقدار باهاش ور برین و چند تا مثال رو باهاش حل کنین تا دستتون بیاد).
بعد از اون سراغ پیادهسازیش میریم. از جوابی که دادین من متوجه شدم که پروژهٔ شما این هست که الگوریتم k-means رو با map-reduce پیادهسازی کنین تا به صورت توزیعشده اجرا بشه و زمان اجرا پایین بیاد. درسته؟
اگه منظورتون رو درست متوجه شدم، باید بعد از این که به صورت مفهومی فکر کردین که چطوری این الگوریتم رو تو قالب map-reduce ببرین (یعنی توی map چی کار کنین و چه خروجیای بدین (مخصوصاً کلیدش)، و توی reduce این مقادیر رو چی کارشون کنین)، باید به سراغ hadoop برین و پیادهسازیش کنین. حالا اینجا ۲ مرحله داریم: اول پیادهسازی هست، که کلاسهای mapper و reducer مورد نیاز رو بنویسین. دوم اجراش هست، که باید یه خوشهٔ hadoop بالا بیارین و روش اجرا کنین. البته میشه برای تست به صورت local اجرا کنین و بعد که مطمئن شدین کار میکنه، ببرین روی خوشه اجراش کنین. چون بالا اوردن یه خوشهٔ hadoop خودش زمان میبره.
اگه منظورتون رو درست متوجه نشدم، بگین درستش چیه! :)