نیک آموز > وبلاگ > مهندسی داده > تنظیمات پیکربندی حافظه YARN و MapReduce به همراه ۲ مثال عملی
تنظیمات پیکربندی حافظه YARN و MapReduce به همراه ۲ مثال عملی

تنظیمات پیکربندی حافظه YARN و MapReduce به همراه ۲ مثال عملی

نوشته شده توسط: امیرعلی میرزابیگی
تاریخ انتشار: ۲۱ آذر ۱۴۰۲
آخرین بروزرسانی: 24 اسفند 1404
زمان مطالعه: 5 دقیقه
۴.۵
(۸)

تنظیمات پیکربندی حافظه YARN و MapReduce یکی از مهم‌ترین مراحل در بهینه‌سازی عملکرد کلاسترهای Apache Hadoop به شمار می‌رود. در محیط‌های پردازش کلان‌داده، نحوه تخصیص منابعی مانند حافظه (RAM)، هسته‌های پردازنده و فضای دیسک می‌تواند تأثیر مستقیمی بر سرعت پردازش، پایداری سیستم و استفاده بهینه از منابع کلاستر داشته باشد.

اگر این تنظیمات به‌درستی انجام نشوند، ممکن است بخشی از منابع سیستم بلااستفاده بمانند یا برعکس، پردازش‌ها با کمبود منابع و کاهش کارایی مواجه شوند. ازاین‌رو آشنایی با اصول و فرمول‌های تعیین اندازه Containerها و نحوه تخصیص حافظه در YARN و MapReduce برای مدیران سیستم و متخصصان داده اهمیت زیادی دارد. در این مقاله از نیک آموز، ابتدا مروری کوتاه بر Apache Hadoop و اجزای اصلی آن خواهیم داشت و سپس به بررسی نحوه تنظیمات پیکربندی حافظه YARN و MapReduce در کلاستر Hadoop می‌پردازیم.

 

 💡 با شرکت در دوره Data Lakehouse مقدماتی، از مبانی ذخیره‌سازی داده تا پردازش توزیع‌شده را گام‌به‌گام و کاربردی آموزش ببینید.

 

Apache Hadoop چیست؟

آپاچی هودوپ (Apache Hadoop) یک فریمورک متن باز است که برای فضای ذخیره‌سازی توزیع‌شده و پردازش مجموعه داده‌های وسیع طراحی شده است و بخشی از اکوسیستم Apache به حساب می‌‌آید. Apache Hadoop یک پلتفرم مقیاس‌پذیر، قابل اکتفا و متحمل خطا (Fault-Tolerant) برای کلان داده‌ها محسوب می‌شود.

 

Apache Hadoop چیست؟
Apache Hadoop چیست؟

 

اجزای اصلی Apache Hadoop

مهم‌ترین کامپوننت‌های Apache Hadoop به شرح زیر است:

HDFS) Hadoop Distributed File System)

HDFS یکی از پراهمیت‌ترین اجزای اکوسیستم Hadoop محسوب می‌شود و وظیفه آن، ذخیره‌سازی داده‌های وسیع ساختاریافته و بدون ساختار در گره‌های (Nodes) مختلف است. MetaData حاصل، در قالب فایل‌های Log نگهداری می‌شوند. در عمل، HDFS فایل‌های بزرگ را به بلوک‌های کوچک‌تر تفکیک کرده و آن‌ها را به گره‌های موجود در یک کلاستر Hadoop توزیع می‌کند. چنین مشخصه‌ای، پردازش موازی و تحمل خطا را امکان‌پذیر خواهد کرد.

MapReduce

MapReduce یک مدل برنامه‌نویسی و موتور پردازش است که برای محاسبات توزیع‌شده روی مجموعه داده‌های گسترده مورد استفاده قرار می‌گیرد. MapReduce به توسعه‌دهندگان امکان نوشتن برنامه‌هایی را می‌دهد که حجم وسیعی از داده‌ها را به‌صورت موازی (Parallel) روی کلاستر ‌Hadoop پردازش کند. این پردازش به دو فاز، Map (برای پردازش) و Reduce (برای خلاصه‌سازی) تقسیم می‌شود.

