این مقاله قسمت اول در مجموعه است که نگاهی دقیق تر به معماری و روش های یک خوشه Hadoop و نحوه ارتباط آن با زیرساخت های شبکه و سرور می اندازد. محتوای ارائه شده در اینجا بیشتر مبتنی بر کار دانشگاهی و گفتگوهایی است که من با مشتریانی که دارای خوشه های تولید واقعی هستند ، انجام می شود. اگر خوشه های Hadoop را در مرکز داده خود تولید می کنید ، امیدوارم بینش ارزشمند خود را در نظرات زیر ارائه دهید. مقالات بعدی برای این کار گزینه های معماری سرور و شبکه را با جزئیات بیشتری پوشش می دهد. قبل از انجام این کار ، اجازه می دهیم با یادگیری برخی از اصول اولیه در مورد چگونگی کار یک خوشه Hadoop شروع کنیم. خوب ، بیایید شروع کنیم!

نقش های سرور Hadoop

سه دسته اصلی از نقش ماشین آلات در استقرار Hadoop عبارتند از ماشین های Client ، گره های Master و گره های Slave. گره های Master بر دو قطعه عملکردی اصلی که Hadoop را تشکیل می دهند نظارت دارند: ذخیره داده های زیادی (HDFS) و اجرای محاسبات موازی بر روی تمام داده ها (نقشه کاهش). نام گره عملکرد ذخیره سازی داده ها (HDFS) را نظارت و هماهنگی می کند ، در حالی که ردیاب شغلی بر پردازش موازی داده ها با استفاده از Map Reduce نظارت و هماهنگی می کند. Slave گره ها اکثریت قریب به اتفاق ماشین ها را تشکیل می دهند و تمام کارهای کثیف ذخیره داده ها و اجرای محاسبات را انجام می دهند. هر یک از برده ها هر دو Daone Data Node و Task Tracker را اجرا می کنند که با گره های اصلی خود ارتباط برقرار می کنند. Daemon Task Tracker یک برده در Job Tracker است ، یک Daemon Data Node یک برده به نام Node است.

دستگاه های Client دارای Hadoop با تمام تنظیمات خوشه ای نصب شده اند اما نه Master یا Slave هستند. درعوض ، وظیفه دستگاه Client بارگذاری داده ها در خوشه ، ارسال Map Reduction مشاغل است که توصیف می کند چگونه باید داده ها پردازش شوند ، و پس از اتمام نتایج کار را بازیابی یا مشاهده کنید. در خوشه های کوچکتر (40 گره پوند) ممکن است شما یک سرور فیزیکی واحد داشته باشید که چندین نقش را بازی می کند ، مثل Job Tracker و Name Node با خوشه های متوسط ​​تا بزرگ شما اغلب می توانید هر نقش را در یک دستگاه سرور واحد داشته باشید.

در خوشه های تولید واقعی هیچ مجازی سازی سرور ، لایه ای بیش از حد وجود ندارد. این فقط به عملکرد مانع سربار اضافی می رسد. Hadoop بهترین کار را در دستگاه های لینوکس انجام می دهد ، و مستقیماً با سخت افزار اساسی کار می کند. این گفته هادوپ در یک ماشین مجازی کار می کند. این یک روش عالی برای یادگیری و هادوپ سریع و ارزان است. من یک خوشه 6 گره ای دارم که در VMware Workstation در لپ تاپ ویندوز 7 کار می کنم.


خوشه هادوپ

این معماری معمول یک خوشه Hadoop است. سرورهای دندانه دار (نه تیغه) در قفسه های متصل به بالای سوئیچ رک که معمولاً دارای 1 یا 2 لینک مجهز به GE هستند ، جمع شده اند. گره های 10GE غیر معمول است اما با توجه به اینکه ماشین ها همچنان با هسته های CPU و درایوهای دیسک متراکم تر می شوند ، مورد توجه قرار می گیرند. سوئیچ قفسه دارای پیوندهایی است که به ردیف دیگری از سوئیچ ها متصل شده و تمامی رک های دیگر را با پهنای باند یکنواخت متصل می کند و خوشه را تشکیل می دهد. اکثر سرورها گره های Slave با تعداد زیادی حافظه محلی و مقادیر متوسط ​​CPU و DRAM هستند. برخی از این ماشین ها گره های مستر هستند که ممکن است پیکربندی کمی متفاوتی داشته باشند که از DRAM و CPU بیشتر و حافظه محلی کمتری برخوردار است. در این پست قصد نداریم در مورد گزینه های مختلف طراحی شبکه مفصل صحبت کنیم. بیایید آن را برای بحث دیگری ذخیره کنیم (با ما همراه باشید). اولین،


