SlideShare a Scribd company logo
‫فایل‬ ‫سیستم‬HDFS
‫رضایی‬‫ناصر‬
nasser.rezaei.novin@gmail.com
‫مقدمه‬
•‫کامپ‬ ‫تعدادی‬ ‫روی‬ ‫را‬ ‫آن‬ ‫تا‬ ‫است‬ ‫نیاز‬ ‫شود‬ ‫می‬‫بیشتر‬‫کامپیوتر‬ ‫سازی‬ ‫ذخیره‬ ‫ظرفیت‬ ‫از‬ ‫دیتاست‬ ‫یک‬ ‫اندازه‬ ‫که‬ ‫وقتی‬‫یوتر‬(node)‫مجزا‬
‫کنیم‬ ‫قسمت‬.
•‫ش‬ ‫توزیع‬ ‫فایل‬ ‫سیستم‬ ‫کنند‬ ‫می‬ ‫مدیریت‬ ‫ها‬ ‫ماشین‬ ‫از‬ ‫ای‬ ‫شبکه‬ ‫روی‬ ‫را‬ ‫سازی‬ ‫ذخیره‬ ‫فضای‬ ‫که‬ ‫هایی‬ ‫فایل‬ ‫سیستم‬ ‫به‬‫گویند‬ ‫می‬ ‫ده‬.
•‫شده‬ ‫توزیع‬ ‫فایل‬ ‫سیستم‬Hadoop،HDFS‫دارد‬ ‫نام‬.
‫احی‬‫ر‬‫ط‬HDFS
•HDFS‫است‬ ‫شده‬ ‫احی‬‫ر‬‫ط‬‫زیر‬ ‫مقاصد‬ ‫ای‬‫ر‬‫ب‬:
•‫بزرگ‬ ‫خیلی‬ ‫های‬ ‫فایل‬:‫پتابایتی‬ ‫حتی‬ ‫یا‬ ‫ابایتی‬‫ر‬‫ت‬ ،‫گیگابایتی‬ ‫صدها‬ ‫های‬ ‫اندازه‬ ‫با‬ ‫هایی‬ ‫فایل‬.
•‫جریانی‬ ‫داده‬ ‫دسترسی‬:‫است‬ ‫نامحدود‬ ‫خواندن‬ ‫یکبار؛‬ ‫نوشتن‬ ‫الگوی‬ ،‫داده‬ ‫پردازش‬ ‫الگوی‬ ‫کاراترین‬.HDFS‫این‬ ‫از‬
‫پیش‬ ‫رکورد‬ ‫اولین‬ ‫خواندن‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫تاخیری‬ ‫از‬ ‫دیتاست‬ ‫تمام‬ ‫خواندن‬ ‫زمان‬ ‫این‬‫ر‬‫بناب‬ ،‫گیرد‬ ‫می‬ ‫الگو‬ ‫ایده‬‫تر‬ ‫مهم‬ ‫آید‬ ‫می‬
‫است‬.
•‫معمولی‬ ‫ار‬‫ز‬‫اف‬ ‫سخت‬:Hadoop‫ندارد‬ ‫ابی‬‫ر‬‫خ‬‫ابر‬‫ر‬‫ب‬ ‫در‬ ‫مقاومت‬ ‫با‬ ‫قیمت‬ ‫ان‬‫ر‬‫گ‬ ‫ارهای‬‫ز‬‫اف‬ ‫سخت‬ ‫به‬ ‫احتیاجی‬.HDFS‫به‬
‫های‬ ‫ابی‬‫ر‬‫خ‬ ‫مقابل‬ ‫در‬ ‫که‬ ‫است‬ ‫شده‬ ‫احی‬‫ر‬‫ط‬ ‫ای‬ ‫گونه‬node‫دهد‬ ‫ادامه‬ ‫را‬ ‫خود‬ ‫کار‬ ‫جزئی‬ ‫ای‬ ‫وقفه‬ ‫با‬‫حداکثر‬ ‫ها‬.
•HDFS‫نیست‬ ‫سازگار‬‫زیر‬ ‫موارد‬ ‫با‬:
•‫کم‬‫تاخیر‬ ‫با‬ ‫ها‬ ‫داده‬ ‫به‬ ‫دسترسی‬:‫خوبی‬ ‫به‬ ‫دارند‬ ‫کم‬‫تاخیر‬ ‫با‬ ‫دسترسی‬ ‫به‬ ‫نیاز‬ ‫که‬ ‫هایی‬ ‫اپلیکیشن‬‫با‬HDFS‫نمی‬ ‫کار‬
‫کنند‬.
•‫کوچک‬ ‫فایل‬ ‫زیاد‬ ‫تعداد‬:‫که‬ ‫جایی‬ ‫آن‬ ‫از‬namenode‫های‬ ‫فایل‬ ‫تعداد‬ ‫محدودیت‬ ‫شود‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫اصلی‬ ‫حافظه‬ ‫در‬
‫حافظه‬ ‫ان‬‫ز‬‫می‬ ‫به‬ ‫سیستم‬namenode‫دارد‬ ‫بستگی‬.
•‫تصادفی‬ ‫صورت‬ ‫به‬ ‫ها‬ ‫فایل‬ ‫در‬‫تغییر‬ ‫نویسنده؛‬ ‫چند‬:‫در‬ ‫ها‬ ‫فایل‬HDFS‫شوند‬ ‫می‬ ‫نوشته‬ ‫منبع‬ ‫یک‬ ‫توسط‬.‫همیشه‬
‫شود‬ ‫می‬ ‫اضافه‬ ‫فایل‬ ‫انتهای‬ ‫به‬ ‫محتویات‬(Append.)‫کرد‬ ‫ایجاد‬ ‫ات‬‫ر‬‫تغیی‬ ‫فایل‬ ‫از‬ ‫خاصی‬ ‫آفست‬ ‫در‬ ‫توان‬ ‫نمی‬.
‫مفاهیم‬HDFS
•Block:‫است‬ ‫دیسک‬ ‫در‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫واحد‬ ‫ترین‬ ‫کوچک‬ ‫بالک‬.‫معموال‬ ‫دیسک‬ ‫بالک‬512‫در‬ ‫است‬ ‫بایت‬
‫است‬ ‫دیسک‬ ‫بالک‬ ‫از‬ ‫ضریبی‬ ‫معموال‬ ‫فایل‬ ‫سیستم‬ ‫بالک‬ ‫که‬ ‫حالی‬.
•HDFS‫بزرگ‬ ‫اندازه‬ ‫با‬ ‫منتها‬ ‫دارد‬ ‫را‬ ‫بالک‬ ‫مفهوم‬ ‫هم‬128‫مگابایت‬(‫فرض‬ ‫پیش‬)‫در‬ ‫ها‬ ‫فایل‬ ،HDFS‫بالک‬ ‫اندازه‬ ‫به‬ ‫هایی‬ ‫قطعه‬ ‫در‬
‫شوند‬ ‫می‬ ‫ذخیره‬.‫کند‬ ‫نمی‬ ‫اشغال‬ ‫را‬ ‫آن‬ ‫تمام‬ ‫بالک‬ ‫از‬‫کمتر‬ ‫انداز‬ ‫با‬ ‫فایلی‬ ‫دیسکی‬ ‫تک‬ ‫فایل‬ ‫سیستم‬ ‫برخالف‬.‫ان‬‫این‬ ‫به‬ ‫بالک‬ ‫دازه‬
‫بال‬ ‫ابتدای‬ ‫به‬ ‫رسیدن‬ ‫زمان‬ ‫از‬‫بیشتر‬ ‫خیلی‬ ‫بایستی‬ ‫بالک‬ ‫تمام‬ ‫خواندن‬ ‫زمان‬ ‫که‬ ‫است‬ ‫بزرگ‬ ‫سیستم‬ ‫در‬ ‫دلیل‬‫باشد‬ ‫ک‬.
•‫محدودی‬ ‫تعداد‬ ‫در‬ ‫بالک‬‫هر‬ ،‫رود‬ ‫نمی‬ ‫بین‬ ‫از‬ ‫افزاری‬ ‫سخت‬ ‫های‬ ‫ابی‬‫ر‬‫خ‬ ‫در‬ ‫بالک‬ ‫اینکه‬ ‫از‬ ‫اطمینان‬ ‫ای‬‫ر‬‫ب‬(‫معموال‬3)‫مجزا‬ ‫ماشین‬
‫شود‬ ‫می‬ ‫کپی‬.
Namenode‫و‬Datanode
•:Namenode‫نام‬ ‫فضای‬(namespace)‫فای‬ ‫و‬ ‫ها‬ ‫کتوری‬‫دایر‬ ‫متادیتای‬ ‫و‬ ‫کند‬ ‫می‬ ‫مدیریت‬ ‫را‬ ‫فایل‬ ‫سیستم‬‫را‬ ‫ها‬ ‫ل‬
‫کند‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫فایل‬ ‫سیستم‬ ‫در‬.
•‫قالب‬ ‫در‬ ‫محلی‬ ‫دیسک‬ ‫در‬ ‫دائمی‬ ‫صورت‬ ‫به‬ ‫اطالعات‬ ‫این‬2‫شوند‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫فایل‬:namespace image‫و‬edit log‫همچنین‬ ،
namenode‫تمام‬datanode‫شناسد‬ ‫می‬ ‫را‬ ‫خاص‬ ‫فایل‬ ‫یک‬ ‫به‬ ‫مربوط‬ ‫های‬.
•Datanode:‫ش‬ ‫ذخیره‬ ‫های‬ ‫بالک‬ ‫گزارش‬ ‫ارائه‬ ‫و‬ ‫اخوانی‬‫ر‬‫ف‬ ‫هنگام‬ ‫در‬ ‫بالک‬ ‫بازیابی‬ ‫و‬ ‫داری‬ ‫نگه‬ ‫اش‬ ‫وظیفه‬‫در‬ ‫ده‬
‫به‬ ‫زمانی‬ ‫های‬ ‫فاصله‬namenode‫است‬.
‫از‬ ‫محافظت‬namenode
•‫بدون‬namenode‫گردد‬ ‫می‬ ‫بالاستفاده‬ ‫فایل‬ ‫سیستم‬.‫بایستی‬ ‫دلیل‬ ‫همین‬ ‫به‬namenode‫شدن‬ ‫اب‬‫ر‬‫خ‬ ‫از‬ ‫را‬
‫داشت‬ ‫برحذر‬.‫منظور‬ ‫بدین‬Hadoop‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫را‬ ‫امکان‬ ‫دو‬:
•1-‫سیستم‬ ‫متادیتای‬ ‫از‬ ‫گیری‬ ‫پشتیبان‬:‫شود‬ ‫می‬ ‫ذخیره‬ ‫متفاوت‬ ‫فایل‬ ‫های‬ ‫سیستم‬ ‫در‬ ‫که‬.
•2-‫از‬ ‫استفاده‬namenode‫ثانویه‬:‫یک‬ ‫مثل‬ ‫نامش‬ ‫برخالف‬ ‫که‬namenode‫کند‬ ‫نمی‬ ‫عمل‬.‫تصویر‬ ‫ادغام‬ ‫آن‬ ‫اصلی‬ ‫وظیفه‬
namenode‫با‬edit log‫اندازه‬ ‫تا‬ ‫است‬edit log‫نشود‬ ‫بزرگ‬ ‫خیلی‬.Namenode‫شود‬ ‫می‬ ‫ساخته‬ ‫مجزایی‬ ‫ماشین‬ ‫روی‬ ‫ثانویه‬.
‫بالک‬ ‫کردن‬ ‫کش‬
•‫اصلی‬ ‫حافظه‬ ‫در‬ ‫را‬ ‫شوند‬ ‫می‬ ‫دسترسی‬ ‫زیاد‬ ‫که‬ ‫هایی‬ ‫بالک‬ ‫توان‬ ‫می‬datanode‫کرد‬ ‫ذخیره‬.
•‫تواند‬ ‫می‬ ‫کار‬ ‫زمانبند‬Task‫روی‬ ‫را‬ ‫ها‬datanode‫اند‬ ‫کرده‬ ‫کش‬ ‫را‬ ‫بالک‬ ‫که‬ ‫کند‬ ‫ا‬‫ر‬‫اج‬ ‫هایی‬.
•‫بگیرد‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫منابع‬ ‫از‬ ‫استفاده‬ ‫و‬ ‫ها‬ ‫کش‬ ‫دسترسی‬ ‫مدیریت‬ ‫تواند‬ ‫می‬ ‫کش‬ ‫مخزن‬ ‫یک‬.
HDFS Federation‫و‬HA
•HDFS Federation:‫چند‬ ‫بزرگ‬ ‫خیلی‬ ‫کالسترهای‬ ‫در‬ ‫که‬ ‫دهد‬ ‫می‬ ‫را‬ ‫امکان‬ ‫این‬namenode‫هر‬ ‫و‬ ‫باشیم‬ ‫داشته‬
namenode‫بگیرد‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫فایل‬ ‫سیستم‬ ‫نام‬ ‫فضای‬ ‫از‬ ‫قسمتی‬ ‫مدیریت‬.‫یکی‬ ‫مثال‬/user‫کتوری‬‫دایر‬ ‫و‬ ‫ها‬ ‫فایل‬ ‫و‬
‫دیگری‬ ‫و‬ ‫آن‬ ‫درون‬ ‫های‬/share
•HDFS High Availability (HA):‫متادیتای‬ ‫کردن‬ ‫کپی‬ ‫کیب‬‫تر‬namenode‫از‬ ‫استفاده‬ ‫و‬ ‫فایل‬ ‫سیستم‬ ‫چند‬ ‫روی‬
namenode‫ساخت‬ ‫ای‬‫ر‬‫ب‬ ‫ثانویه‬checkpoint‫دادن‬ ‫دست‬ ‫از‬‫ابر‬‫ر‬‫ب‬ ‫در‬ ‫را‬ ‫سیستم‬namenode‫کند‬ ‫می‬ ‫بیمه‬.‫اگر‬ ‫اما‬
namenode‫بازیابی‬ ‫در‬‫تاخیر‬ ‫دلیل‬ ‫به‬ ‫سیستم‬ ‫بیفتد‬ ‫کار‬ ‫از‬namenode(‫تا‬ ‫بزرگ‬ ‫های‬ ‫سیستم‬ ‫در‬ ‫که‬30‫یا‬ ‫دقیقه‬
‫ببرد‬ ‫زمان‬ ‫تواند‬ ‫می‬‫بیشتر‬)‫شود‬ ‫می‬ ‫روبرو‬ ‫بزرگی‬ ‫مشکل‬ ‫با‬.
•Hadoop‫کردن‬ ‫اضافه‬ ‫با‬ ‫را‬ ‫مشکل‬ ‫این‬HA‫جفت‬ ‫یک‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬ ‫کرده‬ ‫حل‬namenode‫فعال‬ ‫های‬ ‫حالت‬ ‫در‬-‫کار‬ ‫به‬ ‫آماده‬
‫دارند‬ ‫وجود‬.‫که‬ ‫وقتی‬namenode‫شد‬ ‫مشکل‬ ‫دچار‬ ‫فعال‬namenode‫شود‬ ‫می‬ ‫اندازی‬ ‫راه‬ ‫توجه‬ ‫قابل‬‫تاخیر‬ ‫بدون‬ ‫کار‬ ‫به‬ ‫آماده‬.
•‫اندازی‬ ‫راه‬ ‫ای‬‫ر‬‫ب‬HA‫است‬ ‫الزم‬‫زیر‬ ‫ات‬‫ر‬‫تغیی‬ ‫بعضی‬.
•Namenode‫اک‬‫ر‬‫اشت‬ ‫ای‬‫ر‬‫ب‬ ‫اکی‬‫ر‬‫اشت‬ ‫حافظه‬ ‫دارای‬ ‫باید‬edit log‫باشد‬.edit log‫آخرین‬ ‫بازیابی‬ ‫ای‬‫ر‬‫ب‬ ‫افتادگی‬ ‫کار‬ ‫از‬ ‫هنگام‬ ‫در‬
‫وضعیت‬namenode‫شود‬ ‫می‬ ‫استفاده‬ ‫اصلی‬.
•Datanode‫دو‬‫هر‬ ‫به‬ ‫را‬ ‫ها‬ ‫بالک‬ ‫ارش‬‫ز‬‫گ‬ ‫باید‬ ‫ها‬namenode‫بدهند‬.
•Client‫ابی‬‫ر‬‫خ‬ ‫بتوانند‬ ‫باید‬ ‫ها‬namenode‫کنند‬ ‫مدیریت‬ ‫را‬.
•‫اکی‬‫ر‬‫اشت‬ ‫حافظه‬ ‫ای‬‫ر‬‫ب‬ ‫انتخاب‬ ‫دو‬HA‫دارد‬ ‫وجود‬:1-NFS Filer2-QJM
‫کردن‬ ‫قرنطینه‬ ‫و‬ ‫تشخیص‬namenode‫معیوب‬
•Failover:‫یک‬job‫هر‬ ‫در‬ ‫کوچک‬namenode‫ابی‬‫ر‬‫خ‬ ‫تشخیص‬ ‫اش‬ ‫وظیفه‬ ‫که‬ ‫است‬namenode‫است‬.
Failover‫از‬ ‫معموال‬ ‫ها‬ZooKeeper‫شدن‬ ‫معیوب‬ ‫تشخیص‬ ‫ای‬‫ر‬‫ب‬namenode‫کنند‬ ‫می‬ ‫استفاده‬.
•Fencing:‫ناخواسته‬ ‫ات‬‫ر‬‫تغیی‬ ‫ایجاد‬ ‫مانع‬ ‫که‬ ‫است‬ ‫متدی‬namenode‫موجب‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫معیوب‬
‫شود‬ ‫می‬ ،‫گردد‬‫کالستر‬ ‫در‬ ‫مشکل‬.
‫رابط‬Command-Line
•‫اندازی‬ ‫راه‬ ‫از‬ ‫پس‬Hadoop‫با‬ ‫کار‬ ‫ای‬‫ر‬‫ب‬ ‫مختلفی‬ ‫های‬ ‫رابط‬ ‫از‬ ‫توان‬ ‫می‬ ‫سیستم‬ ‫روی‬‫استفاده‬ ‫فایل‬ ‫سیستم‬
‫کرد‬.‫آن‬ ‫ترین‬ ‫مهم‬Command line‫است‬.
•‫فایل‬ ‫سیستم‬ ‫ابتدایی‬ ‫های‬ ‫فرمان‬ ‫از‬ ‫تعدادی‬:
•fs‫فایل‬ ‫سیستم‬ ‫فرمان‬ ‫خط‬Hadoop‫کند‬ ‫می‬ ‫اخوانی‬‫ر‬‫ف‬ ‫را‬‫ج‬ ‫خود‬ ‫در‬ ‫فایل‬ ‫سیستم‬ ‫در‬ ‫کار‬ ‫ای‬‫ر‬‫ب‬ ‫دستور‬‫زیر‬ ‫تعدادی‬ ‫که‬‫ای‬
‫است‬ ‫داده‬.
• % hadoop fs -copyFromLocal input/docs/quangleLocal.txt /user/tom/quangleHDFS.txt
•‫محلی‬‫مسیر‬ ‫از‬ ‫را‬ ‫فایل‬(‫پوشه‬input)‫روی‬ ‫شده‬ ‫تعیین‬ ‫آدرس‬ ‫به‬HDFS‫کند‬ ‫می‬ ‫منتقل‬.
• % hadoop fs -copyToLocal quangleHDFS.txt quangleLocal.txt
•‫کالستر‬ ‫از‬ ‫را‬ ‫فایل‬Hadoop‫کند‬ ‫می‬ ‫کپی‬ ‫محلی‬ ‫فایل‬ ‫سیستم‬ ‫به‬.
• % hadoop fs -mkdir books ‫سازد‬ ‫می‬ ‫فایل‬ ‫سیستم‬ ‫در‬ ‫پوشه‬ ‫یک‬.
• % hadoop fs -ls .
• Found 2 items
• drwxr-xr-x - tom supergroup 0 2014-10-04 13:22 books
• -rw-r--r-- 1 tom supergroup 119 2014-10-04 13:21 quangleHDFS.txt
•‫خروجی‬ ‫در‬ ‫اول‬ ‫ستون‬namenode‫فایل‬ ‫از‬ ‫ها‬ ‫کپی‬ ‫تعداد‬ ‫دوم‬ ‫ستون‬ ،‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫فایل‬ ‫های‬ ‫دسترسی‬(‫پ‬ ‫ای‬‫ر‬‫ب‬‫وشه‬
‫ها‬‫در‬ ‫چون‬namenode‫است‬ ‫معنی‬ ‫بی‬ ‫ستون‬ ‫این‬ ‫دارند‬ ‫ار‬‫ر‬‫ق‬)‫مشخص‬ ‫را‬ ‫آن‬ ‫گروه‬ ‫و‬‫کاربر‬ ‫چهارم‬ ‫و‬ ‫سوم‬ ‫ستون‬ ،‫کن‬ ‫می‬‫د‬.
‫نام‬ ‫و‬‫تغییر‬ ‫آخرین‬ ‫زمان‬ ‫و‬ ‫تاریخ‬ ،‫بایت‬ ‫به‬ ‫اندازه‬ ‫ها‬ ‫ستون‬ ‫بقیه‬‫پوشه‬-‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫فایل‬.
‫فایل‬ ‫سیستم‬ ‫های‬ ‫دسترسی‬
•‫یک‬ ‫پوشه‬ ‫یا‬ ‫فایل‬‫هر‬owner،group‫و‬mode‫دارد‬.mode‫کاربر‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫است‬ ‫هایی‬ ‫دسترسی‬ ‫مجموعه‬
‫هستند‬ ‫مالک‬ ‫کاربری‬ ‫گروه‬ ‫عضو‬ ‫نه‬ ‫و‬ ‫هستند‬ ‫مالک‬ ‫نه‬ ‫که‬ ‫انی‬‫ر‬‫کارب‬ ‫و‬ ‫مالک‬ ‫کاربری‬ ‫گروه‬ ،‫مالک‬‫نظر‬ ‫در‬
‫شود‬ ‫می‬ ‫گرفته‬.
•‫است‬ ‫آمده‬‫زیر‬ ‫جدول‬ ‫در‬ ‫ها‬ ‫پوشه‬ ‫و‬ ‫فایل‬ ‫های‬ ‫دسترسی‬:
‫پوشه‬ ‫فایل‬ ‫دسترسی‬
‫پوشه‬ ‫محتویات‬ ‫خواندن‬ ‫فایل‬ ‫خواندن‬ ‫خواندن‬(r)
‫پو‬ ‫های‬ ‫فایل‬ ‫کردن‬ ‫اضافه‬ ‫و‬ ‫حذف‬‫شه‬ ‫نوشتن‬‫فای‬ ‫در‬‫ل‬ ‫نوشتن‬(w)
‫فرزندان‬ ‫به‬ ‫دسترسی‬ ‫وجود‬‫ندارد‬ ‫کردن‬ ‫ا‬‫ر‬‫اج‬(x)
‫فایل‬ ‫های‬ ‫سیستم‬Hadoop
•Hadoop‫که‬ ‫است‬ ‫کرده‬ ‫تعریف‬ ‫فایل‬ ‫سیستم‬ ‫نوع‬ ‫چند‬HDFS‫است‬ ‫آن‬ ‫نمونه‬ ‫یک‬ ‫تنها‬.
•Hadoop‫قالب‬ ‫از‬URI‫کند‬ ‫می‬ ‫استفاده‬ ‫فایل‬ ‫سیستم‬ ‫کردن‬ ‫پیدا‬ ‫ای‬‫ر‬‫ب‬.‫کرد‬ ‫لیست‬ ‫ای‬‫ر‬‫ب‬ ‫مثال‬‫های‬ ‫فایل‬ ‫ن‬
root‫کنیم‬ ‫می‬ ‫وارد‬ ‫را‬‫زیر‬ ‫دستور‬ ‫محلی‬ ‫دیسک‬ ‫روی‬:
• % hadoop fs –ls file:///
‫فایل‬ ‫های‬ ‫سیستم‬Hadoop
‫توضیحات‬ ‫پیاده‬‫سازی‬Java(‫تحت‬org.apache.hadoop) ‫قالب‬URI ‫فایل‬ ‫سیستم‬
‫سیستم‬‫کنترل‬ ‫با‬ ‫محلی‬ ‫دیسک‬ ‫ای‬‫ر‬‫ب‬ ‫فایلی‬checksum‫محلی‬ fs.LocalFileSystem file Local
‫توزیع‬ ‫فایل‬ ‫سیستم‬‫شده‬Hadoop.‫با‬ ‫شده‬ ‫هماهنگ‬MapReduce hdfs.DistributedFileSystem hdfs HDFS
‫سیستم‬‫از‬ ‫خواندن‬ ‫امکان‬ ‫که‬ ‫فایلی‬HDFS‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫را‬ ‫هویت‬ ‫از‬‫ر‬‫اح‬ ‫امکان‬ ‫با‬. hdfs.web.WebHdfsFileSystem webhdfs WebHDFS
‫نسخه‬HTTPS‫از‬WebHDFS hdfs.web.SWebHdfsFileSystem swebhdfs Secure WebHDFS
‫سیستم‬‫را‬ ‫ها‬ ‫فایل‬ ‫و‬ ‫شود‬ ‫می‬ ‫سوار‬ ‫دیگری‬ ‫فایل‬ ‫سیستم‬ ‫روی‬ ‫که‬ ‫فایلی‬‫کاستن‬ ‫ای‬‫ر‬‫ب‬
‫توسط‬ ‫شده‬ ‫استفاده‬ ‫حافظه‬ ‫از‬namenode‫کند‬ ‫می‬ ‫آرشیو‬.
fs.HarFileSystem har HAR
‫یک‬‫فایل‬ ‫های‬ ‫سیستم‬‫سایر‬ ‫ای‬‫ر‬‫ب‬ ‫کالینت‬ ‫سمت‬ ‫اتصال‬ ‫جدول‬Hadoop.‫معموال‬
‫به‬ ‫اتصال‬ ‫نقطه‬ ‫ساختن‬ ‫ای‬‫ر‬‫ب‬Federated namenode‫می‬ ‫استفاده‬‫شود‬.
viewfs.ViewFileSystem viewfs View
‫با‬ ‫که‬ ‫فایلی‬ ‫سیستم‬FTP‫شود‬ ‫می‬ ‫گردانده‬‫بر‬ fs.ftp.FTPFileSystem ftp FTP
‫سیستم‬‫فایل‬Amazon S3 fs.s3a.S3AFileSystem s3a S3
‫سیستم‬‫فایل‬Microsoft Azure fs.azure.NativeAzureFileSystem wasb Azure
‫سیستم‬‫فایل‬OpenStack Swift fs.swift.snative.SwiftNativeFileSystem swift Swift
‫رابط‬
1
‫های‬HDFS
•Hadoop‫است‬ ‫شده‬ ‫نوشته‬ ‫جاوا‬ ‫به‬.
•‫های‬ ‫رابط‬‫در‬ ‫زیادی‬Hadoop‫به‬ ‫دسترسی‬ ‫ای‬‫ر‬‫ب‬HDFS‫اند‬ ‫شده‬ ‫نوشته‬.
•HTTP:‫به‬ ‫دسترسی‬ ‫امکان‬ ‫جاوا‬‫غیر‬ ‫های‬ ‫برنامه‬ ‫به‬ ‫که‬ ‫است‬ ‫رابطی‬HDFS‫پروتکل‬ ‫طریق‬ ‫از‬ ‫را‬
HDFS REST API‫دهد‬ ‫می‬.‫به‬ ‫دسترسی‬ ‫ای‬‫ر‬‫ب‬ ‫راه‬ ‫دو‬HDFS‫طریق‬ ‫از‬HTTP‫دارد‬ ‫وجود‬.
•‫مستقیم‬:‫زمینه‬ ‫پس‬ ‫های‬ ‫پردازش‬(daemons)HDFS‫های‬ ‫درخواست‬ ‫مستقیم‬ ‫صورت‬ ‫به‬HTTP‫رسیدگی‬ ‫را‬
‫کنند‬ ‫می‬.
•‫غیرمستقیم‬:‫طریق‬ ‫از‬proxy.
•C:Hadoop‫کتابخانه‬ ‫یک‬C‫نام‬ ‫به‬libfs‫به‬ ‫دسترسی‬ ‫ای‬‫ر‬‫ب‬HDFS‫فایل‬ ‫های‬ ‫سیستم‬‫سایر‬ ‫و‬
Hadoop‫از‬ ‫که‬ ‫است‬ ‫کرده‬ ‫اهم‬‫ر‬‫ف‬
2
JNI‫فایل‬ ‫سیستم‬ ‫اخوانی‬‫ر‬‫ف‬ ‫ای‬‫ر‬‫ب‬client‫کند‬ ‫می‬ ‫استفاده‬ ‫جاوا‬.
‫همچنین‬libwebhdfs‫رابط‬ ‫از‬ ‫که‬webhdfs‫است‬ ‫شده‬ ‫معرفی‬ ،‫کند‬ ‫می‬ ‫استفاده‬.1 Interface
‫رابط‬Java
•‫فایل‬ ‫های‬ ‫سیستم‬ ‫ای‬‫ر‬‫ب‬ ‫شده‬ ‫شخصی‬ ‫کدهای‬ ‫جاوا‬ ‫کاربری‬ ‫رابط‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫توان‬ ‫می‬Hadoop‫نوشت‬.
•‫دستور‬‫زیر‬ ‫مثال‬cat‫در‬ ‫فایل‬ ‫یک‬ ‫محتویات‬ ‫نمایش‬ ‫ای‬‫ر‬‫ب‬HDFS‫استاندار‬ ‫استریم‬ ‫به‬ ‫فایل‬ ‫اتصال‬ ‫طریق‬ ‫از‬ ‫را‬‫د‬
‫کند‬ ‫می‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫خروجی‬.
•‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫جاوا‬URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());‫فایل‬ ‫سیستم‬
HDFS‫بالک‬ ‫در‬ ‫را‬ ‫آن‬ ‫دلیل‬ ‫همین‬ ‫به‬ ‫پذیرد‬ ‫انجام‬ ‫یکبار‬ ‫باید‬ ‫اخوانی‬‫ر‬‫ف‬ ‫این‬ ،‫شناسد‬ ‫می‬ ‫را‬static‫ایم‬ ‫داده‬ ‫ار‬‫ر‬‫ق‬.
• % export HADOOP_CLASSPATH=hadoop-examples.jar ‫فرمان‬ ‫خط‬ ‫در‬ ‫اخوانی‬‫ر‬‫ف‬:
• % hadoop URLCat hdfs://localhost/user/tom/quangle.txt
1
1
Source codes at: https://github.com/tomwhite/hadoop-book
‫فایل‬ ‫خواندن‬ ‫ساختار‬
‫فایل‬ ‫خواندن‬ ‫ساختار‬
1-‫تابع‬ ‫زدن‬ ‫صدا‬ ‫با‬ ‫کالینت‬open()‫شی‬ ‫در‬FileSystem‫زند‬ ‫می‬ ‫صدا‬ ‫را‬ ‫بخواند‬ ‫میخواهد‬ ‫که‬ ‫را‬ ‫فایلی‬ ،.
2-DistributedFileSystem،namenode‫طریق‬ ‫از‬ ‫را‬RPC
1
‫می‬ ‫صدا‬ ‫فایل‬ ‫های‬ ‫بالک‬ ‫اولین‬ ‫مکان‬ ‫کردن‬ ‫مشخص‬ ‫ای‬‫ر‬‫ب‬
‫زند‬.،‫بالک‬‫هر‬ ‫ای‬‫ر‬‫ب‬namenode‫آدرس‬datanode‫گرداند‬ ‫برمی‬ ‫را‬ ‫دارند‬ ‫را‬ ‫بالک‬ ‫آن‬ ‫از‬ ‫کپی‬ ‫یک‬ ‫که‬ ‫هایی‬.
3-DistributedFileSystem‫یک‬FSDataInputStream‫گرداند‬ ‫می‬‫بر‬ ‫فایل‬ ‫خواندن‬ ‫ای‬‫ر‬‫ب‬ ‫کالینت‬ ‫به‬ ‫را‬.
4-‫کالینت‬read()‫زند‬ ‫می‬ ‫صدا‬ ‫استریم‬ ‫روی‬ ‫را‬.‫طریق‬ ‫از‬ ‫و‬DFSInputStream‫ترین‬ ‫نزدیک‬ ‫به‬datanode‫می‬ ‫وصل‬
‫شود‬.
5-،‫رسیم‬ ‫می‬ ‫بالک‬ ‫انتهای‬ ‫به‬ ‫وقتی‬DFSInputStream‫به‬ ‫اتصال‬datanode‫بهترین‬ ‫سپس‬ ‫و‬ ‫بندد‬ ‫می‬ ‫را‬datanode‫را‬
‫کند‬ ‫می‬ ‫پیدا‬ ‫بعدی‬ ‫بالک‬ ‫ای‬‫ر‬‫ب‬.
6-،‫کرد‬ ‫تمام‬ ‫را‬ ‫خواندن‬ ‫کالینت‬ ‫که‬ ‫وقتی‬close()‫از‬ ‫را‬FSDataInputStream‫زند‬ ‫می‬ ‫صدا‬.
•‫خواندن‬ ‫طول‬ ‫در‬‫اگر‬DFSInputStream‫از‬ ‫خواندن‬ ‫در‬ ‫خطایی‬ ‫با‬datanode‫می‬ ‫بازیابی‬ ‫را‬ ‫بعدی‬ ‫بالک‬ ‫ترین‬ ‫نزدیک‬ ،‫شد‬ ‫مواجه‬
‫از‬ ‫و‬ ‫کند‬datanode‫کند‬ ‫می‬‫صرفنظر‬ ‫بعدی‬ ‫های‬ ‫بالک‬ ‫ای‬‫ر‬‫ب‬ ‫است‬ ‫شده‬ ‫مواجه‬ ‫خطا‬ ‫با‬ ‫که‬ ‫ی‬.
•DFSInputStream،checksum‫کند‬ ‫می‬ ‫چک‬‫نیز‬ ‫را‬ ‫بالک‬.‫از‬ ‫دیگری‬ ‫کپی‬ ‫کند‬ ‫می‬ ‫سعی‬ ‫شد‬ ‫یافت‬ ‫ابی‬‫ر‬‫خ‬ ‫بالک‬‫اگر‬datanode
‫به‬ ‫را‬ ‫ابی‬‫ر‬‫خ‬ ‫و‬ ‫بخواند‬namenode‫کند‬ ‫ارش‬‫ز‬‫گ‬.
1
Remote Procedure Call
‫ای‬ ‫شبکه‬ ‫توپولوژی‬Hadoop
•Hadoop‫ترین‬ ‫نزدیک‬ ‫کند‬ ‫می‬ ‫سعی‬node‫را‬‫خواندن‬ ‫ای‬‫ر‬‫ب‬‫بالک‬‫کند‬ ‫معرفی‬.‫منظور‬ ‫بدین‬Hadoop
‫کند‬ ‫می‬ ‫تقسیم‬‫زیر‬ ‫های‬ ‫دسته‬ ‫به‬ ‫را‬ ‫ها‬ ‫پردازش‬:
•1-‫یک‬ ‫به‬ ‫متعلق‬ ‫های‬ ‫پردازش‬node.
•2-node‫یک‬ ‫مختلف‬ ‫های‬rack.
•3-node‫با‬ ‫هایی‬rack‫متفاوت‬.
•4-node‫متفاوت‬‫دیتاسنتر‬ ‫با‬ ‫هایی‬(Hadoop‫ندارد‬ ‫را‬ ‫قابلیت‬ ‫این‬ ‫هنوز‬.)
‫فایل‬ ‫در‬ ‫نوشتن‬ ‫ساختار‬
‫فایل‬ ‫در‬ ‫نوشتن‬ ‫ساختار‬
1-‫زدن‬ ‫صدا‬ ‫با‬ ‫را‬ ‫فایل‬ ‫کالینت‬create()‫از‬DistributedFileSystem‫سازد‬ ‫می‬.DistributedFileSystem‫یک‬RPC‫صدا‬ ‫ای‬‫ر‬‫ب‬ ‫را‬
‫زدن‬namenode‫در‬ ‫جدیدی‬ ‫فایل‬ ‫که‬ ‫سازد‬ ‫می‬namespace‫بسازد‬.
2-namenode‫س‬ ‫اجازه‬ ‫کالینت‬ ‫و‬ ‫است‬ ‫نداشته‬ ‫وجود‬ ‫قبل‬ ‫از‬ ‫فایل‬ ‫که‬ ‫شود‬ ‫مطمئن‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫انجام‬ ‫مختلفی‬ ‫های‬ ‫بررسی‬‫اخت‬
‫دارد‬ ‫را‬ ‫فایل‬.DistributedFileSystem‫یک‬FSDataOutputStream‫گرداند‬ ‫می‬‫بر‬ ‫اطالعات‬ ‫نوشتن‬ ‫ای‬‫ر‬‫ب‬ ‫کالینت‬ ‫به‬ ‫را‬.
3-‫نویسد‬ ‫می‬ ‫را‬ ‫ها‬ ‫داده‬ ‫کالینت‬ ‫که‬ ‫وقتی‬DFSOutputStream‫ن‬ ‫به‬ ‫داخلی‬ ‫صف‬ ‫یک‬ ‫در‬ ‫که‬ ‫کند‬ ‫می‬ ‫تقسیم‬ ‫هایی‬ ‫بسته‬ ‫به‬ ‫را‬ ‫آن‬‫ام‬
data queue‫شود‬ ‫می‬ ‫نوشته‬.Data queue‫توسط‬DataStreamer‫از‬ ‫لیستی‬ ‫که‬ ‫شود‬ ‫می‬ ‫خوانده‬datanode‫ای‬‫ر‬‫ب‬ ‫مناسب‬ ‫های‬
‫دهد‬ ‫می‬ ‫را‬ ‫ها‬ ‫کپی‬ ‫داری‬ ‫نگه‬.
4-‫لیست‬datanode‫یک‬ ‫ها‬pipeline‫سازد‬ ‫می‬ ‫را‬.‫تعداد‬datanode‫های‬pipeline‫ار‬‫ر‬‫تک‬ ‫درجه‬ ‫اندازه‬ ‫به‬(replication level)
‫فرض‬ ‫پیش‬ ‫طور‬ ‫به‬ ‫که‬ ‫است‬3‫است‬.‫اولین‬ ‫از‬ ‫سپس‬datanode‫در‬pipeline‫شود‬ ‫می‬ ‫استریم‬ ‫آن‬ ‫آخرین‬ ‫تا‬.‫به‬ ‫دومی‬ ،‫دومی‬ ‫به‬ ‫اولی‬
‫و‬ ‫سومی‬...
5-DFSOutputStream‫صف‬ ‫یک‬ack‫توسط‬ ‫شدن‬ ‫شناخته‬‫منتظر‬ ‫که‬ ‫هایی‬ ‫بسته‬ ‫لیست‬ ‫آن‬ ‫در‬ ‫که‬ ‫سازد‬ ‫می‬datanode‫هستند‬ ‫ها‬
‫شود‬ ‫می‬ ‫وارد‬.‫لیست‬ ‫از‬ ‫صورتی‬ ‫در‬ ‫بسته‬ ‫یک‬ack‫تمام‬ ‫توسط‬ ‫که‬ ‫شود‬ ‫می‬ ‫حذف‬datanode‫های‬pipeline‫باشد‬ ‫شده‬ ‫شناسایی‬.
6-‫کند‬ ‫می‬ ‫تمام‬ ‫را‬ ‫ها‬ ‫داده‬ ‫نوشتن‬ ‫کالینت‬ ‫که‬ ‫وقتی‬close()‫کند‬ ‫می‬ ‫اخوانی‬‫ر‬‫ف‬ ‫استریم‬ ‫روی‬ ‫را‬.
7-‫روی‬ ‫باقیمانده‬ ‫های‬ ‫بسته‬ ‫تمام‬ ‫عمل‬ ‫این‬pipeline‫به‬ ‫مربوط‬datanode‫به‬ ‫را‬datanode‫بسته‬ ‫شدن‬ ‫شناخته‬‫منتظر‬ ‫و‬ ‫فرستد‬ ‫می‬
‫با‬ ‫ارتباط‬ ‫از‬ ‫قبل‬ ‫ها‬namenode‫شود‬ ‫می‬ ‫فایل‬ ‫تکمیل‬ ‫اعالن‬ ‫ای‬‫ر‬‫ب‬.Namenode‫اند‬ ‫شده‬ ‫ساخته‬ ‫هایی‬ ‫بالک‬ ‫چه‬ ‫داند‬ ‫می‬ ‫قبل‬ ‫از‬.
‫بالک‬ ‫ار‬‫ر‬‫تک‬ ‫سیاست‬
•‫همان‬ ‫در‬ ‫معموال‬ ‫بالک‬ ‫اولین‬node‫کالس‬ ‫از‬ ‫خارج‬ ‫کالینت‬‫اگر‬ ‫یا‬ ‫است‬ ‫فرستاده‬ ‫را‬ ‫نوشتن‬ ‫درخواست‬ ‫که‬ ‫شود‬ ‫می‬ ‫نوشته‬ ‫ی‬‫بود‬‫تر‬
‫یک‬ ‫در‬node‫شود‬ ‫می‬ ‫نوشته‬ ‫تصادفی‬.
•‫در‬ ‫دوم‬ ‫بالک‬rack‫از‬‫غیر‬ ‫دیگری‬rack‫اولین‬node‫شود‬ ‫می‬ ‫نوشته‬.
•‫در‬ ‫سوم‬ ‫بالک‬node‫از‬ ‫تصادفی‬rack‫به‬ ‫مربوط‬node‫شود‬ ‫می‬ ‫نوشته‬ ‫دوم‬.
•‫در‬ ‫بعد‬ ‫های‬ ‫بالک‬node‫شود‬ ‫می‬ ‫نوشته‬‫کالستر‬ ‫روی‬ ‫تصادفی‬ ‫های‬.
‫موازی‬ ‫کپی‬
•‫دستور‬ ‫از‬ ‫توان‬ ‫می‬distcp‫موازی‬ ‫کپی‬ ‫ای‬‫ر‬‫ب‬(‫نخی‬ ‫چند‬)‫کرد‬ ‫استفاده‬.‫کر‬ ‫کپی‬ ‫ای‬‫ر‬‫ب‬ ‫دستور‬ ‫این‬ ‫از‬ ‫توان‬ ‫می‬ ‫مثال‬ ‫ای‬‫ر‬‫ب‬‫فایل‬ ‫دن‬
‫کرد‬ ‫استفاده‬‫زیر‬ ‫شیوه‬ ‫به‬ ‫ها‬ ‫پوشه‬ ‫های‬:
• % hadoop distcp dir1 dir2
•‫از‬distcp‫شود‬ ‫می‬ ‫استفاده‬ ‫گرفتن‬ ‫آپ‬ ‫بک‬ ‫یا‬ ‫کالسترها‬ ‫بین‬ ‫اطالعات‬ ‫انتقال‬ ‫ای‬‫ر‬‫ب‬ ‫معموال‬.
• % hadoop distcp -update -delete -p hdfs://namenode1/foo hdfs://namenode2/foo
•Hadoop‫باش‬ ‫شده‬ ‫توزیع‬ ‫یکنواخت‬ ‫صورت‬ ‫به‬‫کالستر‬‫تاسر‬‫ر‬‫س‬ ‫در‬ ‫ای‬ ‫داده‬ ‫های‬ ‫بالک‬ ‫که‬ ‫کند‬ ‫می‬ ‫عمل‬ ‫بهینه‬ ‫زمانی‬‫ند‬.
‫منابع‬
• White, Tom. Hadoop: The definitive guide, 4th edition. " O'Reilly Media, Inc.", 2015.

