ورودی خروجی hadoop

20
ورودی/ خروجیHadoop ی رضای ناصر[email protected]

Upload: nasser-rezaei

Post on 13-Apr-2017

178 views

Category:

Data & Analytics


1 download

TRANSCRIPT

Page 1: ورودی خروجی Hadoop

Hadoopخروجی /ورودیناصر رضایی

[email protected]

Page 2: ورودی خروجی Hadoop

مقدمه

.دارددر هدوپ اصولی برای عملیات ورودی و خروجی داده ها وجود •.فشرده سازییا درستی داده ها هستند مثل اصول عمومی بعضی از این •

.فریم ورک های سریال سازیهایی برای توسعه سیستم های توزیعی هستند مثل APIها یا اصول ابزار سایر •

Page 3: ورودی خروجی Hadoop

درستی داده ها

.داده ها نباید در سیستم از دست بروند یا خراب شوند•دا هنگامی که حجم داده ها به حدی می رسد که هدوپ به سختی بتواند مدیریت کند احتمال خرابی داده ها افزایش پی•

.کندمی

در هنگام ورود و خروج داده ها از checksumراه حل معمول برای تشخیص داده های معیوب استفاده از •.سیستم است

.جدید تولید شده با قبلی متفاوت بود داده ها معیوب فرض می شوندchecksumاگر •

Page 4: ورودی خروجی Hadoop

HDFSدرستی داده ها در

•HDFS صحت تمام داده هایی که در آن نوشته می شود را باchecksumآزمایش می کند.dfs.bytes-per-checksumاضافه به ازای هر checksumیک •

1.تولید می کند( بایت512به صورت پیش فرض )

.است% 1بایت است بنابراین باراضافی کمتر از checksum ،4هر •

•DataNode ها در مقابل تایید داده های دریافتی قبل از ذخیره سازی داده ها وchecksumآن ها مسئولند.•DN ها سابقه تمامیchecksumهای تایید شده و نشده را در خود نگه داری می کند که برای شناسایی دیسک های معیوب مفید است.

.می گیردchecksumیک پردازش پس زمینه به صورت دوره ای از داده های دیسک •

.دیگری می سازدDataNodeآن را معیوب درنظر می گیرد و یک کپی از بالک در NameNodeاگر بالکی خراب شده باشد •

1.پیکربندی می شودhdfs-site.xmlاین ویژگی در فایل

Page 5: ورودی خروجی Hadoop

فشرده سازی

دو مزیت فشرده سازی•.فضای مورد نیاز برای ذخیره سازی را کاهش می دهد•

.نرخ انتقال داده ها در شبکه را افزایش می دهد•

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فایل های

Page 6: ورودی خروجی Hadoop

نمونه ای از یک فشرده ساز

قطعه کد زیر ورودی استاندارد را فشرده کرده و در خروجی استاندارد می نویسد•1

..به عنوان آرگومان اول گرفته می شودCompressionCodeنام کامل •

.استفاده می شودSystem.outبرای ساخت نمونه ای از کدک و سپس برای فشرده سازی ReflectionUtilsاز •

. استفاده می شودCompressionOutputStreamبرای کپی کردن ورودی به خروجی توسط copyBytesاز •

% echo "Text" | hadoop StreamCompressor org.apache.hadoop.io.compress.GzipCodec | gunzip -

:فراخوانی

1Source codes at: https://github.com/tomwhite/hadoop-book

Page 7: ورودی خروجی Hadoop

غیرفشرده سازنمونه ای از یک

.ارائه داده است()getCodecبا استفاده از متد CompressionCodecبرنامه زیر راهی برای نگاشت یک پسوند فایل به •(.file.gz => fileمثل )برای حذف پسوند فایل فشرده استفاده شده است RemoveSuffixاز •

Page 8: ورودی خروجی Hadoop

بخش بندی ورودی

که بخش بندی فایل را به صورت مشخص که ابتدای هر gzipمثل -اگر فایل به صورت فشرده باشد و قابلیت بخش بندی نداشته باشد •.هر بخش را به صورت جداگانه پردازش کردMapReduceنمی توان در پردازش های -بخش مشخص باشد را انجام نمی دهد

.ها کاهش می یابند و پراکندگی ها کم می شود و زمان پردازش افزایش پیدا می کندMapاگر فشرده سازی بخش بندی را پشتیبانی نکند، •

•LZOامکان بخش بندی را به وسیله یک ابزار شاخص گذاری فراهم می آورد.

•bzip2امکان بخش بندی را دارد.

Page 9: ورودی خروجی Hadoop

سریال سازی

یره دائمی آن ها به فرآیند تبدیل اشیای ساختاریافته به جریانی از بایت ها برای انتقال روی شبکه یا ذخ( Serialization)سریال سازی •.گفته می شود

.به عمل معکوس آن گفته می شود(Deserialization)غیر سریال سازی •

:سریال سازی بایستی•فشرده•