جریان کار Hadoop

چرا هادوپ به وجود آمد؟ چه مشکلی را حل می کند؟ به عبارت ساده ، مشاغل و دولت ها داده های بسیار زیادی دارند که باید خیلی سریع تجزیه و تحلیل شوند. اگر بتوانم آن تکه های بزرگ از داده ها را در تکه های کوچک ریز خرد کنم و آن را در بسیاری از ماشین ها گسترش دهم ، و تمام دستگاه ها بخواهند بخش خود از داده ها را بطور موازی پردازش کنند – من می توانم خیلی سریع جوابها را بدست آورم – و به طور خلاصه ، این همان چیزی است که Hadoop می کند. در مثال ساده ما ، یک فایل داده عظیم را خواهیم داشت که حاوی ایمیل هایی است که به بخش خدمات مشتری ارسال می شوند. من می خواهم یک عکس فوری سریع ببینم چند بار کلمه “بازپرداخت” توسط مشتریان من تایپ شده است. این ممکن است به من کمک کند تا تقاضای بخش بازده و مبادلات و کارکنان را بطور مناسب پیش بینی کنم. این یک تمرین ساده شمارش کلمه است. مشتری داده ها را در خوشه بارگذاری می کند (File.txt) ،


نوشتن پرونده ها به HDFS

خوشه Hadoop شما تا زمانی که داده نداشته باشد بی فایده است ، بنابراین ما با بارگذاری File.txt بزرگ خود در خوشه برای پردازش شروع خواهیم کرد. هدف در اینجا پردازش سریع موازی تعداد زیادی از داده ها است. برای تحقق این موضوع که من به تعداد ماشینهای بیشتری نیاز دارم که روی هم at این داده ها کار می کنند. برای این منظور ، مشتری قصد دارد پرونده داده را در “Blocks” کوچکتر شکسته و آن بلوک ها را در دستگاه های مختلف در کل خوشه قرار دهد. هرچه تعداد بلوک بیشتری داشته باشم ، ماشینهای بیشتری وجود دارند که به طور موازی قادر به کار بر روی این داده ها خواهند بود. در عین حال ، این ماشین ها ممکن است مستعد خرابی باشند ، بنابراین می خواهم اطمینان دهم که هر بلوک از داده ها به طور همزمان روی چندین دستگاه است تا از اتلاف داده ها جلوگیری شود. بنابراین هر بلوک در خوشه بارگیری می شود. تنظیم استاندارد برای Hadoop این است که (3) نسخه از هر بلوک در خوشه داشته باشد. این را می توان با پیکربندی کردپارامتر dfs.replication در پرونده hdfs-site.xml .

Client File.txt را به (3) بلوک می شکند. برای هر بلوک ، مشتری با نام نود (معمولاً TCP 9000) مشاوره می کند و لیستی از (3) گره داده را دریافت می کند که باید یک نسخه از این بلوک را داشته باشد. سپس مشتری بلاک را مستقیماً به Data Node (معمولاً TCP 50010) می نویسد. گره داده دریافت کننده بلوک را به سایر داده های گره تکرار می کند و چرخه برای بلوک های باقی مانده تکرار می شود. Name Node در مسیر داده قرار ندارد. Name Node فقط نقشه مکان اطلاعات را در اختیار شما قرار می دهد و داده ها باید در آن خوشه قرار گیرند (فراداده سیستم فایل).


آگاهی Hadoop Rack

Hadoop مفهوم “رک آگاهی” دارد. به عنوان مدیر Hadoop شما می توانید به صورت دستیتعداد دندانه هر گره داده برده را در خوشه خود تعریف کنید. چرا با انجام این کار دچار دردسر می شوید؟ دو دلیل مهم برای این امر وجود دارد: جلوگیری از از بین رفتن داده ها و عملکرد شبکه. به یاد داشته باشید که برای جلوگیری از از بین رفتن خراب شدن یک دستگاه ، تمام بلوک داده ها به چندین ماشین تکرار می شود. جای تاسف نخواهد بود اگر تمام نسخه های داده ها روی ماشینهای یک قفسه قرار داشته باشند ، و این قفسه یک شکست را تجربه کند؟ مانند خرابی سوئیچ یا قطع برق. این یک آشفتگی خواهد بود بنابراین برای جلوگیری از این امر ، کسی باید بداند که گره های داده در محل توپولوژی شبکه قرار دارد و از این اطلاعات برای تصمیم گیری هوشمندانه در مورد مکان های موجود در خوشه ، استفاده می کند. “کسی” نام گره است.

همچنین این فرض وجود دارد که دو ماشین در یک رک یک پهنای باند و لاتین پائین تری بین یکدیگر دارند تا دو ماشین در دو رک مختلف. این بیشتر اوقات صادق است. پهنای باند پهنای باند سوئیچ رک معمولاً (اما نه همیشه) کمتر از پهنای باند downlink آن است. علاوه بر این ، تأخیر درون قفسه معمولاً پایین تر از زمان تاخیر متقاطع است (اما نه همیشه). اگر حداقل یکی از این دو فرض اساسی صحیح باشد ، آیا Hadoop می تواند از همان Rack Awareness که از داده ها محافظت می کند ، استفاده کند و همچنین بهینه سازی جریان کار در خوشه ، باعث بهبود عملکرد شبکه می شود ، سرد نیست؟ خوب ، این کار را می کند! باحال ، درست است؟

چه نیست در مورد آگاهی رک در این نقطه خنک است کار دستی مورد نیاز به آن اولین بار تعریف ، به طور مداوم به روز رسانی آن، و دقیق حفظ اطلاعات. اگر سوئیچ دندانه دار می تواند به طور خودکار جادویی نام گره را با لیست گره های داده موجود در اختیار شما قرار دهد ، بسیار جالب خواهد بود. یا برعکس ، اگر گره های داده می توانند به صورت خودکار با نام گره نام را به چه سوییچ وصل کنند ، می گویند که بسیار جالب است.

حتی جالب تر می تواند یک شبکه OpenFlow باشد ، جایی که نام نود می تواند از کنترل کننده OpenFlow در مورد مکان یک گره در توپولوژی پرس و جو کند.


تهیه نوشتار HDFS

Client آماده است تا File.txt را در خوشه بارگذاری کند و آن را به بلوک شکسته کند ، از Block A. شروع می کند. Client با نام Node که می خواهد File.txt را بنویسد مشاوره می کند ، از نام Node اجازه می گیرد و لیستی دریافت می کند. از (3) گره داده برای هر بلوک ، یک لیست منحصر به فرد برای هر بلوک. نام نود از داده های Rack Awareness برای تأثیرگذاری در تصمیم گیری در مورد ارائه گره های داده در این لیست ها استفاده کرد. قانون اساسی این است که برای هر بلاک از داده ها ، دو نسخه در یک قفسه وجود دارد ، یک نسخه دیگر در یک قفسه متفاوت. بنابراین لیست ارائه شده به مشتری از این قاعده پیروی می کند.

قبل از اینکه مشتری “Block A” File.txt را به خوشه بنویسد ، می خواهد بداند که تمام گره های داده که انتظار می رود نسخه ای از این بلوک را داشته باشند ، آماده دریافت آن هستند. اولین گره داده را در لیست بلوک A (Data Node 1) می گیرد ، اتصال TCP 50010 را باز می کند و می گوید: “سلام ، آماده دریافت یک بلوک شوید ، و در اینجا لیستی از (2) گره داده ، داده گره 5 و گره داده 6. برو مطمئن شوید که آنها نیز آماده دریافت این بلوک هستند. “داده گره 1 اتصال TCP را به داده گره 5 باز می کند و می گوید ،” سلام ، آماده دریافت یک بلوک شوید و مطمئن شوید که Data Node 6 آماده است ، این بلوک را نیز دریافت کنید. “داده گره 5 از داده گره 6 سؤال می کند ،” سلام ، آیا شما آماده دریافت یک بلوک هستید؟ ”

تأیید آمادگی ها در همان خط لوله TCP برمی گردد ، تا زمانی که گره داده اولیه 1 پیام “آماده” را به مشتری ارسال کند. در این مرحله مشتری آماده است تا نوشتن داده های بلوک در خوشه را آغاز کند.


HDFS خط لوله بنویسید

همانطور که داده های مربوط به هر بلوک در خوشه نوشته می شود ، خط لوله تکرار بین (3) گره داده ایجاد می شود (یا با این وجود بسیاری از آنها را در dfs.replication پیکربندی کرده اید). این بدان معنی است که به عنوان یک گره داده در حال دریافت اطلاعات بلوک است ، در همان زمان یک کپی از آن داده ها را به گره بعدی در خط لوله سوق می دهد.

در اینجا نیز یک مثال اولیه از اعمال داده های Rack Awareness در نام گره برای بهبود عملکرد خوشه وجود دارد. توجه کنید که گره های داده دوم و سوم در خط لوله در یک قفسه قرار دارند و بنابراین پایانی خط لوله نیازی به گذر از رک ندارد و در عوض از پهنای باند درون رک و تأخیر کم بهره می برد. بلاک بعدی تا زمانی که این بلوک با موفقیت برای هر سه گره نوشته شود آغاز نمی شود.


خط لوله HDFS موفقیت بنویسید

وقتی هر سه گره بلوک را با موفقیت دریافت کردند ، گزارش “بلوک دریافت شده” را به نام گره ارسال می کنند. آنها همچنین پیام های “موفقیت” را برای تهیه خط لوله و بسته شدن جلسات TCP ارسال می کنند. مشتری یک پیام موفقیت آمیز دریافت می کند و به نام نود می گوید بلوک با موفقیت نوشته شد. Name Node اطلاعات مربوط به فوق داده را با مکانهای Node Block A در File.txt به روز می کند. مشتری آماده است تا دوباره مراحل خط لوله را برای بلوک بعدی داده ها آغاز کند.


خط لوله تکرار چند بلوک HDFS

همانطور که بلوک های بعدی File.txt نوشته شده اند ، گره اولیه در خط لوله برای هر بلوک متفاوت خواهد بود ، و در اطراف نقاط داغ ترافیک درون و قفسه متقاطع برای تکثیر گسترش می یابد.

Hadoop از پهنای باند و ذخیره سازی شبکه زیادی استفاده می کند. ما به طور معمول با پرونده های بسیار بزرگ ، از نظر اندازه ترابایت سروکار داریم. و هر پرونده در شبکه و دیسک (3) بار تکرار می شود. اگر یک فایل 1TB دارید ، برای بارگیری موفقیت آمیز پرونده ، 3TB از ترافیک شبکه استفاده می کند و فضای دیسک 3TB را برای نگه داشتن پرونده می توانید مصرف کنید.


Client می نویسد Span Cluster

پس از تکمیل خط لوله تکثیر هر بلوک ، پرونده با موفقیت به خوشه ارسال شد. همانطور که در نظر گرفته شده بود ، پرونده در بلوکهای مختلف در خوشه ماشین ها پخش شده است ، هر دستگاه دارای قسمت نسبتاً کمی از داده ها است. هرچه تعداد بلوک بیشتری تشکیل شود ، داده ها به طور بالقوه بیشتری پخش می شوند. بیشتر هسته های سی پی یو و درایوهای دیسک که بخشی از داده های من را دارند به معنای قدرت پردازش موازی بیشتر و نتایج سریع تر هستند. این انگیزه ساختن خوشه های بزرگ و گسترده است. برای پردازش اطلاعات بیشتر ، سریعتر. وقتی تعداد دستگاه بالا می رود و خوشه گسترده می شود ، شبکه ما باید مقیاس مناسبی را انجام دهد.

یک رویکرد دیگر برای مقیاس بندی خوشه ، عمیق شدن است . این جایی است که دستگاه ها را با درایوهای دیسک بیشتر و هسته های CPU بیشتر مقیاس می کنید. به جای افزایش تعداد ماشین ها ، به افزایش چگالی هر دستگاه توجه می کنید. در مقیاس عمیق ، شما خود را در مسیری قرار می دهید که در آن ممکن است نیاز به شبکه I / O بیشتری برای ماشینهای کمتری مورد نیاز باشد. در این مدل ، چگونگی خوشه Hadoop شما برای انتقال به گره های 10GE مورد توجه قرار می گیرد.


نام گره

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

گره های داده هر 3 ثانیه ضربان قلب را از طریق دستی TCP به نام گره ارسال می کنند ، با استفاده از همان شماره پورت تعریف شده برای Daemon Name Node ، معمولاً TCP 9000. هر دهم ضربان قلب یک گزارش گزارش است ، جایی که گره داده در مورد همه نود را می گوید. بلوک های موجود در آن گزارش های بلاک اجازه می دهد تا نام Node ابرداده خود را بسازد و (3) نسخه از بلوک را در گره های مختلف ، در قفسه های مختلف ، بیمه کند.

Name Node یک جزء مهم سیستم فایل توزیع شده Hadoop (HDFS) است. بدون آن ، مشتری قادر به نوشتن یا خواندن پرونده ها از HDFS نیست ، و غیرممکن است که برنامه ریزی و اجرای کارهای کاهش نقشه را غیرممکن سازید. به همین دلیل ، ایده خوبی است که نام Node را با پیکربندی سرور کلاس شرکت های بسیار نابسامان مجهز کنید. منبع تغذیه دوتایی ، فن های قابل تعویض داغ ، اتصالات اضافی NIC و غیره


بازتولید دوباره نمونه های گمشده

اگر نام گره دریافت ضربان قلب را از یک گره داده متوقف کند ، تصور می شود که آن مرده است و هر گونه داده ای را نیز باید از بین برد. براساس گزارشهای بلوکی که از گره مرده دریافت کرده است ، نام گره می داند کدام نسخه از بلوک ها به همراه گره درگذشته اند و می توانند تصمیم به تکرار مجدد آن بلوک ها به سایر داده های گره بگیرند. همچنین با استفاده از داده های Rack Awareness به منظور حفظ دو نسخه در یک قفسه ، یک نسخه در قانون ماکت قفسه بندی دیگر هنگام تصمیم گیری که Data Node باید نسخه جدیدی از بلوک ها را دریافت کند.

سناریویی را در نظر بگیرید که تمام قفسه های سرور از شبکه خاموش می شود ، شاید به دلیل خرابی سوئیچ رک یا خرابی برق. نام گره شروع به آموزش گره های باقیمانده در خوشه می کند تا همه بلوک های داده گم شده در آن قفسه را دوباره تکرار کند. اگر هرکدام از سرورهای آن رک دارای 12 ترابایت داده متوسط ​​باشد ، این می تواند صدها ترابایت داده باشد که نیاز به شروع به کار در شبکه دارد.


گره نام ثانویه

Hadoop نقش سرور بنام Node Name Node دارد. تصور غلط متداول این است که این نقش تهیه پشتیبان بالا در دسترس برای نام گره است. این مورد نیست.

نام Secondary Node گاهی به نام Node متصل می شود (بطور پیش فرض ، هر ساعت) و یک نسخه از ابرداده های حافظه نام Node و پرونده های استفاده شده برای ذخیره ابرداده (هر دو ممکن است خارج از همگام سازی) باشد. Secondary Name Node این اطلاعات را در مجموعه جدیدی از پرونده ها ترکیب کرده و آنها را دوباره به نام گره منتقل می کند ، ضمن اینکه یک نسخه نیز برای خود نگه می دارد.

اگر نام Node از بین برود ، از پرونده هایی که توسط Secondary Name Node استفاده می شود می توان برای بازیابی نام Node استفاده کرد. در یک خوشه شلوغ ، سرپرست ممکن است گره نام ثانویه را پیکربندی کند تا این سرویس خانه داری را بسیار بیشتر از زمان پیش فرض یک ساعت ارائه دهد. شاید هر دقیقه.


