ESC را فشار دهید تا بسته شود

زمیوس آموزش، یادگیری و سرگرمی

درک عمیق Apache Hadoop؛ از صفر تا صد

مقدمه

آیا آماده‌اید تا با Apache Hadoop و دنیای Big Data آشنا شوید؟

در این مقاله مهندسی داده  (Data Engineering)، خیلی ساده. و روان، هر آنچه برای یادگیری و راه‌اندازی Hadoop نیاز دارید را توضیح می‌دهیم.

در این نوشته شما می خوانید

چرا Apache Hadoop؟

  • مقیاس‌پذیری بالا: با افزودن سرورهای Commodity (ارزان‌قیمت) می‌توانید داده‌ها را به سادگی گسترش دهید.
  • تحمل خطا: HDFS با تکثیر خودکار بلاک‌ها، اطمینان می‌دهد که هیچ داده‌ای از دست نرود.
  • پردازش موازی: مدل MapReduce کارهای بزرگ را در نودهای مختلف توزیع می‌کند تا سرعت افزایش یابد.
  • جامعه متن‌باز قوی: هزاران توسعه‌دهنده و شرکت به بهبود و بهینه‌سازی Hadoop کمک می‌کنند.

با این دلایل، Hadoop انتخاب اول بسیاری از کسب‌وکارها برای تحلیل داده‌های حجیم است.

معماری Hadoop

۱. HDFS (Hadoop Distributed File System)

  • توزیع داده: فایل‌ها به بلاک‌های ۱۲۸ یا ۲۵۶ مگابایتی تقسیم می‌شوند.
  • NameNode: نگهدارنده متادیتا (نگاشت بلاک‌ها).
  • DataNode: ذخیره‌سازی واقعی بلاک‌ها با نسخه‌برداری پیش‌فرض ۳ نسخه برای افزایش تحمل خطا.

۲. MapReduce

  • Map: دریافت داده ورودی و تولید جفت‌های کلید-مقدار.
  • Shuffle & Sort: مرتب‌سازی و انتقال داده‌های میانی.
  • Reduce: محاسبه نهایی و ذخیره نتیجه در HDFS.

۳. YARN (Yet Another Resource Negotiator)

  • ResourceManager: کنترل و تخصیص منابع (CPU و حافظه)
  • NodeManager: نظارت و مدیریت کانتینرها روی هر سرور
  • ApplicationMaster: هماهنگی اجرای هر اپلیکیشن (MapReduce، Spark و …)

۴. Hadoop Common

  • مجموعه کتابخانه‌ها و ابزارهای کمکی که سایر اجزا (HDFS، YARN و MapReduce) روی آن‌ها تکیه دارند.

معماری وساختار Hadoop

جریان داده در یک Job

  1. بارگذاری فایل به HDFS
  2. ارسال Job به ResourceManager
  3. اجرای Map Task روی نودهای دارای بلاک‌های داده
  4. Shuffle و Sort بین Map و Reduce
  5. اجرای Reduce Task و ذخیره خروجی
  6. اعلان پایان کار به کاربر

با این جریان ساده می‌توانید از پردازش توزیع‌شده لذت ببرید!

نصب و پیکربندی Hadoop

  1. حالت اجرا

    • Standalone (توسعه لوکال)

    • Pseudo-distributed (همه سرویس‌ها روی یک ماشین)

    • Fully-distributed (چندین نود واقعی)

  2. فایل‌های تنظیمات

    • core-site.xml

    • hdfs-site.xml

    • yarn-site.xml

    • mapred-site.xml

  3. پارامترهای کلیدی

    • dfs.blocksize (اندازه بلاک)

    • dfs.replication (تعداد نسخه‌ها)

    • پیکربندی منابع کانتینرها (حافظه و vCore)

اکوسیستم Hadoop و ابزارهای مکمل

پروژه شرح
Hive SQL-on-Hadoop برای انبار داده
Pig زبان اسکریپتینگ Pig Latin
HBase دیتابیس ستونی توزیع‌شده
Sqoop انتقال دسته‌ای داده بین RDBMS و HDFS
Flume جمع‌آوری و انتقال لاگ به HDFS
Oozie زمان‌بندی گردش‌کار (Workflows)
ZooKeeper هماهنگ‌سازی توزیع‌شده
Spark پردازش In-Memory و real-time روی YARN

ترکیب این ابزارها، یک پلتفرم Big Data کامل در اختیار شما قرار می‌دهد.

مزایا و چالش‌ها