More Related Content

PDF
آشنایی با Hadoop
PDF
ورودی خروجی Hadoop
PDF
Yarn مروری بر
PDF
مدل MapReduce
PDF
Introduction to Apache Hadoop in Persian - آشنایی با هدوپ
PDF
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
PDF
بیگ دیتا
PDF
تشخیص انجمن در مقیاس کلان داده
آشنایی با Hadoop
ورودی خروجی Hadoop
Yarn مروری بر
مدل MapReduce
Introduction to Apache Hadoop in Persian - آشنایی با هدوپ
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
بیگ دیتا
تشخیص انجمن در مقیاس کلان داده

What's hot (8)

PDF
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
PDF
Hadoop Case Studies in the Real World in Persian - کاربردهای هدوپ در دنیای واقعی
PDF
Big Data Processing in Cloud Computing Environments
PDF
Recovery in gnu/linux
PPTX
PDF
آموزش دیتاگارد در اوراکل
PPTX
PDF
Apache spark
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Hadoop Case Studies in the Real World in Persian - کاربردهای هدوپ در دنیای واقعی
Big Data Processing in Cloud Computing Environments
Recovery in gnu/linux
آموزش دیتاگارد در اوراکل
Apache spark
Ad

Similar to سیستم فایل HDFS (20)