مشتری از HDFS بخوانید

هنگامی که یک مشتری می خواهد یک پرونده را از HDFS ، شاید خروجی یک کار بازیابی کند ، مجدداً با نام Node مشاوره می کند و مکان های بلاک پرونده را درخواست می کند. نام نود لیستی از هر گره داده را که دارای یک بلوک است ، برای هر بلوک برمی گرداند. مشتری از هر لیست بلوک یک Data Node را انتخاب می کند و با یک بار TCP در درگاه 50010 ، شماره پورت پیش فرض برای Daemon Data Node را می خواند. تا زمان کامل شدن بلوک قبلی ، به بلوک بعدی پیشرفت نمی کند.


گره داده از HDFS خوانده می شود

مواردی وجود دارد که در آن یک Daemon Data Node به خودی خود نیاز به خواندن اطلاعاتی از HDFS دارد. یک مورد از این قبیل مواردی است که از Data Node خواسته شده است تا داده هایی را که محلی در اختیار ندارند پردازش کند ، بنابراین باید قبل از شروع پردازش ، داده ها را از یک Data Node دیگر بر روی شبکه بازیابی کند.

این یکی دیگر از نمونه های مهم دانش آگاهی از نام Node Rack است که رفتار بهینه شبکه را ارائه می دهد. هنگامی که Data Node از مکان نام داده برای مکان داده های بلوک سؤال می کند ، نام نود بررسی می کند که آیا یک گره داده دیگر در همان رک داده ها را دارد یا خیر. در این صورت ، Name Node مکان درون قفسه ای را برای بازیابی اطلاعات فراهم می کند. این جریان نیازی به عبور از دو سوئیچ دیگر ندارد و پیوندهای احتمالی داده ها را در یک قفسه دیگر پیدا می کنند. با بازیابی سریعتر داده ها ، پردازش داده ها زودتر آغاز می شوند و کار خیلی سریعتر انجام می شود.


وظیفه نقشه

اکنون که File.txt در بلوک های کوچک در سراسر خوشه ماشین من پخش شده است ، من این فرصت را دارم که پردازش موازی بسیار سریع و کارآمد آن داده ها را فراهم کنم. چارچوب پردازش موازی همراه با Hadoop با نام Map Reduce نامگذاری شده است که پس از دو مرحله مهم در مدل نامگذاری شده است. نقشه و کاهش .

اولین مرحله فرآیند Map است. این جایی است که ما به طور همزمان از ماشینهای خود می خواهیم محاسبه ای را در داده های محلی خود انجام دهند. در این حالت ما از ماشینهای خود درخواست می کنیم تعداد وقایع کلمه “بازپرداخت” را در بلوک های داده File.txt محاسبه کنند.

برای شروع این فرایند ، دستگاه Client کار Map Reduce را به ردیاب شغل ارسال می کند ، و می پرسد “بازپرداخت چند بار در File.txt اتفاق می افتد” (پاراگراف کردن کد جاوا). ردیاب شغلی با نام گره مشاوره می کند تا بدانید که کدام گره داده دارای بلوک های File.txt است. سپس کار ردیاب Task Tracker را با استفاده از کد جاوا مورد نیاز برای اجرای محاسبات نقشه روی داده های محلی خود ، Task Tracker را اجرا می کند. Task Tracker یک کار نقشه را شروع می کند و بر پیشرفت کارها نظارت می کند. Task Tracker ضربان قلب و وضعیت کار را به کارگر ردیاب بازگرداند.

با انجام هر کار نقشه ، هر گره نتیجه محاسبات محلی خود را در ذخیره محلی موقتی ذخیره می کند. این “داده واسطه” نامیده می شود. مرحله بعدی ارسال این داده واسط از طریق شبکه به یک گره است که وظیفه کاهش آن برای محاسبه نهایی را انجام می دهد.


اگر داده Task Map محلی نیست؟