(Yet Another Resource Negotiator) YARN

YARN یک لایه مدیریت منابع برای Hadoop به حساب می‌آید و به کمک آن، چندین اپلیکیشن می‌توانند منابع را روی یک خوشه کلاستر به اشتراک بگذارند. YARN، کار نظارت (Monitoring) و زمان‌بندی (Scheduling) توابع MapReduce و مدیریت منابع را ازهم جدا می‌کند و به سایر اپلیکیشن‌های محاسبات توزیع‌شده، امکان اجرا در کنار MapReduce را می‌دهد.

Hadoop Common

Hadoop Common مواردی همچون ابزارها (Utilities)، کتابخانه‌ها (Libraries) و API هایی را دربرمی‌گیرد که سایر ماژول‌های Hadoop را پشتیبانی می‌کند. این کامپوننت، ابزارها و API هایی را شامل می‌شود که برای تسک‌های رایج، ازجمله محاسبات توزیع‌شده، امنیت و مدیریت داده‌ها، به کار می‌روند.

با این دید مقدماتی، در ادامه تنظیمات پیکربندی حافظه YARN و MapReduce و مفاهیم مربوطه پرداخته خواهد شد.

 

 💡 چطور تسک‌های مهندسی داده خود را درک کنیم؟ ۵ راهکار عملی! همین حالا قدم بردار و تسک‌های داده‌ات را مثل یک متخصص تحلیل کن. ➡ 

 

پیکربندی حافظه YARN و MapReduce چگونه است؟

YARN تمام منابع موجود در هر ماشین را به‌صورت Cluster درنظر می‌گیرد، سپس YARN با تخصیص Container ها، ظرفیت پردازش را برای هر برنامه فراهم می‌کند. Containerها، واحد اصلی ظرفیت پردازش در YARN و یک Encapsulation از عناصر (Ram ،CPU و…) هستند.

در یک کلاستر Hadoop، لازم است یک حد تعادل بین استفاده از حافظه (RAM)، هسته‌های پردازنده (CPU cores) و دیسک‌ها وجود داشته باشد تا پردازش توسط هیچ یک از این منابع کلاستر محدود نشود.

به‌عنوان یک توصیه کلی، اجازه دادن به دو Container در Disk و CPU، بهترین راه تعادل برای استفاده از کلاستر را فراهم می‌کند.

هنگام تعیین پیکربندی حافظه YARN و MapReduce برای یک Cluster Node، از منابع سخت‌افزاری موجود شروع کنید. به‌طور خاص، به مقادیر زیر در هر node توجه کنید:

  • مقدار RAM
  • CPU (CPU Cores)
  • تعداد Disk

لازم است تمام RAM موجود برای YARN و MapReduce به‌صورت رزرو شده در نظر گرفته شود. Reserved Memory RAM موردنیاز فرآیندهای سیستم و سایر فرآیندهای Hadoop مانند HBase است.

Reserved Memory = Reserved for stack memory + Reserved for HBase memory (If HBase is on the same node)

از جدول زیر برای تعیین Reserved Memory در هر Node استفاده کنید:

توصیه‌های Reserved Memory

 

توصیه‌های Reserved Memory
توصیه‌های Reserved Memory

 

تعیین تعداد حداکثر Container های مجاز در هر node، براساس فرمول زیر است:

Containers = minimum of (2*CORES, 1.8*DISKS, (Total available RAM) / MIN_CONTAINER_SIZE)

جایی که MIN_CONTAINER_SIZE حداقل اندازه کانتینر (در RAM) است. این مقدار، به مقدار RAM available بستگی دارد.

در Node های حافظه کوچک‌تر، حداقل اندازه Container نیز باید کوچک‌تر باشد.