PDF
Ceph: A Powerful, Scalable, and Flexible Storage Solution
PDF
how upgrade ceph
PDF
how enable ceph dashboard
PDF
rbdmap in ceph
PDF
Pg autoscaling in ceph
PDF
Rbdmap ceph realease 0.2
PDF
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
DOCX
PDF
Everything you need to know about computer
PDF
Everything you need to know about computer
PDF
Everything you need about basics of computer
PDF
انواع حملات در شبکه های کامپیوتری.pdf
PDF
Fo it 94-11-database
PDF
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬
PDF
Ossec و Wazuh
PPTX
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir
PPSX
PDF
Supervisor
Ceph: A Powerful, Scalable, and Flexible Storage Solution
how upgrade ceph
how enable ceph dashboard
rbdmap in ceph
Pg autoscaling in ceph
Rbdmap ceph realease 0.2
طراحی سیستم های اطلاعاتی بر مبنای قابلیت های Nosql بانک های اطلاعاتی
Everything you need to know about computer
Everything you need to know about computer
Everything you need about basics of computer
انواع حملات در شبکه های کامپیوتری.pdf
Fo it 94-11-database
‫‪Wazuh‬‬ ‫و‬ ‫‪Ossec‬‬ ‫‪Wazuh‬‬ ‫به‬ ‫‪ossec‬‬ ‫از‬ ‫مهاجرت‬ ‫نحوه‬ ‫همچنین‬
Ossec و Wazuh
06 hpc library_fundamentals_of_parallelism_and_code_optimization-www.astek.ir
Supervisor
Ad

سیستم فایل HDFS

  • 2. ‫مقدمه‬ •‫کامپ‬ ‫تعدادی‬ ‫روی‬ ‫را‬ ‫آن‬ ‫تا‬ ‫است‬ ‫نیاز‬ ‫شود‬ ‫می‬‫بیشتر‬‫کامپیوتر‬ ‫سازی‬ ‫ذخیره‬ ‫ظرفیت‬ ‫از‬ ‫دیتاست‬ ‫یک‬ ‫اندازه‬ ‫که‬ ‫وقتی‬‫یوتر‬(node)‫مجزا‬ ‫کنیم‬ ‫قسمت‬. •‫ش‬ ‫توزیع‬ ‫فایل‬ ‫سیستم‬ ‫کنند‬ ‫می‬ ‫مدیریت‬ ‫ها‬ ‫ماشین‬ ‫از‬ ‫ای‬ ‫شبکه‬ ‫روی‬ ‫را‬ ‫سازی‬ ‫ذخیره‬ ‫فضای‬ ‫که‬ ‫هایی‬ ‫فایل‬ ‫سیستم‬ ‫به‬‫گویند‬ ‫می‬ ‫ده‬. •‫شده‬ ‫توزیع‬ ‫فایل‬ ‫سیستم‬Hadoop،HDFS‫دارد‬ ‫نام‬.
  • 3. ‫احی‬‫ر‬‫ط‬HDFS •HDFS‫است‬ ‫شده‬ ‫احی‬‫ر‬‫ط‬‫زیر‬ ‫مقاصد‬ ‫ای‬‫ر‬‫ب‬: •‫بزرگ‬ ‫خیلی‬ ‫های‬ ‫فایل‬:‫پتابایتی‬ ‫حتی‬ ‫یا‬ ‫ابایتی‬‫ر‬‫ت‬ ،‫گیگابایتی‬ ‫صدها‬ ‫های‬ ‫اندازه‬ ‫با‬ ‫هایی‬ ‫فایل‬. •‫جریانی‬ ‫داده‬ ‫دسترسی‬:‫است‬ ‫نامحدود‬ ‫خواندن‬ ‫یکبار؛‬ ‫نوشتن‬ ‫الگوی‬ ،‫داده‬ ‫پردازش‬ ‫الگوی‬ ‫کاراترین‬.HDFS‫این‬ ‫از‬ ‫پیش‬ ‫رکورد‬ ‫اولین‬ ‫خواندن‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫تاخیری‬ ‫از‬ ‫دیتاست‬ ‫تمام‬ ‫خواندن‬ ‫زمان‬ ‫این‬‫ر‬‫بناب‬ ،‫گیرد‬ ‫می‬ ‫الگو‬ ‫ایده‬‫تر‬ ‫مهم‬ ‫آید‬ ‫می‬ ‫است‬. •‫معمولی‬ ‫ار‬‫ز‬‫اف‬ ‫سخت‬:Hadoop‫ندارد‬ ‫ابی‬‫ر‬‫خ‬‫ابر‬‫ر‬‫ب‬ ‫در‬ ‫مقاومت‬ ‫با‬ ‫قیمت‬ ‫ان‬‫ر‬‫گ‬ ‫ارهای‬‫ز‬‫اف‬ ‫سخت‬ ‫به‬ ‫احتیاجی‬.HDFS‫به‬ ‫های‬ ‫ابی‬‫ر‬‫خ‬ ‫مقابل‬ ‫در‬ ‫که‬ ‫است‬ ‫شده‬ ‫احی‬‫ر‬‫ط‬ ‫ای‬ ‫گونه‬node‫دهد‬ ‫ادامه‬ ‫را‬ ‫خود‬ ‫کار‬ ‫جزئی‬ ‫ای‬ ‫وقفه‬ ‫با‬‫حداکثر‬ ‫ها‬. •HDFS‫نیست‬ ‫سازگار‬‫زیر‬ ‫موارد‬ ‫با‬: •‫کم‬‫تاخیر‬ ‫با‬ ‫ها‬ ‫داده‬ ‫به‬ ‫دسترسی‬:‫خوبی‬ ‫به‬ ‫دارند‬ ‫کم‬‫تاخیر‬ ‫با‬ ‫دسترسی‬ ‫به‬ ‫نیاز‬ ‫که‬ ‫هایی‬ ‫اپلیکیشن‬‫با‬HDFS‫نمی‬ ‫کار‬ ‫کنند‬. •‫کوچک‬ ‫فایل‬ ‫زیاد‬ ‫تعداد‬:‫که‬ ‫جایی‬ ‫آن‬ ‫از‬namenode‫های‬ ‫فایل‬ ‫تعداد‬ ‫محدودیت‬ ‫شود‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫اصلی‬ ‫حافظه‬ ‫در‬ ‫حافظه‬ ‫ان‬‫ز‬‫می‬ ‫به‬ ‫سیستم‬namenode‫دارد‬ ‫بستگی‬. •‫تصادفی‬ ‫صورت‬ ‫به‬ ‫ها‬ ‫فایل‬ ‫در‬‫تغییر‬ ‫نویسنده؛‬ ‫چند‬:‫در‬ ‫ها‬ ‫فایل‬HDFS‫شوند‬ ‫می‬ ‫نوشته‬ ‫منبع‬ ‫یک‬ ‫توسط‬.‫همیشه‬ ‫شود‬ ‫می‬ ‫اضافه‬ ‫فایل‬ ‫انتهای‬ ‫به‬ ‫محتویات‬(Append.)‫کرد‬ ‫ایجاد‬ ‫ات‬‫ر‬‫تغیی‬ ‫فایل‬ ‫از‬ ‫خاصی‬ ‫آفست‬ ‫در‬ ‫توان‬ ‫نمی‬.
  • 4. ‫مفاهیم‬HDFS •Block:‫است‬ ‫دیسک‬ ‫در‬ ‫نوشتن‬ ‫و‬ ‫خواندن‬ ‫واحد‬ ‫ترین‬ ‫کوچک‬ ‫بالک‬.‫معموال‬ ‫دیسک‬ ‫بالک‬512‫در‬ ‫است‬ ‫بایت‬ ‫است‬ ‫دیسک‬ ‫بالک‬ ‫از‬ ‫ضریبی‬ ‫معموال‬ ‫فایل‬ ‫سیستم‬ ‫بالک‬ ‫که‬ ‫حالی‬. •HDFS‫بزرگ‬ ‫اندازه‬ ‫با‬ ‫منتها‬ ‫دارد‬ ‫را‬ ‫بالک‬ ‫مفهوم‬ ‫هم‬128‫مگابایت‬(‫فرض‬ ‫پیش‬)‫در‬ ‫ها‬ ‫فایل‬ ،HDFS‫بالک‬ ‫اندازه‬ ‫به‬ ‫هایی‬ ‫قطعه‬ ‫در‬ ‫شوند‬ ‫می‬ ‫ذخیره‬.‫کند‬ ‫نمی‬ ‫اشغال‬ ‫را‬ ‫آن‬ ‫تمام‬ ‫بالک‬ ‫از‬‫کمتر‬ ‫انداز‬ ‫با‬ ‫فایلی‬ ‫دیسکی‬ ‫تک‬ ‫فایل‬ ‫سیستم‬ ‫برخالف‬.‫ان‬‫این‬ ‫به‬ ‫بالک‬ ‫دازه‬ ‫بال‬ ‫ابتدای‬ ‫به‬ ‫رسیدن‬ ‫زمان‬ ‫از‬‫بیشتر‬ ‫خیلی‬ ‫بایستی‬ ‫بالک‬ ‫تمام‬ ‫خواندن‬ ‫زمان‬ ‫که‬ ‫است‬ ‫بزرگ‬ ‫سیستم‬ ‫در‬ ‫دلیل‬‫باشد‬ ‫ک‬. •‫محدودی‬ ‫تعداد‬ ‫در‬ ‫بالک‬‫هر‬ ،‫رود‬ ‫نمی‬ ‫بین‬ ‫از‬ ‫افزاری‬ ‫سخت‬ ‫های‬ ‫ابی‬‫ر‬‫خ‬ ‫در‬ ‫بالک‬ ‫اینکه‬ ‫از‬ ‫اطمینان‬ ‫ای‬‫ر‬‫ب‬(‫معموال‬3)‫مجزا‬ ‫ماشین‬ ‫شود‬ ‫می‬ ‫کپی‬.
  • 5. Namenode‫و‬Datanode •:Namenode‫نام‬ ‫فضای‬(namespace)‫فای‬ ‫و‬ ‫ها‬ ‫کتوری‬‫دایر‬ ‫متادیتای‬ ‫و‬ ‫کند‬ ‫می‬ ‫مدیریت‬ ‫را‬ ‫فایل‬ ‫سیستم‬‫را‬ ‫ها‬ ‫ل‬ ‫کند‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫فایل‬ ‫سیستم‬ ‫در‬. •‫قالب‬ ‫در‬ ‫محلی‬ ‫دیسک‬ ‫در‬ ‫دائمی‬ ‫صورت‬ ‫به‬ ‫اطالعات‬ ‫این‬2‫شوند‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫فایل‬:namespace image‫و‬edit log‫همچنین‬ ، namenode‫تمام‬datanode‫شناسد‬ ‫می‬ ‫را‬ ‫خاص‬ ‫فایل‬ ‫یک‬ ‫به‬ ‫مربوط‬ ‫های‬. •Datanode:‫ش‬ ‫ذخیره‬ ‫های‬ ‫بالک‬ ‫گزارش‬ ‫ارائه‬ ‫و‬ ‫اخوانی‬‫ر‬‫ف‬ ‫هنگام‬ ‫در‬ ‫بالک‬ ‫بازیابی‬ ‫و‬ ‫داری‬ ‫نگه‬ ‫اش‬ ‫وظیفه‬‫در‬ ‫ده‬ ‫به‬ ‫زمانی‬ ‫های‬ ‫فاصله‬namenode‫است‬.
  • 6. ‫از‬ ‫محافظت‬namenode •‫بدون‬namenode‫گردد‬ ‫می‬ ‫بالاستفاده‬ ‫فایل‬ ‫سیستم‬.‫بایستی‬ ‫دلیل‬ ‫همین‬ ‫به‬namenode‫شدن‬ ‫اب‬‫ر‬‫خ‬ ‫از‬ ‫را‬ ‫داشت‬ ‫برحذر‬.‫منظور‬ ‫بدین‬Hadoop‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫را‬ ‫امکان‬ ‫دو‬: •1-‫سیستم‬ ‫متادیتای‬ ‫از‬ ‫گیری‬ ‫پشتیبان‬:‫شود‬ ‫می‬ ‫ذخیره‬ ‫متفاوت‬ ‫فایل‬ ‫های‬ ‫سیستم‬ ‫در‬ ‫که‬. •2-‫از‬ ‫استفاده‬namenode‫ثانویه‬:‫یک‬ ‫مثل‬ ‫نامش‬ ‫برخالف‬ ‫که‬namenode‫کند‬ ‫نمی‬ ‫عمل‬.‫تصویر‬ ‫ادغام‬ ‫آن‬ ‫اصلی‬ ‫وظیفه‬ namenode‫با‬edit log‫اندازه‬ ‫تا‬ ‫است‬edit log‫نشود‬ ‫بزرگ‬ ‫خیلی‬.Namenode‫شود‬ ‫می‬ ‫ساخته‬ ‫مجزایی‬ ‫ماشین‬ ‫روی‬ ‫ثانویه‬.
  • 7. ‫بالک‬ ‫کردن‬ ‫کش‬ •‫اصلی‬ ‫حافظه‬ ‫در‬ ‫را‬ ‫شوند‬ ‫می‬ ‫دسترسی‬ ‫زیاد‬ ‫که‬ ‫هایی‬ ‫بالک‬ ‫توان‬ ‫می‬datanode‫کرد‬ ‫ذخیره‬. •‫تواند‬ ‫می‬ ‫کار‬ ‫زمانبند‬Task‫روی‬ ‫را‬ ‫ها‬datanode‫اند‬ ‫کرده‬ ‫کش‬ ‫را‬ ‫بالک‬ ‫که‬ ‫کند‬ ‫ا‬‫ر‬‫اج‬ ‫هایی‬. •‫بگیرد‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫منابع‬ ‫از‬ ‫استفاده‬ ‫و‬ ‫ها‬ ‫کش‬ ‫دسترسی‬ ‫مدیریت‬ ‫تواند‬ ‫می‬ ‫کش‬ ‫مخزن‬ ‫یک‬.
  • 8. HDFS Federation‫و‬HA •HDFS Federation:‫چند‬ ‫بزرگ‬ ‫خیلی‬ ‫کالسترهای‬ ‫در‬ ‫که‬ ‫دهد‬ ‫می‬ ‫را‬ ‫امکان‬ ‫این‬namenode‫هر‬ ‫و‬ ‫باشیم‬ ‫داشته‬ namenode‫بگیرد‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫فایل‬ ‫سیستم‬ ‫نام‬ ‫فضای‬ ‫از‬ ‫قسمتی‬ ‫مدیریت‬.‫یکی‬ ‫مثال‬/user‫کتوری‬‫دایر‬ ‫و‬ ‫ها‬ ‫فایل‬ ‫و‬ ‫دیگری‬ ‫و‬ ‫آن‬ ‫درون‬ ‫های‬/share •HDFS High Availability (HA):‫متادیتای‬ ‫کردن‬ ‫کپی‬ ‫کیب‬‫تر‬namenode‫از‬ ‫استفاده‬ ‫و‬ ‫فایل‬ ‫سیستم‬ ‫چند‬ ‫روی‬ namenode‫ساخت‬ ‫ای‬‫ر‬‫ب‬ ‫ثانویه‬checkpoint‫دادن‬ ‫دست‬ ‫از‬‫ابر‬‫ر‬‫ب‬ ‫در‬ ‫را‬ ‫سیستم‬namenode‫کند‬ ‫می‬ ‫بیمه‬.‫اگر‬ ‫اما‬ namenode‫بازیابی‬ ‫در‬‫تاخیر‬ ‫دلیل‬ ‫به‬ ‫سیستم‬ ‫بیفتد‬ ‫کار‬ ‫از‬namenode(‫تا‬ ‫بزرگ‬ ‫های‬ ‫سیستم‬ ‫در‬ ‫که‬30‫یا‬ ‫دقیقه‬ ‫ببرد‬ ‫زمان‬ ‫تواند‬ ‫می‬‫بیشتر‬)‫شود‬ ‫می‬ ‫روبرو‬ ‫بزرگی‬ ‫مشکل‬ ‫با‬. •Hadoop‫کردن‬ ‫اضافه‬ ‫با‬ ‫را‬ ‫مشکل‬ ‫این‬HA‫جفت‬ ‫یک‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬ ‫کرده‬ ‫حل‬namenode‫فعال‬ ‫های‬ ‫حالت‬ ‫در‬-‫کار‬ ‫به‬ ‫آماده‬ ‫دارند‬ ‫وجود‬.‫که‬ ‫وقتی‬namenode‫شد‬ ‫مشکل‬ ‫دچار‬ ‫فعال‬namenode‫شود‬ ‫می‬ ‫اندازی‬ ‫راه‬ ‫توجه‬ ‫قابل‬‫تاخیر‬ ‫بدون‬ ‫کار‬ ‫به‬ ‫آماده‬. •‫اندازی‬ ‫راه‬ ‫ای‬‫ر‬‫ب‬HA‫است‬ ‫الزم‬‫زیر‬ ‫ات‬‫ر‬‫تغیی‬ ‫بعضی‬. •Namenode‫اک‬‫ر‬‫اشت‬ ‫ای‬‫ر‬‫ب‬ ‫اکی‬‫ر‬‫اشت‬ ‫حافظه‬ ‫دارای‬ ‫باید‬edit log‫باشد‬.edit log‫آخرین‬ ‫بازیابی‬ ‫ای‬‫ر‬‫ب‬ ‫افتادگی‬ ‫کار‬ ‫از‬ ‫هنگام‬ ‫در‬ ‫وضعیت‬namenode‫شود‬ ‫می‬ ‫استفاده‬ ‫اصلی‬. •Datanode‫دو‬‫هر‬ ‫به‬ ‫را‬ ‫ها‬ ‫بالک‬ ‫ارش‬‫ز‬‫گ‬ ‫باید‬ ‫ها‬namenode‫بدهند‬. •Client‫ابی‬‫ر‬‫خ‬ ‫بتوانند‬ ‫باید‬ ‫ها‬namenode‫کنند‬ ‫مدیریت‬ ‫را‬. •‫اکی‬‫ر‬‫اشت‬ ‫حافظه‬ ‫ای‬‫ر‬‫ب‬ ‫انتخاب‬ ‫دو‬HA‫دارد‬ ‫وجود‬:1-NFS Filer2-QJM
  • 9. ‫کردن‬ ‫قرنطینه‬ ‫و‬ ‫تشخیص‬namenode‫معیوب‬ •Failover:‫یک‬job‫هر‬ ‫در‬ ‫کوچک‬namenode‫ابی‬‫ر‬‫خ‬ ‫تشخیص‬ ‫اش‬ ‫وظیفه‬ ‫که‬ ‫است‬namenode‫است‬. Failover‫از‬ ‫معموال‬ ‫ها‬ZooKeeper‫شدن‬ ‫معیوب‬ ‫تشخیص‬ ‫ای‬‫ر‬‫ب‬namenode‫کنند‬ ‫می‬ ‫استفاده‬. •Fencing:‫ناخواسته‬ ‫ات‬‫ر‬‫تغیی‬ ‫ایجاد‬ ‫مانع‬ ‫که‬ ‫است‬ ‫متدی‬namenode‫موجب‬ ‫است‬ ‫ممکن‬ ‫که‬ ‫معیوب‬ ‫شود‬ ‫می‬ ،‫گردد‬‫کالستر‬ ‫در‬ ‫مشکل‬.
  • 10. ‫رابط‬Command-Line •‫اندازی‬ ‫راه‬ ‫از‬ ‫پس‬Hadoop‫با‬ ‫کار‬ ‫ای‬‫ر‬‫ب‬ ‫مختلفی‬ ‫های‬ ‫رابط‬ ‫از‬ ‫توان‬ ‫می‬ ‫سیستم‬ ‫روی‬‫استفاده‬ ‫فایل‬ ‫سیستم‬ ‫کرد‬.‫آن‬ ‫ترین‬ ‫مهم‬Command line‫است‬. •‫فایل‬ ‫سیستم‬ ‫ابتدایی‬ ‫های‬ ‫فرمان‬ ‫از‬ ‫تعدادی‬: •fs‫فایل‬ ‫سیستم‬ ‫فرمان‬ ‫خط‬Hadoop‫کند‬ ‫می‬ ‫اخوانی‬‫ر‬‫ف‬ ‫را‬‫ج‬ ‫خود‬ ‫در‬ ‫فایل‬ ‫سیستم‬ ‫در‬ ‫کار‬ ‫ای‬‫ر‬‫ب‬ ‫دستور‬‫زیر‬ ‫تعدادی‬ ‫که‬‫ای‬ ‫است‬ ‫داده‬. • % hadoop fs -copyFromLocal input/docs/quangleLocal.txt /user/tom/quangleHDFS.txt •‫محلی‬‫مسیر‬ ‫از‬ ‫را‬ ‫فایل‬(‫پوشه‬input)‫روی‬ ‫شده‬ ‫تعیین‬ ‫آدرس‬ ‫به‬HDFS‫کند‬ ‫می‬ ‫منتقل‬. • % hadoop fs -copyToLocal quangleHDFS.txt quangleLocal.txt •‫کالستر‬ ‫از‬ ‫را‬ ‫فایل‬Hadoop‫کند‬ ‫می‬ ‫کپی‬ ‫محلی‬ ‫فایل‬ ‫سیستم‬ ‫به‬. • % hadoop fs -mkdir books ‫سازد‬ ‫می‬ ‫فایل‬ ‫سیستم‬ ‫در‬ ‫پوشه‬ ‫یک‬. • % hadoop fs -ls . • Found 2 items • drwxr-xr-x - tom supergroup 0 2014-10-04 13:22 books • -rw-r--r-- 1 tom supergroup 119 2014-10-04 13:21 quangleHDFS.txt •‫خروجی‬ ‫در‬ ‫اول‬ ‫ستون‬namenode‫فایل‬ ‫از‬ ‫ها‬ ‫کپی‬ ‫تعداد‬ ‫دوم‬ ‫ستون‬ ،‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫فایل‬ ‫های‬ ‫دسترسی‬(‫پ‬ ‫ای‬‫ر‬‫ب‬‫وشه‬ ‫ها‬‫در‬ ‫چون‬namenode‫است‬ ‫معنی‬ ‫بی‬ ‫ستون‬ ‫این‬ ‫دارند‬ ‫ار‬‫ر‬‫ق‬)‫مشخص‬ ‫را‬ ‫آن‬ ‫گروه‬ ‫و‬‫کاربر‬ ‫چهارم‬ ‫و‬ ‫سوم‬ ‫ستون‬ ،‫کن‬ ‫می‬‫د‬. ‫نام‬ ‫و‬‫تغییر‬ ‫آخرین‬ ‫زمان‬ ‫و‬ ‫تاریخ‬ ،‫بایت‬ ‫به‬ ‫اندازه‬ ‫ها‬ ‫ستون‬ ‫بقیه‬‫پوشه‬-‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫فایل‬.
  • 11. ‫فایل‬ ‫سیستم‬ ‫های‬ ‫دسترسی‬ •‫یک‬ ‫پوشه‬ ‫یا‬ ‫فایل‬‫هر‬owner،group‫و‬mode‫دارد‬.mode‫کاربر‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫است‬ ‫هایی‬ ‫دسترسی‬ ‫مجموعه‬ ‫هستند‬ ‫مالک‬ ‫کاربری‬ ‫گروه‬ ‫عضو‬ ‫نه‬ ‫و‬ ‫هستند‬ ‫مالک‬ ‫نه‬ ‫که‬ ‫انی‬‫ر‬‫کارب‬ ‫و‬ ‫مالک‬ ‫کاربری‬ ‫گروه‬ ،‫مالک‬‫نظر‬ ‫در‬ ‫شود‬ ‫می‬ ‫گرفته‬. •‫است‬ ‫آمده‬‫زیر‬ ‫جدول‬ ‫در‬ ‫ها‬ ‫پوشه‬ ‫و‬ ‫فایل‬ ‫های‬ ‫دسترسی‬: ‫پوشه‬ ‫فایل‬ ‫دسترسی‬ ‫پوشه‬ ‫محتویات‬ ‫خواندن‬ ‫فایل‬ ‫خواندن‬ ‫خواندن‬(r) ‫پو‬ ‫های‬ ‫فایل‬ ‫کردن‬ ‫اضافه‬ ‫و‬ ‫حذف‬‫شه‬ ‫نوشتن‬‫فای‬ ‫در‬‫ل‬ ‫نوشتن‬(w) ‫فرزندان‬ ‫به‬ ‫دسترسی‬ ‫وجود‬‫ندارد‬ ‫کردن‬ ‫ا‬‫ر‬‫اج‬(x)
  • 12. ‫فایل‬ ‫های‬ ‫سیستم‬Hadoop •Hadoop‫که‬ ‫است‬ ‫کرده‬ ‫تعریف‬ ‫فایل‬ ‫سیستم‬ ‫نوع‬ ‫چند‬HDFS‫است‬ ‫آن‬ ‫نمونه‬ ‫یک‬ ‫تنها‬. •Hadoop‫قالب‬ ‫از‬URI‫کند‬ ‫می‬ ‫استفاده‬ ‫فایل‬ ‫سیستم‬ ‫کردن‬ ‫پیدا‬ ‫ای‬‫ر‬‫ب‬.‫کرد‬ ‫لیست‬ ‫ای‬‫ر‬‫ب‬ ‫مثال‬‫های‬ ‫فایل‬ ‫ن‬ root‫کنیم‬ ‫می‬ ‫وارد‬ ‫را‬‫زیر‬ ‫دستور‬ ‫محلی‬ ‫دیسک‬ ‫روی‬: • % hadoop fs –ls file:///
  • 13. ‫فایل‬ ‫های‬ ‫سیستم‬Hadoop ‫توضیحات‬ ‫پیاده‬‫سازی‬Java(‫تحت‬org.apache.hadoop) ‫قالب‬URI ‫فایل‬ ‫سیستم‬ ‫سیستم‬‫کنترل‬ ‫با‬ ‫محلی‬ ‫دیسک‬ ‫ای‬‫ر‬‫ب‬ ‫فایلی‬checksum‫محلی‬ fs.LocalFileSystem file Local ‫توزیع‬ ‫فایل‬ ‫سیستم‬‫شده‬Hadoop.‫با‬ ‫شده‬ ‫هماهنگ‬MapReduce hdfs.DistributedFileSystem hdfs HDFS ‫سیستم‬‫از‬ ‫خواندن‬ ‫امکان‬ ‫که‬ ‫فایلی‬HDFS‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫را‬ ‫هویت‬ ‫از‬‫ر‬‫اح‬ ‫امکان‬ ‫با‬. hdfs.web.WebHdfsFileSystem webhdfs WebHDFS ‫نسخه‬HTTPS‫از‬WebHDFS hdfs.web.SWebHdfsFileSystem swebhdfs Secure WebHDFS ‫سیستم‬‫را‬ ‫ها‬ ‫فایل‬ ‫و‬ ‫شود‬ ‫می‬ ‫سوار‬ ‫دیگری‬ ‫فایل‬ ‫سیستم‬ ‫روی‬ ‫که‬ ‫فایلی‬‫کاستن‬ ‫ای‬‫ر‬‫ب‬ ‫توسط‬ ‫شده‬ ‫استفاده‬ ‫حافظه‬ ‫از‬namenode‫کند‬ ‫می‬ ‫آرشیو‬. fs.HarFileSystem har HAR ‫یک‬‫فایل‬ ‫های‬ ‫سیستم‬‫سایر‬ ‫ای‬‫ر‬‫ب‬ ‫کالینت‬ ‫سمت‬ ‫اتصال‬ ‫جدول‬Hadoop.‫معموال‬ ‫به‬ ‫اتصال‬ ‫نقطه‬ ‫ساختن‬ ‫ای‬‫ر‬‫ب‬Federated namenode‫می‬ ‫استفاده‬‫شود‬. viewfs.ViewFileSystem viewfs View ‫با‬ ‫که‬ ‫فایلی‬ ‫سیستم‬FTP‫شود‬ ‫می‬ ‫گردانده‬‫بر‬ fs.ftp.FTPFileSystem ftp FTP ‫سیستم‬‫فایل‬Amazon S3 fs.s3a.S3AFileSystem s3a S3 ‫سیستم‬‫فایل‬Microsoft Azure fs.azure.NativeAzureFileSystem wasb Azure ‫سیستم‬‫فایل‬OpenStack Swift fs.swift.snative.SwiftNativeFileSystem swift Swift
  • 14. ‫رابط‬ 1 ‫های‬HDFS •Hadoop‫است‬ ‫شده‬ ‫نوشته‬ ‫جاوا‬ ‫به‬. •‫های‬ ‫رابط‬‫در‬ ‫زیادی‬Hadoop‫به‬ ‫دسترسی‬ ‫ای‬‫ر‬‫ب‬HDFS‫اند‬ ‫شده‬ ‫نوشته‬. •HTTP:‫به‬ ‫دسترسی‬ ‫امکان‬ ‫جاوا‬‫غیر‬ ‫های‬ ‫برنامه‬ ‫به‬ ‫که‬ ‫است‬ ‫رابطی‬HDFS‫پروتکل‬ ‫طریق‬ ‫از‬ ‫را‬ HDFS REST API‫دهد‬ ‫می‬.‫به‬ ‫دسترسی‬ ‫ای‬‫ر‬‫ب‬ ‫راه‬ ‫دو‬HDFS‫طریق‬ ‫از‬HTTP‫دارد‬ ‫وجود‬. •‫مستقیم‬:‫زمینه‬ ‫پس‬ ‫های‬ ‫پردازش‬(daemons)HDFS‫های‬ ‫درخواست‬ ‫مستقیم‬ ‫صورت‬ ‫به‬HTTP‫رسیدگی‬ ‫را‬ ‫کنند‬ ‫می‬. •‫غیرمستقیم‬:‫طریق‬ ‫از‬proxy. •C:Hadoop‫کتابخانه‬ ‫یک‬C‫نام‬ ‫به‬libfs‫به‬ ‫دسترسی‬ ‫ای‬‫ر‬‫ب‬HDFS‫فایل‬ ‫های‬ ‫سیستم‬‫سایر‬ ‫و‬ Hadoop‫از‬ ‫که‬ ‫است‬ ‫کرده‬ ‫اهم‬‫ر‬‫ف‬ 2 JNI‫فایل‬ ‫سیستم‬ ‫اخوانی‬‫ر‬‫ف‬ ‫ای‬‫ر‬‫ب‬client‫کند‬ ‫می‬ ‫استفاده‬ ‫جاوا‬. ‫همچنین‬libwebhdfs‫رابط‬ ‫از‬ ‫که‬webhdfs‫است‬ ‫شده‬ ‫معرفی‬ ،‫کند‬ ‫می‬ ‫استفاده‬.1 Interface
  • 15. ‫رابط‬Java •‫فایل‬ ‫های‬ ‫سیستم‬ ‫ای‬‫ر‬‫ب‬ ‫شده‬ ‫شخصی‬ ‫کدهای‬ ‫جاوا‬ ‫کاربری‬ ‫رابط‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫توان‬ ‫می‬Hadoop‫نوشت‬. •‫دستور‬‫زیر‬ ‫مثال‬cat‫در‬ ‫فایل‬ ‫یک‬ ‫محتویات‬ ‫نمایش‬ ‫ای‬‫ر‬‫ب‬HDFS‫استاندار‬ ‫استریم‬ ‫به‬ ‫فایل‬ ‫اتصال‬ ‫طریق‬ ‫از‬ ‫را‬‫د‬ ‫کند‬ ‫می‬ ‫سازی‬ ‫پیاده‬ ‫را‬ ‫خروجی‬. •‫دستور‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫جاوا‬URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());‫فایل‬ ‫سیستم‬ HDFS‫بالک‬ ‫در‬ ‫را‬ ‫آن‬ ‫دلیل‬ ‫همین‬ ‫به‬ ‫پذیرد‬ ‫انجام‬ ‫یکبار‬ ‫باید‬ ‫اخوانی‬‫ر‬‫ف‬ ‫این‬ ،‫شناسد‬ ‫می‬ ‫را‬static‫ایم‬ ‫داده‬ ‫ار‬‫ر‬‫ق‬. • % export HADOOP_CLASSPATH=hadoop-examples.jar ‫فرمان‬ ‫خط‬ ‫در‬ ‫اخوانی‬‫ر‬‫ف‬: • % hadoop URLCat hdfs://localhost/user/tom/quangle.txt 1 1 Source codes at: https://github.com/tomwhite/hadoop-book
  • 17. ‫فایل‬ ‫خواندن‬ ‫ساختار‬ 1-‫تابع‬ ‫زدن‬ ‫صدا‬ ‫با‬ ‫کالینت‬open()‫شی‬ ‫در‬FileSystem‫زند‬ ‫می‬ ‫صدا‬ ‫را‬ ‫بخواند‬ ‫میخواهد‬ ‫که‬ ‫را‬ ‫فایلی‬ ،. 2-DistributedFileSystem،namenode‫طریق‬ ‫از‬ ‫را‬RPC 1 ‫می‬ ‫صدا‬ ‫فایل‬ ‫های‬ ‫بالک‬ ‫اولین‬ ‫مکان‬ ‫کردن‬ ‫مشخص‬ ‫ای‬‫ر‬‫ب‬ ‫زند‬.،‫بالک‬‫هر‬ ‫ای‬‫ر‬‫ب‬namenode‫آدرس‬datanode‫گرداند‬ ‫برمی‬ ‫را‬ ‫دارند‬ ‫را‬ ‫بالک‬ ‫آن‬ ‫از‬ ‫کپی‬ ‫یک‬ ‫که‬ ‫هایی‬. 3-DistributedFileSystem‫یک‬FSDataInputStream‫گرداند‬ ‫می‬‫بر‬ ‫فایل‬ ‫خواندن‬ ‫ای‬‫ر‬‫ب‬ ‫کالینت‬ ‫به‬ ‫را‬. 4-‫کالینت‬read()‫زند‬ ‫می‬ ‫صدا‬ ‫استریم‬ ‫روی‬ ‫را‬.‫طریق‬ ‫از‬ ‫و‬DFSInputStream‫ترین‬ ‫نزدیک‬ ‫به‬datanode‫می‬ ‫وصل‬ ‫شود‬. 5-،‫رسیم‬ ‫می‬ ‫بالک‬ ‫انتهای‬ ‫به‬ ‫وقتی‬DFSInputStream‫به‬ ‫اتصال‬datanode‫بهترین‬ ‫سپس‬ ‫و‬ ‫بندد‬ ‫می‬ ‫را‬datanode‫را‬ ‫کند‬ ‫می‬ ‫پیدا‬ ‫بعدی‬ ‫بالک‬ ‫ای‬‫ر‬‫ب‬. 6-،‫کرد‬ ‫تمام‬ ‫را‬ ‫خواندن‬ ‫کالینت‬ ‫که‬ ‫وقتی‬close()‫از‬ ‫را‬FSDataInputStream‫زند‬ ‫می‬ ‫صدا‬. •‫خواندن‬ ‫طول‬ ‫در‬‫اگر‬DFSInputStream‫از‬ ‫خواندن‬ ‫در‬ ‫خطایی‬ ‫با‬datanode‫می‬ ‫بازیابی‬ ‫را‬ ‫بعدی‬ ‫بالک‬ ‫ترین‬ ‫نزدیک‬ ،‫شد‬ ‫مواجه‬ ‫از‬ ‫و‬ ‫کند‬datanode‫کند‬ ‫می‬‫صرفنظر‬ ‫بعدی‬ ‫های‬ ‫بالک‬ ‫ای‬‫ر‬‫ب‬ ‫است‬ ‫شده‬ ‫مواجه‬ ‫خطا‬ ‫با‬ ‫که‬ ‫ی‬. •DFSInputStream،checksum‫کند‬ ‫می‬ ‫چک‬‫نیز‬ ‫را‬ ‫بالک‬.‫از‬ ‫دیگری‬ ‫کپی‬ ‫کند‬ ‫می‬ ‫سعی‬ ‫شد‬ ‫یافت‬ ‫ابی‬‫ر‬‫خ‬ ‫بالک‬‫اگر‬datanode ‫به‬ ‫را‬ ‫ابی‬‫ر‬‫خ‬ ‫و‬ ‫بخواند‬namenode‫کند‬ ‫ارش‬‫ز‬‫گ‬. 1 Remote Procedure Call
  • 18. ‫ای‬ ‫شبکه‬ ‫توپولوژی‬Hadoop •Hadoop‫ترین‬ ‫نزدیک‬ ‫کند‬ ‫می‬ ‫سعی‬node‫را‬‫خواندن‬ ‫ای‬‫ر‬‫ب‬‫بالک‬‫کند‬ ‫معرفی‬.‫منظور‬ ‫بدین‬Hadoop ‫کند‬ ‫می‬ ‫تقسیم‬‫زیر‬ ‫های‬ ‫دسته‬ ‫به‬ ‫را‬ ‫ها‬ ‫پردازش‬: •1-‫یک‬ ‫به‬ ‫متعلق‬ ‫های‬ ‫پردازش‬node. •2-node‫یک‬ ‫مختلف‬ ‫های‬rack. •3-node‫با‬ ‫هایی‬rack‫متفاوت‬. •4-node‫متفاوت‬‫دیتاسنتر‬ ‫با‬ ‫هایی‬(Hadoop‫ندارد‬ ‫را‬ ‫قابلیت‬ ‫این‬ ‫هنوز‬.)
  • 20. ‫فایل‬ ‫در‬ ‫نوشتن‬ ‫ساختار‬ 1-‫زدن‬ ‫صدا‬ ‫با‬ ‫را‬ ‫فایل‬ ‫کالینت‬create()‫از‬DistributedFileSystem‫سازد‬ ‫می‬.DistributedFileSystem‫یک‬RPC‫صدا‬ ‫ای‬‫ر‬‫ب‬ ‫را‬ ‫زدن‬namenode‫در‬ ‫جدیدی‬ ‫فایل‬ ‫که‬ ‫سازد‬ ‫می‬namespace‫بسازد‬. 2-namenode‫س‬ ‫اجازه‬ ‫کالینت‬ ‫و‬ ‫است‬ ‫نداشته‬ ‫وجود‬ ‫قبل‬ ‫از‬ ‫فایل‬ ‫که‬ ‫شود‬ ‫مطمئن‬ ‫تا‬ ‫دهد‬ ‫می‬ ‫انجام‬ ‫مختلفی‬ ‫های‬ ‫بررسی‬‫اخت‬ ‫دارد‬ ‫را‬ ‫فایل‬.DistributedFileSystem‫یک‬FSDataOutputStream‫گرداند‬ ‫می‬‫بر‬ ‫اطالعات‬ ‫نوشتن‬ ‫ای‬‫ر‬‫ب‬ ‫کالینت‬ ‫به‬ ‫را‬. 3-‫نویسد‬ ‫می‬ ‫را‬ ‫ها‬ ‫داده‬ ‫کالینت‬ ‫که‬ ‫وقتی‬DFSOutputStream‫ن‬ ‫به‬ ‫داخلی‬ ‫صف‬ ‫یک‬ ‫در‬ ‫که‬ ‫کند‬ ‫می‬ ‫تقسیم‬ ‫هایی‬ ‫بسته‬ ‫به‬ ‫را‬ ‫آن‬‫ام‬ data queue‫شود‬ ‫می‬ ‫نوشته‬.Data queue‫توسط‬DataStreamer‫از‬ ‫لیستی‬ ‫که‬ ‫شود‬ ‫می‬ ‫خوانده‬datanode‫ای‬‫ر‬‫ب‬ ‫مناسب‬ ‫های‬ ‫دهد‬ ‫می‬ ‫را‬ ‫ها‬ ‫کپی‬ ‫داری‬ ‫نگه‬. 4-‫لیست‬datanode‫یک‬ ‫ها‬pipeline‫سازد‬ ‫می‬ ‫را‬.‫تعداد‬datanode‫های‬pipeline‫ار‬‫ر‬‫تک‬ ‫درجه‬ ‫اندازه‬ ‫به‬(replication level) ‫فرض‬ ‫پیش‬ ‫طور‬ ‫به‬ ‫که‬ ‫است‬3‫است‬.‫اولین‬ ‫از‬ ‫سپس‬datanode‫در‬pipeline‫شود‬ ‫می‬ ‫استریم‬ ‫آن‬ ‫آخرین‬ ‫تا‬.‫به‬ ‫دومی‬ ،‫دومی‬ ‫به‬ ‫اولی‬ ‫و‬ ‫سومی‬... 5-DFSOutputStream‫صف‬ ‫یک‬ack‫توسط‬ ‫شدن‬ ‫شناخته‬‫منتظر‬ ‫که‬ ‫هایی‬ ‫بسته‬ ‫لیست‬ ‫آن‬ ‫در‬ ‫که‬ ‫سازد‬ ‫می‬datanode‫هستند‬ ‫ها‬ ‫شود‬ ‫می‬ ‫وارد‬.‫لیست‬ ‫از‬ ‫صورتی‬ ‫در‬ ‫بسته‬ ‫یک‬ack‫تمام‬ ‫توسط‬ ‫که‬ ‫شود‬ ‫می‬ ‫حذف‬datanode‫های‬pipeline‫باشد‬ ‫شده‬ ‫شناسایی‬. 6-‫کند‬ ‫می‬ ‫تمام‬ ‫را‬ ‫ها‬ ‫داده‬ ‫نوشتن‬ ‫کالینت‬ ‫که‬ ‫وقتی‬close()‫کند‬ ‫می‬ ‫اخوانی‬‫ر‬‫ف‬ ‫استریم‬ ‫روی‬ ‫را‬. 7-‫روی‬ ‫باقیمانده‬ ‫های‬ ‫بسته‬ ‫تمام‬ ‫عمل‬ ‫این‬pipeline‫به‬ ‫مربوط‬datanode‫به‬ ‫را‬datanode‫بسته‬ ‫شدن‬ ‫شناخته‬‫منتظر‬ ‫و‬ ‫فرستد‬ ‫می‬ ‫با‬ ‫ارتباط‬ ‫از‬ ‫قبل‬ ‫ها‬namenode‫شود‬ ‫می‬ ‫فایل‬ ‫تکمیل‬ ‫اعالن‬ ‫ای‬‫ر‬‫ب‬.Namenode‫اند‬ ‫شده‬ ‫ساخته‬ ‫هایی‬ ‫بالک‬ ‫چه‬ ‫داند‬ ‫می‬ ‫قبل‬ ‫از‬.
  • 21. ‫بالک‬ ‫ار‬‫ر‬‫تک‬ ‫سیاست‬ •‫همان‬ ‫در‬ ‫معموال‬ ‫بالک‬ ‫اولین‬node‫کالس‬ ‫از‬ ‫خارج‬ ‫کالینت‬‫اگر‬ ‫یا‬ ‫است‬ ‫فرستاده‬ ‫را‬ ‫نوشتن‬ ‫درخواست‬ ‫که‬ ‫شود‬ ‫می‬ ‫نوشته‬ ‫ی‬‫بود‬‫تر‬ ‫یک‬ ‫در‬node‫شود‬ ‫می‬ ‫نوشته‬ ‫تصادفی‬. •‫در‬ ‫دوم‬ ‫بالک‬rack‫از‬‫غیر‬ ‫دیگری‬rack‫اولین‬node‫شود‬ ‫می‬ ‫نوشته‬. •‫در‬ ‫سوم‬ ‫بالک‬node‫از‬ ‫تصادفی‬rack‫به‬ ‫مربوط‬node‫شود‬ ‫می‬ ‫نوشته‬ ‫دوم‬. •‫در‬ ‫بعد‬ ‫های‬ ‫بالک‬node‫شود‬ ‫می‬ ‫نوشته‬‫کالستر‬ ‫روی‬ ‫تصادفی‬ ‫های‬.
  • 22. ‫موازی‬ ‫کپی‬ •‫دستور‬ ‫از‬ ‫توان‬ ‫می‬distcp‫موازی‬ ‫کپی‬ ‫ای‬‫ر‬‫ب‬(‫نخی‬ ‫چند‬)‫کرد‬ ‫استفاده‬.‫کر‬ ‫کپی‬ ‫ای‬‫ر‬‫ب‬ ‫دستور‬ ‫این‬ ‫از‬ ‫توان‬ ‫می‬ ‫مثال‬ ‫ای‬‫ر‬‫ب‬‫فایل‬ ‫دن‬ ‫کرد‬ ‫استفاده‬‫زیر‬ ‫شیوه‬ ‫به‬ ‫ها‬ ‫پوشه‬ ‫های‬: • % hadoop distcp dir1 dir2 •‫از‬distcp‫شود‬ ‫می‬ ‫استفاده‬ ‫گرفتن‬ ‫آپ‬ ‫بک‬ ‫یا‬ ‫کالسترها‬ ‫بین‬ ‫اطالعات‬ ‫انتقال‬ ‫ای‬‫ر‬‫ب‬ ‫معموال‬. • % hadoop distcp -update -delete -p hdfs://namenode1/foo hdfs://namenode2/foo •Hadoop‫باش‬ ‫شده‬ ‫توزیع‬ ‫یکنواخت‬ ‫صورت‬ ‫به‬‫کالستر‬‫تاسر‬‫ر‬‫س‬ ‫در‬ ‫ای‬ ‫داده‬ ‫های‬ ‫بالک‬ ‫که‬ ‫کند‬ ‫می‬ ‫عمل‬ ‫بهینه‬ ‫زمانی‬‫ند‬.
  • 23. ‫منابع‬ • White, Tom. Hadoop: The definitive guide, 4th edition. " O'Reilly Media, Inc.", 2015.