در حالی که ردیاب شغلی همیشه سعی خواهد کرد گره هایی را با داده های محلی برای یک کار نقشه انتخاب کند ، ممکن است همیشه نتواند این کار را انجام دهد. یکی از دلایل این امر ممکن است این باشد که همه گره های دارای داده های محلی در حال حاضر کارهای بسیار دیگری دارند که دیگر نمی توانند قبول کنند. در این حالت ، Job Tracker با نام Node مشورت خواهد کرد که دانش Rack Awareness می تواند گره های دیگری را در همان قفسه ارائه دهد. کار ردیاب وظیفه را به یک گره در همان قفسه اختصاص می دهد ، و هنگامی که آن گره به جستجوی داده های مورد نیاز Name Node می رود ، به آن دستور می دهد تا داده ها را از یک گره دیگر در قفسه خود بگیرد و با استفاده از یک hop hop و بالا کار کند. پهنای باند تعویض داخل قفسه.


کار را کاهش دهید

مرحله دوم چارچوب Map Reduce نام دارد ، شما حدس می زنید ، Reduce . کار نقشه بر روی دستگاه ها داده های میانی آنها را تکمیل و تولید کرده است. اکنون باید تمام این داده های میانی را جمع آوری کرده و آنرا برای پردازش بیشتر تقسیم کنیم تا به یک نتیجه نهایی برسیم.

کار ردیاب شروع به کار کاهش در هر یک از گره های موجود در خوشه می کند و به وظیفه کاهش می دهد که به گرفتن داده های میانی از همه کارهای نقشه کامل برسد. وظایف نقشه ممکن است تقریباً به طور همزمان به Reducer پاسخ دهد ، در نتیجه در شرایطی که تعدادی گره دارید داده های TCP را به یک گره واحد ارسال می کنند ، همه به یکباره. این وضعیت ترافیک اغلب به TCP Incast یا “فن” گفته می شود. برای شبکه هایی که بسیاری از شرایط Incast را کنترل می کنند ، مهم است که سوئیچ های شبکه از قابلیت های مدیریت ترافیک داخلی به خوبی مهندسی شده و بافرهای کافی (نه خیلی بزرگ ، نه خیلی کوچک) استفاده کنند. پرتاب اجاق گاز بافر روی یک سوئیچ ممکن است در نتیجه باعث خسارت وثیقه ناخواسته سایر ترافیک شود. اما این موضوع برای یک روز دیگر است.

وظیفه Reducer اکنون تمام داده های میانی را از وظایف نقشه جمع آوری کرده و می تواند مرحله محاسبه نهایی را شروع کند. در این حالت ، ما به سادگی می خواهیم کل وقایع کلمه “بازپرداخت” را اضافه کنیم و نتیجه را به پرونده ای بنام Results.txt بنویسیم.

نتیجه کار ، فایلی است به نام Results.txt که به دنبال همه فرایندی که قبلاً پوشش داده ایم ، برای HDFS نوشته شده است. تقسیم پرونده به بلوک ، تکرار خط لوله از آن بلوک ها ، و غیره در صورت تکمیل ، دستگاه Client می تواند پرونده Results.txt را از HDFS بخواند ، و کار کامل است.

کار ساده برای شمارش کلمات منجر به انتقال داده های متوسط ​​زیادی در انتقال شبکه نمی شود. با این وجود شغل های دیگر ممکن است داده های واسط زیادی تولید کنند – مانند مرتب سازی ترابایت داده ها. جایی که خروجی کار Map Reduce مجموعه جدیدی از داده ها برابر با داده هایی است که با آنها شروع کرده اید. میزان ترافیک شما در شبکه در روند Map Reduce کاملاً به نوع کار شما در آن زمان معین بستگی دارد.

اگر یک مدیر شبکه متشرف هستید ، در مورد Map Reduce و نوع کارهایی که خوشه شما اجرا می شود ، و چگونگی تأثیر نوع کار روی جریان ترافیک شبکه شما اطلاعات بیشتری کسب می کنید. اگر شما یک ستاره راک شبکه ای Hadoop هستید ، حتی ممکن است راه هایی برای کدگذاری بهتر نقشه کاهش کارها را به منظور بهینه سازی عملکرد شبکه ارائه دهید و در نتیجه زمان های تکمیل شغل سریع تر انجام شود.