مزایا

  • افزایش سرعت با پردازش موازی
  • پهنای باند بالا به‌لطف مجاورت محاسبه و داده
  • دانش‌باز و پشتیبانی گسترده

چالش‌ها

  • پیچیدگی عملیاتی و نیاز به ابزارهای مانیتورینگ
  • امنیت: پیکربندی Kerberos و ACL
  • نقطه بحرانی NameNode (با HA قابل‌حل است)

موارد کاربرد عملی

  • تحلیل کلیک‌استریم وب‌سایت‌ها
  • داده‌کاوی در شبکه‌های اجتماعی
  • محاسبات گراف (PageRank در گراف‌های میلیون‌ها راس)
  • پردازش جریان با Spark Streaming یا Flink
  • یادگیری ماشین با MLlib و Mahout

اسکریپت نصب و راه اندازی Hadoop و MapReduce و دستورات HDFS

سوالات متداول درباره Apache Hadoop

Apache Hadoop یک فریم‌ورک متن-باز برای ذخیره‌سازی و پردازش موازی داده‌های حجیم است.

از معماری توزیع‌شده استفاده می‌کند تا داده‌ها را روی صدها یا هزاران سرور Commodity تقسیم کند (با HDFS) و محاسبات را به‌صورت هم‌زمان روی آن‌ها اجرا نماید (با MapReduce/YARN).

این مدل، مقیاس‌پذیری خطی و تحمل خطای بالایی فراهم می‌کند و برای پروژه‌های Big Data ایده‌آل است.

در HDFS فایل‌ها به بلاک‌های ۱۲۸ یا ۲۵۶ مگابایتی تقسیم می‌شوند و هر بلاک روی چند DataNode به‌صورت نسخه‌برداری‌شده (پیش‌فرض سه نسخه) ذخیره می‌شود.

متادیتا (نام فایل، نگاشت بلاک به DataNode) توسط NameNode مدیریت می‌شود.

این طراحی باعث می‌شود در صورت از کار افتادن یک سرور، داده‌ها همچنان در نسخه‌های دیگر در دسترس باشند و سیستم به‌طور خودکار خود را بازیابی کند.

مدل MapReduce شامل سه مرحلهٔ اصلی است:

  1. Map: دریافت ورودی و تولید جفت‌های کلید–مقدار میانی.
  2. Shuffle & Sort: انتقال و مرتب‌سازی جفت‌های میانی بر اساس کلید تا همه مقادیر مشابه کنار هم قرار گیرند.
  3. Reduce: دریافت هر کلید و آرایهٔ مقادیرش و تولید خروجی نهایی (مثل جمع، میانگین یا فیلتر).
    این ساختار ساده، قابلیت توزیع خودکار و محاسبات موازی را تضمین می‌کند.

YARN (Yet Another Resource Negotiator) در Hadoop 2 جایگزین مدل JobTracker/TaskTracker شد.

اجزای اصلی YARN عبارت‌اند از ResourceManager (مدیریت کل منابع کلاستر)، NodeManager (نظارت و کنترل منابع هر نود) و ApplicationMaster (هماهنگی اجرای هر برنامه).

بر خلاف معماری قدیمی که فقط MapReduce را پشتیبانی می‌کرد، YARN اجازه می‌دهد انواع چارچوب‌های پردازشی مثل Spark، Tez یا Flink به‌صورت هم‌زمان اجرا شوند و منابع را به‌صورت پویا مدیریت نماید.

نتیجه‌گیری

Apache Hadoop با معماری توزیع‌شده و پردازش موازی انقلابی در مدیریت و تحلیل داده‌های حجیم ایجاد کرده است.

با ترکیب HDFS، YARN و MapReduce و بهره‌گیری از اکوسیستم گسترده‌ی ابزارهای جانبی، می‌توانید هر نوع پروژه Big Data را به‌راحتی اجرا کنید.

📢 نظر شما چیست؟ اگر شما هم اطلاعات و تجربه خوبی در مورد Apache Hadoop  در Data Engineering دارید خوشحال میشم در بخش نظرات، تجربه های ارزشمندتان را با ما به اشتراک بگذارید! 🚀

سؤالی درباره این مقاله داری؟

اگر نکته‌ای در این مقاله برات مبهم بود یا خواستی بیشتر بدونی، همین حالا برام بنویس تا دقیق و صمیمی پاسخت رو بدم — مثل یه گفت‌وگوی واقعی 💬

برو به صفحه پرسش و پاسخ

میثم راد

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *