‫ورودی‬/‫خروجی‬Hadoop
‫رضایی‬‫ناصر‬
nasser.rezaei.novin@gmail.com
‫مقدمه‬
•‫وجود‬ ‫ها‬ ‫داده‬ ‫خروجی‬ ‫و‬ ‫ورودی‬ ‫عملیات‬ ‫ای‬‫ر‬‫ب‬ ‫اصولی‬ ‫هدوپ‬ ‫در‬‫دارد‬.
•‫این‬ ‫از‬ ‫بعضی‬‫عمومی‬ ‫اصول‬‫مثل‬ ‫هستند‬‫ها‬ ‫داده‬ ‫درستی‬‫یا‬‫سازی‬ ‫فشرده‬.
•‫سایر‬‫ابزار‬ ‫اصول‬‫یا‬ ‫ها‬API‫مثل‬ ‫هستند‬ ‫توزیعی‬ ‫های‬ ‫سیستم‬ ‫توسعه‬ ‫ای‬‫ر‬‫ب‬ ‫هایی‬‫سازی‬ ‫سریال‬ ‫های‬ ‫ورک‬ ‫فریم‬.
‫ها‬ ‫داده‬ ‫درستی‬
•‫شوند‬ ‫اب‬‫ر‬‫خ‬ ‫یا‬ ‫بروند‬ ‫دست‬ ‫از‬ ‫سیستم‬ ‫در‬ ‫نباید‬ ‫ها‬ ‫داده‬.
•‫پی‬ ‫افزایش‬ ‫ها‬ ‫داده‬ ‫ابی‬‫ر‬‫خ‬ ‫احتمال‬ ‫کند‬ ‫مدیریت‬ ‫بتواند‬ ‫سختی‬ ‫به‬ ‫هدوپ‬ ‫که‬ ‫رسد‬ ‫می‬ ‫حدی‬ ‫به‬ ‫ها‬ ‫داده‬ ‫حجم‬ ‫که‬ ‫هنگامی‬‫دا‬
‫می‬‫کند‬.
•‫از‬ ‫استفاده‬ ‫معیوب‬ ‫های‬ ‫داده‬ ‫تشخیص‬ ‫ای‬‫ر‬‫ب‬ ‫معمول‬ ‫حل‬‫راه‬checksum‫از‬ ‫ها‬ ‫داده‬ ‫خروج‬ ‫و‬ ‫ورود‬ ‫هنگام‬ ‫در‬
‫است‬ ‫سیستم‬.
•‫اگر‬checksum‫شوند‬ ‫می‬ ‫فرض‬ ‫معیوب‬ ‫ها‬ ‫داده‬ ‫بود‬ ‫متفاوت‬ ‫قبلی‬ ‫با‬ ‫شده‬ ‫تولید‬ ‫جدید‬.
‫در‬ ‫ها‬ ‫داده‬ ‫درستی‬HDFS
•HDFS‫با‬ ‫را‬ ‫شود‬ ‫می‬ ‫نوشته‬ ‫آن‬ ‫در‬ ‫که‬ ‫هایی‬ ‫داده‬ ‫تمام‬ ‫صحت‬checksum‫کند‬ ‫می‬ ‫آزمایش‬.
•‫یک‬checksum‫هر‬ ‫ازای‬ ‫به‬ ‫اضافه‬dfs.bytes-per-checksum
1
(‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬512‫بایت‬)‫کند‬ ‫می‬ ‫تولید‬.
•‫هر‬checksum،4‫از‬‫کمتر‬ ‫باراضافی‬ ‫این‬‫ر‬‫بناب‬ ‫است‬ ‫بایت‬1%‫است‬.
•DataNode‫و‬ ‫ها‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫از‬ ‫قبل‬ ‫دریافتی‬ ‫های‬ ‫داده‬ ‫تایید‬ ‫مقابل‬ ‫در‬ ‫ها‬checksum‫مسئولند‬ ‫ها‬ ‫آن‬.
•DN‫تمامی‬ ‫سابقه‬ ‫ها‬checksum‫است‬ ‫مفید‬ ‫معیوب‬ ‫های‬ ‫دیسک‬ ‫شناسایی‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫کند‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫خود‬ ‫در‬ ‫را‬ ‫نشده‬ ‫و‬ ‫شده‬ ‫تایید‬ ‫های‬.
•‫دیسک‬ ‫های‬ ‫داده‬ ‫از‬ ‫ای‬ ‫دوره‬ ‫صورت‬ ‫به‬ ‫زمینه‬ ‫پس‬ ‫پردازش‬ ‫یک‬checksum‫گیرد‬ ‫می‬.
•‫باشد‬ ‫شده‬ ‫اب‬‫ر‬‫خ‬ ‫بالکی‬‫اگر‬NameNode‫در‬ ‫بالک‬ ‫از‬ ‫کپی‬ ‫یک‬ ‫و‬ ‫گیرد‬ ‫می‬‫درنظر‬ ‫معیوب‬ ‫را‬ ‫آن‬DataNode‫سازد‬ ‫می‬ ‫دیگری‬.
1
‫فایل‬ ‫در‬ ‫ویژگی‬ ‫این‬hdfs-site.xml‫شود‬‫می‬ ‫پیکربندی‬.
‫سازی‬ ‫فشرده‬
•‫سازی‬ ‫فشرده‬ ‫مزیت‬ ‫دو‬
•‫دهد‬ ‫می‬ ‫کاهش‬ ‫را‬ ‫سازی‬ ‫ذخیره‬ ‫ای‬‫ر‬‫ب‬ ‫نیاز‬ ‫مورد‬ ‫فضای‬.
•‫دهد‬ ‫می‬ ‫افزایش‬ ‫را‬ ‫شبکه‬ ‫در‬ ‫ها‬ ‫داده‬ ‫انتقال‬ ‫نرخ‬.
Compression format Tool Algorithm Filename extension Splittable?
DEFLATE N/A DEFLATE .deflate No
gzip gzip DEFLATE .gz No
bzip2 bzip2 bzip2 .bz2 Yes
LZO lzop LZO .lzo No*
LZ4 N/A LZ4 .lz4 No
Snappy N/A Snappy .snappy No
‫هدوپ‬ ‫در‬ ‫شده‬ ‫استفاده‬ ‫های‬ ‫فرمت‬
‫های‬ ‫فایل‬LZO‫دارند‬ ‫را‬ ‫تقسیم‬ ‫قابلیت‬ ‫شوند‬ ‫گذاری‬ ‫ایندکس‬‫اگر‬.
‫ساز‬‫فشرده‬ ‫یک‬ ‫از‬ ‫ای‬ ‫نمونه‬
•‫نویسد‬ ‫می‬ ‫استاندارد‬ ‫خروجی‬ ‫در‬ ‫و‬ ‫کرده‬ ‫فشرده‬ ‫را‬ ‫استاندارد‬ ‫ورودی‬‫زیر‬ ‫کد‬ ‫قطعه‬
1
.
•‫کامل‬ ‫نام‬CompressionCode‫شود‬ ‫می‬ ‫گرفته‬ ‫اول‬ ‫آرگومان‬ ‫عنوان‬ ‫به‬.
•‫از‬ReflectionUtils‫سازی‬ ‫فشرده‬ ‫ای‬‫ر‬‫ب‬ ‫سپس‬ ‫و‬ ‫کدک‬ ‫از‬ ‫ای‬ ‫نمونه‬ ‫ساخت‬ ‫ای‬‫ر‬‫ب‬System.out‫شود‬ ‫می‬ ‫استفاده‬.
•‫از‬copyBytes‫توسط‬ ‫خروجی‬ ‫به‬ ‫ورودی‬ ‫کردن‬ ‫کپی‬ ‫ای‬‫ر‬‫ب‬CompressionOutputStream‫شود‬ ‫می‬ ‫استفاده‬.
% echo "Text" | hadoop StreamCompressor org.apache.hadoop.io.compress.GzipCodec | gunzip -
‫اخوانی‬‫ر‬‫ف‬:
1
Source codes at: https://github.com/tomwhite/hadoop-book
‫یک‬ ‫از‬ ‫ای‬ ‫نمونه‬‫ساز‬‫غیرفشرده‬
•‫به‬ ‫فایل‬ ‫پسوند‬ ‫یک‬ ‫نگاشت‬ ‫ای‬‫ر‬‫ب‬ ‫راهی‬‫زیر‬ ‫برنامه‬CompressionCodec‫متد‬ ‫از‬ ‫استفاده‬ ‫با‬getCodec()‫است‬ ‫داده‬ ‫ارائه‬.
•‫از‬RemoveSuffix‫است‬ ‫شده‬ ‫استفاده‬ ‫فشرده‬ ‫فایل‬ ‫پسوند‬ ‫حذف‬ ‫ای‬‫ر‬‫ب‬(‫مثل‬file.gz => file.)
‫ورودی‬ ‫بندی‬‫بخش‬
•‫باشد‬ ‫نداشته‬ ‫بندی‬‫بخش‬ ‫قابلیت‬ ‫و‬ ‫باشد‬ ‫فشرده‬ ‫صورت‬ ‫به‬ ‫فایل‬‫اگر‬-‫مثل‬gzip‫هر‬ ‫ابتدای‬ ‫که‬ ‫مشخص‬ ‫صورت‬ ‫به‬ ‫را‬ ‫فایل‬ ‫بندی‬ ‫بخش‬ ‫که‬
‫دهد‬ ‫نمی‬ ‫انجام‬ ‫را‬ ‫باشد‬ ‫مشخص‬ ‫بخش‬-‫های‬ ‫پردازش‬ ‫در‬ ‫توان‬ ‫نمی‬MapReduce‫کرد‬ ‫پردازش‬ ‫جداگانه‬ ‫صورت‬ ‫به‬ ‫را‬ ‫بخش‬‫هر‬.
•،‫نکند‬ ‫پشتیبانی‬ ‫را‬ ‫بندی‬ ‫بخش‬ ‫سازی‬ ‫فشرده‬‫اگر‬Map‫کند‬ ‫می‬ ‫پیدا‬ ‫ایش‬‫ز‬‫اف‬ ‫پردازش‬ ‫زمان‬ ‫و‬ ‫شود‬ ‫می‬ ‫کم‬ ‫ها‬ ‫اکندگی‬‫ر‬‫پ‬ ‫و‬ ‫یابند‬ ‫می‬ ‫کاهش‬ ‫ها‬.
•LZO‫آورد‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫گذاری‬ ‫شاخص‬ ‫ابزار‬ ‫یک‬ ‫وسیله‬ ‫به‬ ‫را‬ ‫بندی‬ ‫بخش‬ ‫امکان‬.
•bzip2‫دارد‬ ‫را‬ ‫بندی‬ ‫بخش‬ ‫امکان‬.
‫سازی‬ ‫سریال‬
•‫سازی‬ ‫سریال‬(Serialization)‫ذخ‬ ‫یا‬ ‫شبکه‬ ‫روی‬ ‫انتقال‬ ‫ای‬‫ر‬‫ب‬ ‫ها‬ ‫بایت‬ ‫از‬ ‫جریانی‬ ‫به‬ ‫ساختاریافته‬ ‫اشیای‬ ‫تبدیل‬ ‫آیند‬‫ر‬‫ف‬ ‫به‬‫ها‬ ‫آن‬ ‫دائمی‬ ‫یره‬
‫شود‬ ‫می‬ ‫گفته‬.
•‫سازی‬ ‫سریال‬‫غیر‬(Deserialization)‫شود‬ ‫می‬ ‫گفته‬ ‫آن‬ ‫معکوس‬ ‫عمل‬ ‫به‬.
•‫بایستی‬ ‫سازی‬ ‫سریال‬:
•‫فشرده‬
•‫سریع‬
•‫توسعه‬ ‫قابل‬)‫شود‬ ‫منطبق‬ ‫جدید‬ ‫نیازهای‬ ‫با‬.(
•‫باشد‬ ‫زبانی‬ ‫بین‬ ‫و‬)‫کرد‬ ‫کار‬ ‫آن‬ ‫با‬ ‫بتوان‬ ‫مختلف‬ ‫های‬ ‫زبان‬ ‫های‬ ‫رابط‬ ‫با‬).
‫رابط‬Writable
•‫رابط‬(interface)Writable‫خروجی‬ ‫باینری‬ ‫جریان‬ ‫به‬ ‫نوشتن‬ ‫ای‬‫ر‬‫ب‬ ‫متد‬ ‫دو‬(DataOutput)‫ورودی‬ ‫باینری‬ ‫جریان‬ ‫و‬(DataInput)
‫کند‬ ‫می‬ ‫تعریف‬.
•‫از‬ ‫توان‬ ‫می‬ ‫مثال‬ ‫طور‬ ‫به‬IntWritable‫نوع‬ ‫ای‬‫ر‬‫ب‬ ‫پوششی‬ ‫عنوان‬ ‫به‬Int‫کرد‬ ‫استفاده‬ ‫جاوا‬.
‫مقایسه‬Writable
•IntWritable‫رابط‬WritableComparable‫در‬ ‫که‬ ‫کند‬ ‫می‬ ‫سازی‬ ‫پیاده‬ ‫را‬MapReduce‫است‬ ‫نیاز‬.
•‫بدون‬ ‫را‬ ‫رکوردها‬ ‫مقایسه‬ ‫اجازه‬ ‫رابط‬ ‫این‬deserialize‫دهد‬ ‫می‬ ‫اشیا‬ ‫به‬ ‫کردن‬.‫شود‬ ‫نمی‬ ‫ایجاد‬ ‫شی‬ ‫ساخت‬ ‫ای‬‫ر‬‫ب‬ ‫اضافی‬ ‫بار‬.
•‫رابط‬RawComparator‫بدون‬ ‫انواع‬ ‫مقایسه‬ ‫اجازه‬deserialize‫دهد‬ ‫می‬ ‫را‬ ‫کردن‬.
•WritableComparator‫از‬ ‫عمومی‬ ‫سازی‬ ‫پیاده‬ ‫یک‬RawComparator‫های‬ ‫کالس‬ ‫ای‬‫ر‬‫ب‬WritableComparable‫است‬.
•‫انواع‬ ‫ای‬‫ر‬‫ب‬ ‫منبعی‬ ‫عنوان‬ ‫به‬RawComparator‫شود‬ ‫می‬ ‫استفاده‬ ‫ها‬.
•‫ای‬‫ر‬‫ب‬‫گر‬ ‫مقایسه‬ ‫یک‬ ‫تست‬ ‫و‬ ‫ساخت‬IntWritable:
‫های‬‫کالس‬Writable
•‫های‬ ‫کالس‬ ‫از‬ ‫ای‬ ‫مجموعه‬ ‫هدوپ‬Writable‫پکیج‬ ‫در‬ ‫را‬org.apache.hadoop.io‫است‬ ‫آورده‬ ‫اهم‬‫ر‬‫ف‬.
Java primitive Writable implementation Serialized size (bytes)
boolean BooleanWritable 1
byte ByteWritable 1
short ShortWritable 2
int IntWritable 4
VIntWritable 1–5
float FloatWritable 4
long LongWritable 8
VLongWritable 1–9
double DoubleWritable 8
‫سازی‬ ‫پیاده‬Writable‫سفارشی‬
•‫های‬ ‫کالس‬ ‫از‬ ‫ای‬ ‫مجموعه‬ ‫هدوپ‬Writable‫پکیج‬ ‫در‬ ‫را‬org.apache.hadoop.io‫است‬ ‫آورده‬ ‫اهم‬‫ر‬‫ف‬.
•‫از‬ ‫سفارشی‬ ‫سازی‬ ‫پیاده‬Writable‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫سازی‬ ‫مرتب‬ ‫شیوه‬ ‫و‬ ‫باینری‬ ‫نمایش‬ ‫روی‬ ‫کاملی‬ ‫کنترل‬.
•‫کالس‬ ‫یک‬ ‫در‬ ‫را‬ ‫ای‬ ‫داده‬ ‫ساختارهای‬‫تر‬ ‫پیچیده‬ ‫انواع‬ ‫توان‬ ‫می‬Writable‫کرد‬ ‫سازی‬ ‫پیاده‬.
•‫ساخت‬ ‫به‬ ‫تمایل‬ ‫که‬ ‫صورتی‬ ‫در‬Writable‫نظیر‬ ‫دیگری‬ ‫سازی‬ ‫سریال‬ ‫ورک‬ ‫فریم‬ ‫از‬ ‫است‬‫بهتر‬ ‫دارید‬ ‫شده‬ ‫سفارشی‬Avro‫کنید‬ ‫استفاده‬.
‫های‬‫ورک‬ ‫فریم‬Serialization
•‫ورک‬ ‫فریم‬ ‫یک‬Serialization‫کالس‬ ‫از‬ ‫سازی‬ ‫پیاده‬ ‫با‬Serialization(‫پکیج‬org.apache.hadoop.io.serializer)‫شود‬ ‫می‬ ‫ساخته‬.
•‫مثال‬WritableSerialization‫سازی‬ ‫پیاده‬Serialization‫انواع‬ ‫ای‬‫ر‬‫ب‬Writable‫است‬.
•‫هدوپ‬‫نام‬ ‫به‬ ‫کالسی‬JavaSerialization‫کند‬ ‫می‬ ‫پشتیبانی‬ ‫جاوا‬ ‫اشیا‬ ‫سازی‬ ‫سریال‬ ‫از‬ ‫که‬ ‫دارد‬.
•‫اندازه‬ ‫به‬ ‫ولی‬ ‫است‬ ‫راحت‬ ‫جاوا‬ ‫استاندارد‬ ‫انواع‬ ‫با‬ ‫کردن‬ ‫کار‬ ‫اگرچه‬Writable‫نیست‬ ‫کارا‬ ‫ها‬.
•Apache Thrift‫و‬Google Protocol Buffers‫هستند‬ ‫سازی‬ ‫سریال‬ ‫ای‬‫ر‬‫ب‬ ‫محبوب‬ ‫ورک‬ ‫فریم‬ ‫دو‬.
‫فایلی‬ ‫داده‬ ‫ساختارهای‬
•‫ترتیبی‬ ‫فایل‬:‫نظیر‬ ‫هایی‬ ‫فایل‬ ‫ای‬‫ر‬‫ب‬log file‫کالس‬ ‫گیرد‬ ‫می‬ ‫ار‬‫ر‬‫ق‬ ‫خط‬ ‫یک‬ ‫در‬ ‫رکورد‬‫هر‬ ‫که‬SequenceFile‫است‬ ‫شده‬ ‫احی‬‫ر‬‫ط‬ ‫هدوپ‬.
•‫کلید‬ ‫باینری‬ ‫ساختار‬ ‫کالس‬ ‫این‬-‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫را‬ ‫مقدار‬.
•‫کلید‬ ‫یک‬ ‫از‬ ‫توان‬ ‫می‬ ‫نوشتن‬ ‫ای‬‫ر‬‫ب‬(‫از‬ ‫توان‬ ‫می‬ ‫نبود‬ ‫موجود‬‫اگر‬TimeStamp+‫مقدار‬ ‫یک‬)‫کرد‬ ‫استفاده‬.
•‫از‬ ‫نمونه‬ ‫یک‬ ‫هم‬ ‫خواندن‬ ‫ای‬‫ر‬‫ب‬SequenceFile.Reader‫متد‬ ‫اخوانی‬‫ر‬‫ف‬ ‫ار‬‫ر‬‫تک‬ ‫با‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫ایجاد‬next()‫خوانیم‬ ‫می‬ ‫تیب‬‫ر‬‫ت‬ ‫به‬ ‫را‬ ‫رکوردها‬.
•Sync point:‫در‬ ‫ای‬ ‫نقطه‬Stream‫که‬ ‫صورتی‬ ‫در‬ ‫رکورد‬ ‫مرز‬ ‫با‬ ‫دوباره‬ ‫هماهنگی‬ ‫ای‬‫ر‬‫ب‬ ‫تواند‬ ‫می‬ ‫که‬ ‫است‬reader‫استفاده‬ ‫شود‬ ‫مفقود‬
‫شود‬.
•‫از‬ ‫بعد‬ ‫مثال‬ ‫طور‬ ‫به‬seek‫فایل‬ ‫از‬ ‫دلخواه‬ ‫مکان‬ ‫یک‬ ‫به‬.
‫ترتیبی‬ ‫فایل‬ ‫ساختار‬
•‫است‬ ‫شده‬ ‫تشکیل‬ ‫رکوردها‬ ‫از‬ ‫ای‬ ‫مجموعه‬ ‫آن‬ ‫دنبال‬ ‫به‬ ‫و‬ ‫هدر‬ ‫یک‬ ‫از‬ ‫ترتیبی‬ ‫فایل‬.
•‫های‬ ‫نشانه‬Sync‫از‬‫کمتر‬ ‫که‬ ‫ند‬‫ر‬‫گی‬ ‫می‬ ‫ار‬‫ر‬‫ق‬ ‫تیبی‬‫ر‬‫ت‬ ‫فایل‬ ‫رکوردهای‬ ‫بین‬1%‫کنند‬ ‫می‬ ‫ایجاد‬ ‫اضافه‬ ‫بار‬.
•‫رکوردی‬ ،‫است‬ ‫شده‬ ‫تعریف‬ ‫سازی‬ ‫فشرده‬ ‫نوع‬ ‫دو‬(‫رکورد‬‫هر‬ ‫ازای‬ ‫به‬)‫بالکی‬ ‫و‬(‫شده‬ ‫فشرده‬ ‫بالک‬ ‫یک‬ ‫در‬ ‫رکورد‬ ‫چند‬.)‫فش‬ ‫بدون‬ ‫ای‬ ‫نمونه‬‫زیر‬ ‫شکل‬‫است‬ ‫سازی‬ ‫رده‬.
MapFile
•‫یک‬MapFile‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫کلیدها‬ ‫محل‬ ‫شاخصی‬ ‫با‬ ‫که‬ ‫است‬ ‫شده‬ ‫مرتب‬ ‫ترتیبی‬ ‫فایل‬.
•‫فایل‬ ‫کلیدهای‬ ‫از‬ ‫قسمتی‬ ‫آدرس‬ ‫که‬ ‫است‬ ‫تیبی‬‫ر‬‫ت‬ ‫فایل‬ ‫یک‬ ‫خود‬ ‫شاخص‬ ‫فایل‬Map‫هر‬ ‫ازای‬ ‫به‬ ‫مثال‬ ‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬128‫شود‬ ‫می‬ ‫درج‬ ‫شاخص‬ ‫یک‬ ‫کلید‬.
•‫است‬ ‫اصلی‬ ‫داده‬ ‫فایل‬ ‫به‬ ‫سریع‬ ‫ارجاع‬ ‫ای‬‫ر‬‫ب‬ ‫اصلی‬ ‫حافظه‬ ‫در‬ ‫شاخص‬ ‫فایل‬ ‫دادن‬ ‫ار‬‫ر‬‫ق‬ ‫اصلی‬ ‫ایده‬.
‫ها‬‫فایل‬ ‫فرمت‬‫دیگر‬ ‫انواع‬
•‫داده‬ ‫های‬ ‫فایل‬Avro:‫اند‬ ‫شده‬ ‫ساخته‬ ‫بزرگ‬ ‫خیلی‬ ‫های‬ ‫داده‬ ‫پردازش‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫هستند‬ ‫ترتیبی‬ ‫های‬ ‫فایل‬ ‫شبیه‬.
•‫هستند‬ ‫استفاده‬ ‫قابل‬ ‫نویسی‬ ‫نامه‬‫ر‬‫ب‬ ‫مختلف‬ ‫های‬ ‫زبان‬ ‫در‬ ‫و‬ ‫هستند‬ ‫بندی‬ ‫بخش‬ ‫قابل‬ ‫و‬ ‫فشرده‬.
•،‫ترتیبی‬ ‫های‬ ‫فایل‬Map‫و‬Avro‫سطری‬ ‫های‬ ‫فرمت‬(row-oriented)‫هستند‬.‫می‬ ‫ذخیره‬ ‫فایل‬ ‫در‬ ‫پیوسته‬ ‫صورت‬ ‫به‬‫سطر‬‫هر‬‫مقادیر‬
‫شوند‬.
•‫ستونی‬ ‫فرمت‬ ‫یک‬ ‫در‬(column-oriented)‫س‬ ‫ساختار‬ ‫یک‬ ‫در‬ ‫بخش‬‫هر‬ ‫سپس‬ ‫شوند‬ ‫می‬ ‫تقسیم‬ ‫هایی‬ ‫بخش‬ ‫به‬ ‫فایل‬ ‫یک‬ ‫سطرهای‬‫تونی‬
‫شود‬ ‫می‬ ‫داری‬ ‫نگه‬.
•‫و‬ ‫دوم‬ ‫ستون‬ ‫در‬‫سطر‬‫هر‬‫مقادیر‬ ‫سپس‬ ،‫شوند‬ ‫می‬ ‫ذخیره‬ ‫ابتدا‬ ‫در‬ ‫اول‬ ‫ستون‬ ‫در‬‫سطر‬‫هر‬‫مقادیر‬. ...
‫ستونی‬ ‫مقابل‬ ‫در‬ ‫سطری‬ ‫فرمت‬
•‫توسط‬ ‫که‬ ‫هایی‬ ‫ستون‬ ‫از‬ ‫که‬ ‫شود‬ ‫می‬ ‫داده‬ ‫اجازه‬ ‫این‬ ‫ستونی‬ ‫فرمت‬ ‫در‬Query‫دسترسی‬
‫نمی‬‫نظر‬ ‫صرف‬ ‫شوند‬‫شود‬(‫نشوند‬ ‫بارگذاری‬ ‫اصلی‬ ‫حافظه‬ ‫در‬)‫تمام‬ ‫سطری‬ ‫در‬ ‫ولی‬‫سطر‬
‫گیرد‬ ‫می‬ ‫جای‬ ‫حافظه‬ ‫در‬.
•‫ستون‬ ‫های‬ ‫بخش‬ ‫فقط‬ ‫برو‬ ‫رو‬ ‫شکل‬ ‫در‬ ‫مثال‬2(‫رنگ‬‫پر‬)‫شوند‬ ‫می‬ ‫بارگذاری‬ ‫حافظه‬ ‫در‬.
•‫خواهند‬ ‫می‬ ‫بیشتری‬ ‫اصلی‬ ‫حافظه‬ ‫ستونی‬ ‫های‬ ‫فرمت‬.‫فایل‬ ‫از‬ ‫قسمتی‬ ‫که‬ ‫جوهایی‬ ‫و‬ ‫پرس‬ ‫ای‬‫ر‬‫ب‬
‫مفیدند‬ ‫کنند‬ ‫می‬ ‫پردازش‬ ‫را‬.‫ای‬‫ر‬‫ب‬streaming‫نیستند‬ ‫مناسب‬(‫از‬ ‫معموال‬flush‫یا‬sync
‫کنند‬ ‫نمی‬ ‫پشتیبانی‬.
•Flume‫کند‬ ‫می‬ ‫استفاده‬ ‫سطری‬ ‫های‬ ‫فرمت‬ ‫از‬.
•ORCFile‫در‬Hive‫و‬Parquet‫هستند‬ ‫ستونی‬ ‫های‬ ‫فرمت‬.
‫منابع‬
• White, Tom. Hadoop: The definitive guide, 4th edition. " O'Reilly Media, Inc.", 2015.

ورودی خروجی Hadoop

  • 1.
  • 2.
    ‫مقدمه‬ •‫وجود‬ ‫ها‬ ‫داده‬‫خروجی‬ ‫و‬ ‫ورودی‬ ‫عملیات‬ ‫ای‬‫ر‬‫ب‬ ‫اصولی‬ ‫هدوپ‬ ‫در‬‫دارد‬. •‫این‬ ‫از‬ ‫بعضی‬‫عمومی‬ ‫اصول‬‫مثل‬ ‫هستند‬‫ها‬ ‫داده‬ ‫درستی‬‫یا‬‫سازی‬ ‫فشرده‬. •‫سایر‬‫ابزار‬ ‫اصول‬‫یا‬ ‫ها‬API‫مثل‬ ‫هستند‬ ‫توزیعی‬ ‫های‬ ‫سیستم‬ ‫توسعه‬ ‫ای‬‫ر‬‫ب‬ ‫هایی‬‫سازی‬ ‫سریال‬ ‫های‬ ‫ورک‬ ‫فریم‬.
  • 3.
    ‫ها‬ ‫داده‬ ‫درستی‬ •‫شوند‬‫اب‬‫ر‬‫خ‬ ‫یا‬ ‫بروند‬ ‫دست‬ ‫از‬ ‫سیستم‬ ‫در‬ ‫نباید‬ ‫ها‬ ‫داده‬. •‫پی‬ ‫افزایش‬ ‫ها‬ ‫داده‬ ‫ابی‬‫ر‬‫خ‬ ‫احتمال‬ ‫کند‬ ‫مدیریت‬ ‫بتواند‬ ‫سختی‬ ‫به‬ ‫هدوپ‬ ‫که‬ ‫رسد‬ ‫می‬ ‫حدی‬ ‫به‬ ‫ها‬ ‫داده‬ ‫حجم‬ ‫که‬ ‫هنگامی‬‫دا‬ ‫می‬‫کند‬. •‫از‬ ‫استفاده‬ ‫معیوب‬ ‫های‬ ‫داده‬ ‫تشخیص‬ ‫ای‬‫ر‬‫ب‬ ‫معمول‬ ‫حل‬‫راه‬checksum‫از‬ ‫ها‬ ‫داده‬ ‫خروج‬ ‫و‬ ‫ورود‬ ‫هنگام‬ ‫در‬ ‫است‬ ‫سیستم‬. •‫اگر‬checksum‫شوند‬ ‫می‬ ‫فرض‬ ‫معیوب‬ ‫ها‬ ‫داده‬ ‫بود‬ ‫متفاوت‬ ‫قبلی‬ ‫با‬ ‫شده‬ ‫تولید‬ ‫جدید‬.
  • 4.
    ‫در‬ ‫ها‬ ‫داده‬‫درستی‬HDFS •HDFS‫با‬ ‫را‬ ‫شود‬ ‫می‬ ‫نوشته‬ ‫آن‬ ‫در‬ ‫که‬ ‫هایی‬ ‫داده‬ ‫تمام‬ ‫صحت‬checksum‫کند‬ ‫می‬ ‫آزمایش‬. •‫یک‬checksum‫هر‬ ‫ازای‬ ‫به‬ ‫اضافه‬dfs.bytes-per-checksum 1 (‫فرض‬ ‫پیش‬ ‫صورت‬ ‫به‬512‫بایت‬)‫کند‬ ‫می‬ ‫تولید‬. •‫هر‬checksum،4‫از‬‫کمتر‬ ‫باراضافی‬ ‫این‬‫ر‬‫بناب‬ ‫است‬ ‫بایت‬1%‫است‬. •DataNode‫و‬ ‫ها‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫از‬ ‫قبل‬ ‫دریافتی‬ ‫های‬ ‫داده‬ ‫تایید‬ ‫مقابل‬ ‫در‬ ‫ها‬checksum‫مسئولند‬ ‫ها‬ ‫آن‬. •DN‫تمامی‬ ‫سابقه‬ ‫ها‬checksum‫است‬ ‫مفید‬ ‫معیوب‬ ‫های‬ ‫دیسک‬ ‫شناسایی‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫کند‬ ‫می‬ ‫داری‬ ‫نگه‬ ‫خود‬ ‫در‬ ‫را‬ ‫نشده‬ ‫و‬ ‫شده‬ ‫تایید‬ ‫های‬. •‫دیسک‬ ‫های‬ ‫داده‬ ‫از‬ ‫ای‬ ‫دوره‬ ‫صورت‬ ‫به‬ ‫زمینه‬ ‫پس‬ ‫پردازش‬ ‫یک‬checksum‫گیرد‬ ‫می‬. •‫باشد‬ ‫شده‬ ‫اب‬‫ر‬‫خ‬ ‫بالکی‬‫اگر‬NameNode‫در‬ ‫بالک‬ ‫از‬ ‫کپی‬ ‫یک‬ ‫و‬ ‫گیرد‬ ‫می‬‫درنظر‬ ‫معیوب‬ ‫را‬ ‫آن‬DataNode‫سازد‬ ‫می‬ ‫دیگری‬. 1 ‫فایل‬ ‫در‬ ‫ویژگی‬ ‫این‬hdfs-site.xml‫شود‬‫می‬ ‫پیکربندی‬.
  • 5.
    ‫سازی‬ ‫فشرده‬ •‫سازی‬ ‫فشرده‬‫مزیت‬ ‫دو‬ •‫دهد‬ ‫می‬ ‫کاهش‬ ‫را‬ ‫سازی‬ ‫ذخیره‬ ‫ای‬‫ر‬‫ب‬ ‫نیاز‬ ‫مورد‬ ‫فضای‬. •‫دهد‬ ‫می‬ ‫افزایش‬ ‫را‬ ‫شبکه‬ ‫در‬ ‫ها‬ ‫داده‬ ‫انتقال‬ ‫نرخ‬. Compression format Tool Algorithm Filename extension Splittable? DEFLATE N/A DEFLATE .deflate No gzip gzip DEFLATE .gz No bzip2 bzip2 bzip2 .bz2 Yes LZO lzop LZO .lzo No* LZ4 N/A LZ4 .lz4 No Snappy N/A Snappy .snappy No ‫هدوپ‬ ‫در‬ ‫شده‬ ‫استفاده‬ ‫های‬ ‫فرمت‬ ‫های‬ ‫فایل‬LZO‫دارند‬ ‫را‬ ‫تقسیم‬ ‫قابلیت‬ ‫شوند‬ ‫گذاری‬ ‫ایندکس‬‫اگر‬.
  • 6.
    ‫ساز‬‫فشرده‬ ‫یک‬ ‫از‬‫ای‬ ‫نمونه‬ •‫نویسد‬ ‫می‬ ‫استاندارد‬ ‫خروجی‬ ‫در‬ ‫و‬ ‫کرده‬ ‫فشرده‬ ‫را‬ ‫استاندارد‬ ‫ورودی‬‫زیر‬ ‫کد‬ ‫قطعه‬ 1 . •‫کامل‬ ‫نام‬CompressionCode‫شود‬ ‫می‬ ‫گرفته‬ ‫اول‬ ‫آرگومان‬ ‫عنوان‬ ‫به‬. •‫از‬ReflectionUtils‫سازی‬ ‫فشرده‬ ‫ای‬‫ر‬‫ب‬ ‫سپس‬ ‫و‬ ‫کدک‬ ‫از‬ ‫ای‬ ‫نمونه‬ ‫ساخت‬ ‫ای‬‫ر‬‫ب‬System.out‫شود‬ ‫می‬ ‫استفاده‬. •‫از‬copyBytes‫توسط‬ ‫خروجی‬ ‫به‬ ‫ورودی‬ ‫کردن‬ ‫کپی‬ ‫ای‬‫ر‬‫ب‬CompressionOutputStream‫شود‬ ‫می‬ ‫استفاده‬. % echo "Text" | hadoop StreamCompressor org.apache.hadoop.io.compress.GzipCodec | gunzip - ‫اخوانی‬‫ر‬‫ف‬: 1 Source codes at: https://github.com/tomwhite/hadoop-book
  • 7.
    ‫یک‬ ‫از‬ ‫ای‬‫نمونه‬‫ساز‬‫غیرفشرده‬ •‫به‬ ‫فایل‬ ‫پسوند‬ ‫یک‬ ‫نگاشت‬ ‫ای‬‫ر‬‫ب‬ ‫راهی‬‫زیر‬ ‫برنامه‬CompressionCodec‫متد‬ ‫از‬ ‫استفاده‬ ‫با‬getCodec()‫است‬ ‫داده‬ ‫ارائه‬. •‫از‬RemoveSuffix‫است‬ ‫شده‬ ‫استفاده‬ ‫فشرده‬ ‫فایل‬ ‫پسوند‬ ‫حذف‬ ‫ای‬‫ر‬‫ب‬(‫مثل‬file.gz => file.)
  • 8.
    ‫ورودی‬ ‫بندی‬‫بخش‬ •‫باشد‬ ‫نداشته‬‫بندی‬‫بخش‬ ‫قابلیت‬ ‫و‬ ‫باشد‬ ‫فشرده‬ ‫صورت‬ ‫به‬ ‫فایل‬‫اگر‬-‫مثل‬gzip‫هر‬ ‫ابتدای‬ ‫که‬ ‫مشخص‬ ‫صورت‬ ‫به‬ ‫را‬ ‫فایل‬ ‫بندی‬ ‫بخش‬ ‫که‬ ‫دهد‬ ‫نمی‬ ‫انجام‬ ‫را‬ ‫باشد‬ ‫مشخص‬ ‫بخش‬-‫های‬ ‫پردازش‬ ‫در‬ ‫توان‬ ‫نمی‬MapReduce‫کرد‬ ‫پردازش‬ ‫جداگانه‬ ‫صورت‬ ‫به‬ ‫را‬ ‫بخش‬‫هر‬. •،‫نکند‬ ‫پشتیبانی‬ ‫را‬ ‫بندی‬ ‫بخش‬ ‫سازی‬ ‫فشرده‬‫اگر‬Map‫کند‬ ‫می‬ ‫پیدا‬ ‫ایش‬‫ز‬‫اف‬ ‫پردازش‬ ‫زمان‬ ‫و‬ ‫شود‬ ‫می‬ ‫کم‬ ‫ها‬ ‫اکندگی‬‫ر‬‫پ‬ ‫و‬ ‫یابند‬ ‫می‬ ‫کاهش‬ ‫ها‬. •LZO‫آورد‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫گذاری‬ ‫شاخص‬ ‫ابزار‬ ‫یک‬ ‫وسیله‬ ‫به‬ ‫را‬ ‫بندی‬ ‫بخش‬ ‫امکان‬. •bzip2‫دارد‬ ‫را‬ ‫بندی‬ ‫بخش‬ ‫امکان‬.
  • 9.
    ‫سازی‬ ‫سریال‬ •‫سازی‬ ‫سریال‬(Serialization)‫ذخ‬‫یا‬ ‫شبکه‬ ‫روی‬ ‫انتقال‬ ‫ای‬‫ر‬‫ب‬ ‫ها‬ ‫بایت‬ ‫از‬ ‫جریانی‬ ‫به‬ ‫ساختاریافته‬ ‫اشیای‬ ‫تبدیل‬ ‫آیند‬‫ر‬‫ف‬ ‫به‬‫ها‬ ‫آن‬ ‫دائمی‬ ‫یره‬ ‫شود‬ ‫می‬ ‫گفته‬. •‫سازی‬ ‫سریال‬‫غیر‬(Deserialization)‫شود‬ ‫می‬ ‫گفته‬ ‫آن‬ ‫معکوس‬ ‫عمل‬ ‫به‬. •‫بایستی‬ ‫سازی‬ ‫سریال‬: •‫فشرده‬ •‫سریع‬ •‫توسعه‬ ‫قابل‬)‫شود‬ ‫منطبق‬ ‫جدید‬ ‫نیازهای‬ ‫با‬.( •‫باشد‬ ‫زبانی‬ ‫بین‬ ‫و‬)‫کرد‬ ‫کار‬ ‫آن‬ ‫با‬ ‫بتوان‬ ‫مختلف‬ ‫های‬ ‫زبان‬ ‫های‬ ‫رابط‬ ‫با‬).
  • 10.
    ‫رابط‬Writable •‫رابط‬(interface)Writable‫خروجی‬ ‫باینری‬ ‫جریان‬‫به‬ ‫نوشتن‬ ‫ای‬‫ر‬‫ب‬ ‫متد‬ ‫دو‬(DataOutput)‫ورودی‬ ‫باینری‬ ‫جریان‬ ‫و‬(DataInput) ‫کند‬ ‫می‬ ‫تعریف‬. •‫از‬ ‫توان‬ ‫می‬ ‫مثال‬ ‫طور‬ ‫به‬IntWritable‫نوع‬ ‫ای‬‫ر‬‫ب‬ ‫پوششی‬ ‫عنوان‬ ‫به‬Int‫کرد‬ ‫استفاده‬ ‫جاوا‬.
  • 11.
    ‫مقایسه‬Writable •IntWritable‫رابط‬WritableComparable‫در‬ ‫که‬ ‫کند‬‫می‬ ‫سازی‬ ‫پیاده‬ ‫را‬MapReduce‫است‬ ‫نیاز‬. •‫بدون‬ ‫را‬ ‫رکوردها‬ ‫مقایسه‬ ‫اجازه‬ ‫رابط‬ ‫این‬deserialize‫دهد‬ ‫می‬ ‫اشیا‬ ‫به‬ ‫کردن‬.‫شود‬ ‫نمی‬ ‫ایجاد‬ ‫شی‬ ‫ساخت‬ ‫ای‬‫ر‬‫ب‬ ‫اضافی‬ ‫بار‬. •‫رابط‬RawComparator‫بدون‬ ‫انواع‬ ‫مقایسه‬ ‫اجازه‬deserialize‫دهد‬ ‫می‬ ‫را‬ ‫کردن‬. •WritableComparator‫از‬ ‫عمومی‬ ‫سازی‬ ‫پیاده‬ ‫یک‬RawComparator‫های‬ ‫کالس‬ ‫ای‬‫ر‬‫ب‬WritableComparable‫است‬. •‫انواع‬ ‫ای‬‫ر‬‫ب‬ ‫منبعی‬ ‫عنوان‬ ‫به‬RawComparator‫شود‬ ‫می‬ ‫استفاده‬ ‫ها‬. •‫ای‬‫ر‬‫ب‬‫گر‬ ‫مقایسه‬ ‫یک‬ ‫تست‬ ‫و‬ ‫ساخت‬IntWritable:
  • 12.
    ‫های‬‫کالس‬Writable •‫های‬ ‫کالس‬ ‫از‬‫ای‬ ‫مجموعه‬ ‫هدوپ‬Writable‫پکیج‬ ‫در‬ ‫را‬org.apache.hadoop.io‫است‬ ‫آورده‬ ‫اهم‬‫ر‬‫ف‬. Java primitive Writable implementation Serialized size (bytes) boolean BooleanWritable 1 byte ByteWritable 1 short ShortWritable 2 int IntWritable 4 VIntWritable 1–5 float FloatWritable 4 long LongWritable 8 VLongWritable 1–9 double DoubleWritable 8
  • 13.
    ‫سازی‬ ‫پیاده‬Writable‫سفارشی‬ •‫های‬ ‫کالس‬‫از‬ ‫ای‬ ‫مجموعه‬ ‫هدوپ‬Writable‫پکیج‬ ‫در‬ ‫را‬org.apache.hadoop.io‫است‬ ‫آورده‬ ‫اهم‬‫ر‬‫ف‬. •‫از‬ ‫سفارشی‬ ‫سازی‬ ‫پیاده‬Writable‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫سازی‬ ‫مرتب‬ ‫شیوه‬ ‫و‬ ‫باینری‬ ‫نمایش‬ ‫روی‬ ‫کاملی‬ ‫کنترل‬. •‫کالس‬ ‫یک‬ ‫در‬ ‫را‬ ‫ای‬ ‫داده‬ ‫ساختارهای‬‫تر‬ ‫پیچیده‬ ‫انواع‬ ‫توان‬ ‫می‬Writable‫کرد‬ ‫سازی‬ ‫پیاده‬. •‫ساخت‬ ‫به‬ ‫تمایل‬ ‫که‬ ‫صورتی‬ ‫در‬Writable‫نظیر‬ ‫دیگری‬ ‫سازی‬ ‫سریال‬ ‫ورک‬ ‫فریم‬ ‫از‬ ‫است‬‫بهتر‬ ‫دارید‬ ‫شده‬ ‫سفارشی‬Avro‫کنید‬ ‫استفاده‬.
  • 14.
    ‫های‬‫ورک‬ ‫فریم‬Serialization •‫ورک‬ ‫فریم‬‫یک‬Serialization‫کالس‬ ‫از‬ ‫سازی‬ ‫پیاده‬ ‫با‬Serialization(‫پکیج‬org.apache.hadoop.io.serializer)‫شود‬ ‫می‬ ‫ساخته‬. •‫مثال‬WritableSerialization‫سازی‬ ‫پیاده‬Serialization‫انواع‬ ‫ای‬‫ر‬‫ب‬Writable‫است‬. •‫هدوپ‬‫نام‬ ‫به‬ ‫کالسی‬JavaSerialization‫کند‬ ‫می‬ ‫پشتیبانی‬ ‫جاوا‬ ‫اشیا‬ ‫سازی‬ ‫سریال‬ ‫از‬ ‫که‬ ‫دارد‬. •‫اندازه‬ ‫به‬ ‫ولی‬ ‫است‬ ‫راحت‬ ‫جاوا‬ ‫استاندارد‬ ‫انواع‬ ‫با‬ ‫کردن‬ ‫کار‬ ‫اگرچه‬Writable‫نیست‬ ‫کارا‬ ‫ها‬. •Apache Thrift‫و‬Google Protocol Buffers‫هستند‬ ‫سازی‬ ‫سریال‬ ‫ای‬‫ر‬‫ب‬ ‫محبوب‬ ‫ورک‬ ‫فریم‬ ‫دو‬.
  • 15.
    ‫فایلی‬ ‫داده‬ ‫ساختارهای‬ •‫ترتیبی‬‫فایل‬:‫نظیر‬ ‫هایی‬ ‫فایل‬ ‫ای‬‫ر‬‫ب‬log file‫کالس‬ ‫گیرد‬ ‫می‬ ‫ار‬‫ر‬‫ق‬ ‫خط‬ ‫یک‬ ‫در‬ ‫رکورد‬‫هر‬ ‫که‬SequenceFile‫است‬ ‫شده‬ ‫احی‬‫ر‬‫ط‬ ‫هدوپ‬. •‫کلید‬ ‫باینری‬ ‫ساختار‬ ‫کالس‬ ‫این‬-‫کند‬ ‫می‬ ‫اهم‬‫ر‬‫ف‬ ‫را‬ ‫مقدار‬. •‫کلید‬ ‫یک‬ ‫از‬ ‫توان‬ ‫می‬ ‫نوشتن‬ ‫ای‬‫ر‬‫ب‬(‫از‬ ‫توان‬ ‫می‬ ‫نبود‬ ‫موجود‬‫اگر‬TimeStamp+‫مقدار‬ ‫یک‬)‫کرد‬ ‫استفاده‬. •‫از‬ ‫نمونه‬ ‫یک‬ ‫هم‬ ‫خواندن‬ ‫ای‬‫ر‬‫ب‬SequenceFile.Reader‫متد‬ ‫اخوانی‬‫ر‬‫ف‬ ‫ار‬‫ر‬‫تک‬ ‫با‬ ‫و‬ ‫کنیم‬ ‫می‬ ‫ایجاد‬next()‫خوانیم‬ ‫می‬ ‫تیب‬‫ر‬‫ت‬ ‫به‬ ‫را‬ ‫رکوردها‬. •Sync point:‫در‬ ‫ای‬ ‫نقطه‬Stream‫که‬ ‫صورتی‬ ‫در‬ ‫رکورد‬ ‫مرز‬ ‫با‬ ‫دوباره‬ ‫هماهنگی‬ ‫ای‬‫ر‬‫ب‬ ‫تواند‬ ‫می‬ ‫که‬ ‫است‬reader‫استفاده‬ ‫شود‬ ‫مفقود‬ ‫شود‬. •‫از‬ ‫بعد‬ ‫مثال‬ ‫طور‬ ‫به‬seek‫فایل‬ ‫از‬ ‫دلخواه‬ ‫مکان‬ ‫یک‬ ‫به‬.
  • 16.
    ‫ترتیبی‬ ‫فایل‬ ‫ساختار‬ •‫است‬‫شده‬ ‫تشکیل‬ ‫رکوردها‬ ‫از‬ ‫ای‬ ‫مجموعه‬ ‫آن‬ ‫دنبال‬ ‫به‬ ‫و‬ ‫هدر‬ ‫یک‬ ‫از‬ ‫ترتیبی‬ ‫فایل‬. •‫های‬ ‫نشانه‬Sync‫از‬‫کمتر‬ ‫که‬ ‫ند‬‫ر‬‫گی‬ ‫می‬ ‫ار‬‫ر‬‫ق‬ ‫تیبی‬‫ر‬‫ت‬ ‫فایل‬ ‫رکوردهای‬ ‫بین‬1%‫کنند‬ ‫می‬ ‫ایجاد‬ ‫اضافه‬ ‫بار‬. •‫رکوردی‬ ،‫است‬ ‫شده‬ ‫تعریف‬ ‫سازی‬ ‫فشرده‬ ‫نوع‬ ‫دو‬(‫رکورد‬‫هر‬ ‫ازای‬ ‫به‬)‫بالکی‬ ‫و‬(‫شده‬ ‫فشرده‬ ‫بالک‬ ‫یک‬ ‫در‬ ‫رکورد‬ ‫چند‬.)‫فش‬ ‫بدون‬ ‫ای‬ ‫نمونه‬‫زیر‬ ‫شکل‬‫است‬ ‫سازی‬ ‫رده‬.
  • 17.
    MapFile •‫یک‬MapFile‫کند‬ ‫می‬ ‫مشخص‬‫را‬ ‫کلیدها‬ ‫محل‬ ‫شاخصی‬ ‫با‬ ‫که‬ ‫است‬ ‫شده‬ ‫مرتب‬ ‫ترتیبی‬ ‫فایل‬. •‫فایل‬ ‫کلیدهای‬ ‫از‬ ‫قسمتی‬ ‫آدرس‬ ‫که‬ ‫است‬ ‫تیبی‬‫ر‬‫ت‬ ‫فایل‬ ‫یک‬ ‫خود‬ ‫شاخص‬ ‫فایل‬Map‫هر‬ ‫ازای‬ ‫به‬ ‫مثال‬ ‫کند‬ ‫می‬ ‫مشخص‬ ‫را‬128‫شود‬ ‫می‬ ‫درج‬ ‫شاخص‬ ‫یک‬ ‫کلید‬. •‫است‬ ‫اصلی‬ ‫داده‬ ‫فایل‬ ‫به‬ ‫سریع‬ ‫ارجاع‬ ‫ای‬‫ر‬‫ب‬ ‫اصلی‬ ‫حافظه‬ ‫در‬ ‫شاخص‬ ‫فایل‬ ‫دادن‬ ‫ار‬‫ر‬‫ق‬ ‫اصلی‬ ‫ایده‬.
  • 18.
    ‫ها‬‫فایل‬ ‫فرمت‬‫دیگر‬ ‫انواع‬ •‫داده‬‫های‬ ‫فایل‬Avro:‫اند‬ ‫شده‬ ‫ساخته‬ ‫بزرگ‬ ‫خیلی‬ ‫های‬ ‫داده‬ ‫پردازش‬ ‫ای‬‫ر‬‫ب‬ ‫که‬ ‫هستند‬ ‫ترتیبی‬ ‫های‬ ‫فایل‬ ‫شبیه‬. •‫هستند‬ ‫استفاده‬ ‫قابل‬ ‫نویسی‬ ‫نامه‬‫ر‬‫ب‬ ‫مختلف‬ ‫های‬ ‫زبان‬ ‫در‬ ‫و‬ ‫هستند‬ ‫بندی‬ ‫بخش‬ ‫قابل‬ ‫و‬ ‫فشرده‬. •،‫ترتیبی‬ ‫های‬ ‫فایل‬Map‫و‬Avro‫سطری‬ ‫های‬ ‫فرمت‬(row-oriented)‫هستند‬.‫می‬ ‫ذخیره‬ ‫فایل‬ ‫در‬ ‫پیوسته‬ ‫صورت‬ ‫به‬‫سطر‬‫هر‬‫مقادیر‬ ‫شوند‬. •‫ستونی‬ ‫فرمت‬ ‫یک‬ ‫در‬(column-oriented)‫س‬ ‫ساختار‬ ‫یک‬ ‫در‬ ‫بخش‬‫هر‬ ‫سپس‬ ‫شوند‬ ‫می‬ ‫تقسیم‬ ‫هایی‬ ‫بخش‬ ‫به‬ ‫فایل‬ ‫یک‬ ‫سطرهای‬‫تونی‬ ‫شود‬ ‫می‬ ‫داری‬ ‫نگه‬. •‫و‬ ‫دوم‬ ‫ستون‬ ‫در‬‫سطر‬‫هر‬‫مقادیر‬ ‫سپس‬ ،‫شوند‬ ‫می‬ ‫ذخیره‬ ‫ابتدا‬ ‫در‬ ‫اول‬ ‫ستون‬ ‫در‬‫سطر‬‫هر‬‫مقادیر‬. ...
  • 19.
    ‫ستونی‬ ‫مقابل‬ ‫در‬‫سطری‬ ‫فرمت‬ •‫توسط‬ ‫که‬ ‫هایی‬ ‫ستون‬ ‫از‬ ‫که‬ ‫شود‬ ‫می‬ ‫داده‬ ‫اجازه‬ ‫این‬ ‫ستونی‬ ‫فرمت‬ ‫در‬Query‫دسترسی‬ ‫نمی‬‫نظر‬ ‫صرف‬ ‫شوند‬‫شود‬(‫نشوند‬ ‫بارگذاری‬ ‫اصلی‬ ‫حافظه‬ ‫در‬)‫تمام‬ ‫سطری‬ ‫در‬ ‫ولی‬‫سطر‬ ‫گیرد‬ ‫می‬ ‫جای‬ ‫حافظه‬ ‫در‬. •‫ستون‬ ‫های‬ ‫بخش‬ ‫فقط‬ ‫برو‬ ‫رو‬ ‫شکل‬ ‫در‬ ‫مثال‬2(‫رنگ‬‫پر‬)‫شوند‬ ‫می‬ ‫بارگذاری‬ ‫حافظه‬ ‫در‬. •‫خواهند‬ ‫می‬ ‫بیشتری‬ ‫اصلی‬ ‫حافظه‬ ‫ستونی‬ ‫های‬ ‫فرمت‬.‫فایل‬ ‫از‬ ‫قسمتی‬ ‫که‬ ‫جوهایی‬ ‫و‬ ‫پرس‬ ‫ای‬‫ر‬‫ب‬ ‫مفیدند‬ ‫کنند‬ ‫می‬ ‫پردازش‬ ‫را‬.‫ای‬‫ر‬‫ب‬streaming‫نیستند‬ ‫مناسب‬(‫از‬ ‫معموال‬flush‫یا‬sync ‫کنند‬ ‫نمی‬ ‫پشتیبانی‬. •Flume‫کند‬ ‫می‬ ‫استفاده‬ ‫سطری‬ ‫های‬ ‫فرمت‬ ‫از‬. •ORCFile‫در‬Hive‫و‬Parquet‫هستند‬ ‫ستونی‬ ‫های‬ ‫فرمت‬.
  • 20.
    ‫منابع‬ • White, Tom.Hadoop: The definitive guide, 4th edition. " O'Reilly Media, Inc.", 2015.