خوشه Hadoop نامتوازن

Hadoop ممکن است یک موفقیت واقعی در سازمان شما باشد ، و مقدار زیادی از تجارتی را که قبلاً از آن استفاده نکرده اید ، از تمام اطلاعاتی که در اطراف آن نشسته اند ، بدست آورد. هنگامی که افراد مشاغل در این مورد اطلاعاتی کسب می کنند می توانید شرط بندی کنید که به سرعت پول بیشتری برای خرید قفسه های بیشتر سرور و شبکه برای خوشه Hadoop خود خواهید داشت.

هنگامی که رک های جدید پر از سرور و شبکه را به یک خوشه Hadoop موجود اضافه می کنید ، می توانید در شرایطی قرار بگیرید که خوشه شما نامتعادل باشد. در این حالت ، Racks 1 & 2 قفسه های موجود در من بود که حاوی File.txt بود و اجرای نقشه من در این داده ها کارها را کاهش می دهد. هنگامی که من دو قفسه جدید را به خوشه اضافه کردم ، داده های File.txt من به طور جادویی شروع به پخش شدن روی رک های جدید نمی کند. همه داده ها در جایی که هست می ماند.

سرورهای جدید بدون دیتا بیکار هستند ، تا زمانی که شروع به بارگذاری داده های جدید در خوشه کنم. علاوه بر این ، اگر سرورهای موجود در قفسه های 1 و 2 واقعاً شلوغ باشند ، ممکن است Job Tracker گزینه دیگری برای تعیین وظایف Map در File.txt به سرورهای جدید که داده محلی ندارند اختصاص دهد. سرورهای جدید باید اطلاعات را از طریق شبکه به دست آورند. در نتیجه ممکن است شاهد ترافیک شبکه بیشتر و زمان تکمیل کار کندتر باشید.


بالانس خوشه Hadoop

برای برطرف کردن وضعیت خوشه ای نامتوازن ، Hadoop شامل یک ابزار عالی است که شما آن را حدس می زنید ، متعادل کننده است .

Balancer به تفاوت در ذخیره سازی موجود بین گره ها و تلاش برای تأمین تعادل در آستانه مشخص می پردازد. گره های جدید با فضای خالی زیادی در دیسک شناسایی می شوند و بالانسور می تواند کپی کردن داده های بلوک را از گره هایی که فضای کمتری در اختیار گره های جدید دارند ، شروع کنند. Balancer تا زمانی که کسی دستور را در یک ترمینال تایپ نکند ، اجرا نمی شود و با قطع شدن یا بسته شدن ترمینال ، متوقف می شود.

میزان متعادل کننده ترافیک شبکه می تواند بسیار کم باشد ، با تنظیم پیش فرض 1MB / s. این تنظیم با پارامتر dfs.balance.bandwidthPerSec در پرونده hdfs-site.xml قابل تغییر است

Balancer برای خوشه شما خانه داری خوبی است. مطمئناً باید هر بار ماشینهای جدیدی اضافه شوند ، و حتی شاید هفته ای یکبار برای اندازه گیری مناسب اجرا شوند. با توجه به تنظیم پهنای باند کم پیش فرض balancers ، ممکن است مدت طولانی کار شما تمام شود ، شاید روزها یا هفته ها. آیا اگر تعادل خوشه ای بخشی اساسی از Hadoop باشد ، و نه فقط یک ابزار مفید ، جالب نخواهد بود؟ من هم اینچنین فکر میکنم.


این مطالب مبتنی بر مطالعات ، آموزش Cloudera ، و مشاهدات آزمایشگاه مجازی Hadoop من در شش گره است. همه آنچه در اینجا مورد بحث است براساس آخرین نسخه پایدار توزیع CDH3 Cloudera در Hadoop است . فن آوری های جدید و جالبی وجود دارد که مانند Hadoop on Demand (HOD) و HDFS Federations به Hadoop می آیند ، که در اینجا مورد بحث قرار نمی گیرند ، اما ارزش آن را دارند که در صورت تمایل به تحقیق در مورد خود بپردازند.

بارگیری: اسلایدها – اسلایدها و متن PDF – PDF