جدول زیر، مقادیر توصیه‌شده را نشان می‌دهد:

 

Container های مجاز در هر node
Container های مجاز در هر node

 

محاسبه نهایی برای تعیین مقدار RAM در هر Container:

RAM-per-Container = maximum of (MIN_CONTAINER_SIZE, (Total Available RAM) / Containers))

با این محاسبات، می‌توان YARN و MapReduce را تنظیم کرد:

تنظیمات مربوط به تخصیص منابع سخت حافظه (RAM) برای YARN و MapReduce براساس مشخصات سخت‌افزاری، به‌صورت زیر است:

 

محاسبه نهایی برای تعیین مقدار RAM در هر Container
محاسبه نهایی برای تعیین مقدار RAM در هر Container

 

توجه شود که پس از نصب، هر دو yarn-site.xml و mapred-site.xml در پوشه /etc/hadoop/conf قرار دارند.

 

 💡 برای درک عمیق‌تر تسک‌های واقعی، یادگیری اصولی در یک دوره مهندسی داده می‌تواند بهترین نقطه شروع شما باشد. ➡ 

 

مثال

کلاستر داریم شامل:

  • CPU: 12 cores
  • RAM: 48 GIB
  • Disk: 12
  • Reserved Memory = 6 GB reserved for system memory + (if HBase) 8 GB for HBase
  • Min Container size = 2 GB

اگر HBase نداریم:

# Containers = minimum of (2*12, 1.8* 12, (48-6)/2) = minimum of (24, 21.6, 21) = 21

RAM-per-Container = maximum of (2, (48-6)/21) = maximum of (2, 2) = 2

 

بدون HBase
بدون HBase

 

اگر Hbase وجود داشته باشد:

Containers = minimum of (2*12, 1.8* 12, (48-6-8)/2) = minimum of (24, 21.6, 17) = 17

RAM-per-Container = maximum of (2, (48-6-8)/17) = maximum of (2, 2) = 2

 

با Hbase
با Hbase

 

سخن پایانی تنظیمات پیکربندی حافظه YARN و MapReduce

 

YARN و MapReduce دو کامپوننت پراهمیت از Apache Hadoop تلقی می‌شوند. در این مطلب، تنظیمات پیکربندی حافظه YARN و MapReduce شرح داده شد. شما می‌توانید با به‌کارگیری YARN به‌عنوان فریمورک مدیریت منابع و MapReduce به منظور پردازش مجموعه داده‌های گسترده به‌صورت موازی (در Node های مختلف)، از این اجزا به بهترین شکل بهره‌مند شوید.

 

سوالات متداول تنظیمات پیکربندی حافظه YARN و MapReduce

 

۱. تنظیمات پیکربندی حافظه YARN و MapReduce در کلاستر Hadoop چه اهمیتی دارد؟

تنظیمات پیکربندی حافظه YARN و MapReduce نقش مهمی در بهینه‌سازی عملکرد کلاستر Hadoop دارد. با تنظیم صحیح میزان حافظه، پردازنده و منابع دیگر، می‌توان از حداکثر ظرفیت سخت‌افزار استفاده کرد و پردازش داده‌های حجیم را با سرعت و پایداری بیشتری انجام داد.

۲. YARN در معماری Hadoop چه نقشی دارد؟

YARN به‌عنوان لایه مدیریت منابع در Hadoop عمل می‌کند و وظیفه تخصیص منابعی مانند RAM و CPU را بین برنامه‌های مختلف برعهده دارد. این سیستم با استفاده از Containerها امکان اجرای همزمان چندین پردازش را در کلاستر فراهم می‌کند.

۳. Container در YARN چیست و چه کاربردی دارد؟

Container واحد اصلی تخصیص منابع در YARN است که شامل مجموعه‌ای از منابع مانند حافظه RAM و توان پردازشی CPU می‌شود. این ساختار باعث می‌شود هر برنامه در محیطی مشخص و با منابع تعیین‌شده اجرا شود.