سریع•

).با نیازهای جدید منطبق شود(قابل توسعه •

.(با رابط های زبان های مختلف بتوان با آن کار کرد(و بین زبانی باشد •

Page 10: ورودی خروجی Hadoop

Writableرابط

( DataInput)و جریان باینری ورودی (DataOutput)دو متد برای نوشتن به جریان باینری خروجی Writable( interface)رابط •.تعریف می کند

.جاوا استفاده کردIntبه عنوان پوششی برای نوع IntWritableبه طور مثال می توان از •

Page 11: ورودی خروجی Hadoop

Writableمقایسه

•IntWritable رابطWritableComparable را پیاده سازی می کند که درMapReduceنیاز است..بار اضافی برای ساخت شی ایجاد نمی شود. کردن به اشیا می دهدdeserializeاین رابط اجازه مقایسه رکوردها را بدون •

.کردن را می دهدdeserializeاجازه مقایسه انواع بدون RawComparatorرابط ••WritableComparator یک پیاده سازی عمومی ازRawComparator برای کالس هایWritableComparableاست.

.ها استفاده می شودRawComparatorبه عنوان منبعی برای انواع •

:IntWritableساخت و تست یک مقایسه گر برای •

Page 12: ورودی خروجی Hadoop

Writableکالس های

.فراهم آورده استorg.apache.hadoop.ioرا در پکیج Writableهدوپ مجموعه ای از کالس های •

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

Page 13: ورودی خروجی Hadoop

سفارشیWritableپیاده سازی

.فراهم آورده استorg.apache.hadoop.ioرا در پکیج Writableهدوپ مجموعه ای از کالس های •

.کنترل کاملی روی نمایش باینری و شیوه مرتب سازی فراهم می کندWritableپیاده سازی سفارشی از •

.پیاده سازی کردWritableمی توان انواع پیچیده تر ساختارهای داده ای را در یک کالس •

.استفاده کنیدAvroسفارشی شده دارید بهتر است از فریم ورک سریال سازی دیگری نظیر Writableدر صورتی که تمایل به ساخت •

Page 14: ورودی خروجی Hadoop

Serializationفریم ورک های

.ساخته می شود( org.apache.hadoop.io.serializerپکیج )Serializationبا پیاده سازی از کالس Serializationیک فریم ورک •.استWritableبرای انواع Serializationپیاده سازی WritableSerializationمثال •

.دارد که از سریال سازی اشیا جاوا پشتیبانی می کندJavaSerializationکالسی به نام هدوپ•

.ها کارا نیستWritableاگرچه کار کردن با انواع استاندارد جاوا راحت است ولی به اندازه •

•Apache Thrift وGoogle Protocol Buffersدو فریم ورک محبوب برای سریال سازی هستند.

Page 15: ورودی خروجی Hadoop

ساختارهای داده فایلی

.هدوپ طراحی شده استSequenceFileکه هر رکورد در یک خط قرار می گیرد کالس log fileبرای فایل هایی نظیر : فایل ترتیبی•.مقدار را فراهم می کند-این کالس ساختار باینری کلید•

.استفاده کرد( یک مقدار+ TimeStampاگر موجود نبود می توان از )برای نوشتن می توان از یک کلید •

.رکوردها را به ترتیب می خوانیم()nextایجاد می کنیم و با تکرار فراخوانی متد SequenceFile.Readerبرای خواندن هم یک نمونه از •

•Sync point : نقطه ای درStream است که می تواند برای هماهنگی دوباره با مرز رکورد در صورتی کهreader مفقود شود استفاده.شود.به یک مکان دلخواه از فایلseekبه طور مثال بعد از •

Page 16: ورودی خروجی Hadoop

ساختار فایل ترتیبی

.فایل ترتیبی از یک هدر و به دنبال آن مجموعه ای از رکوردها تشکیل شده است•.بار اضافه ایجاد می کنند% 1بین رکوردهای فایل ترتیبی قرار می گیرند که کمتر از Syncنشانه های •

.رده سازی استشکل زیر نمونه ای بدون فش(. چند رکورد در یک بالک فشرده شده)و بالکی ( به ازای هر رکورد)دو نوع فشرده سازی تعریف شده است، رکوردی •

Page 17: ورودی خروجی Hadoop

MapFile

.فایل ترتیبی مرتب شده است که با شاخصی محل کلیدها را مشخص می کندMapFileیک •.کلید یک شاخص درج می شود128را مشخص می کند مثال به ازای هر Mapفایل شاخص خود یک فایل ترتیبی است که آدرس قسمتی از کلیدهای فایل •

.ایده اصلی قرار دادن فایل شاخص در حافظه اصلی برای ارجاع سریع به فایل داده اصلی است•

Page 18: ورودی خروجی Hadoop

انواع دیگر فرمت فایل ها

.شبیه فایل های ترتیبی هستند که برای پردازش داده های خیلی بزرگ ساخته شده اند: Avroفایل های داده •.فشرده و قابل بخش بندی هستند و در زبان های مختلف برنامه نویسی قابل استفاده هستند•

مقادیر هر سطر به صورت پیوسته در فایل ذخیره می . هستند( row-oriented)فرمت های سطری Avroو Mapفایل های ترتیبی، •.شوند

تونی سطرهای یک فایل به بخش هایی تقسیم می شوند سپس هر بخش در یک ساختار س(column-oriented)در یک فرمت ستونی •.نگه داری می شود

... .مقادیر هر سطر در ستون اول در ابتدا ذخیره می شوند، سپس مقادیر هر سطر در ستون دوم و •

Page 19: ورودی خروجی Hadoop

فرمت سطری در مقابل ستونی

دسترسی Queryدر فرمت ستونی این اجازه داده می شود که از ستون هایی که توسط •

سطرولی در سطری تمام ( در حافظه اصلی بارگذاری نشوند)شود شوند صرف نظر نمی

.در حافظه جای می گیرد

.در حافظه بارگذاری می شوند( پر رنگ)2مثال در شکل رو برو فقط بخش های ستون •

برای پرس و جوهایی که قسمتی از فایل . فرمت های ستونی حافظه اصلی بیشتری می خواهند•

syncیا flushمعموال از )مناسب نیستند streamingبرای . را پردازش می کنند مفیدند

.پشتیبانی نمی کنند

•Flumeاز فرمت های سطری استفاده می کند.

•ORCFile درHive وParquetفرمت های ستونی هستند.

Page 20: ورودی خروجی Hadoop

منابع

• White, Tom. Hadoop: The definitive guide, 4th edition. " O'Reilly Media, Inc.", 2015.