۴. در تنظیمات پیکربندی حافظه YARN و MapReduce چه منابع سخت‌افزاری باید بررسی شوند؟

برای انجام صحیح تنظیمات پیکربندی حافظه YARN و MapReduce باید منابعی مانند مقدار RAM، تعداد هسته‌های پردازنده (CPU Cores) و تعداد دیسک‌های موجود در هر Node بررسی شوند تا تخصیص منابع به‌صورت متعادل انجام شود.

۵. Reserved Memory در کلاستر Hadoop به چه معناست؟

Reserved Memory به بخشی از حافظه RAM گفته می‌شود که برای سیستم‌عامل و برخی سرویس‌های Hadoop رزرو می‌شود. در صورتی که سرویس‌هایی مانند HBase روی همان Node اجرا شوند، مقدار بیشتری از حافظه برای این سرویس‌ها در نظر گرفته می‌شود.

۶. چگونه تعداد Containerها در یک Node محاسبه می‌شود؟

تعداد Containerهای قابل اجرا در هر Node با در نظر گرفتن تعداد هسته‌های پردازنده، تعداد دیسک‌ها و مقدار حافظه در دسترس محاسبه می‌شود. در این محاسبه کوچک‌ترین مقدار حاصل از این منابع به‌عنوان تعداد نهایی Containerها در نظر گرفته می‌شود.

۷. حداقل اندازه Container در تنظیمات پیکربندی حافظه YARN و MapReduce چگونه تعیین می‌شود؟

حداقل اندازه Container به مقدار حافظه در دسترس هر Node بستگی دارد. در Nodeهایی با حافظه کمتر، اندازه Container نیز باید کوچک‌تر در نظر گرفته شود تا بتوان از منابع به شکل بهینه استفاده کرد.

۸. چگونه مقدار RAM برای هر Container محاسبه می‌شود؟

برای تعیین مقدار RAM هر Container، حافظه قابل استفاده Node بر تعداد Containerها تقسیم می‌شود و سپس با حداقل اندازه Container مقایسه می‌شود تا مقدار نهایی حافظه اختصاص‌یافته مشخص شود.

۹. فایل‌های پیکربندی YARN و MapReduce در Hadoop در کجا قرار دارند؟

پس از نصب Hadoop، فایل‌های پیکربندی مربوط به تنظیمات حافظه YARN و MapReduce معمولاً در مسیر /etc/hadoop/conf قرار دارند و شامل فایل‌هایی مانند yarn-site.xml و mapred-site.xml هستند.

۱۰. تنظیمات پیکربندی حافظه YARN و MapReduce چه تأثیری بر عملکرد پردازش داده‌ها دارد؟

تنظیم صحیح این پیکربندی باعث می‌شود منابع کلاستر به‌صورت متعادل بین پردازش‌ها توزیع شوند. این موضوع به افزایش کارایی پردازش‌های موازی، کاهش اتلاف منابع و بهبود عملکرد کلی سیستم Hadoop کمک می‌کند.

 

 

 

 💡 برای آشنایی با مفاهیم بیشتر در حوزه داده و معماری‌های داده مدرن، مقالات بعدی را دنبال کنید:

 

چه رتبه ای می‌دهید؟

میانگین ۴.۵ / ۵. از مجموع ۸

اولین نفر باش

title sign
دانلود مقاله
تنظیمات پیکربندی حافظه YARN و MapReduce به همراه ۲ مثال عملی
فرمت PDF
6 صفحه
حجم 0/5 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
امیرعلی میرزابیگی
مقالات
2 مقاله توسط این نویسنده
امیرعلی میرزابیگی
title sign
معرفی محصول
دوره Data Lakehouse مقدماتی
حسن احمدخانی

دوره آنلاین Data Lakehouse مقدماتی

طلایی
55,750,000 تومان39,025,000 تومان
نقره‌ای
15,750,000 تومان11,025,000 تومان
title sign
دیدگاه کاربران