Böyük verilənlərdə fayl formatları: qısa təhsil proqramı

Böyük verilənlərdə fayl formatları: qısa təhsil proqramı
Remarin tərəfindən Hava İlahi

Komanda Mail.ru Bulud Həlləri təklif məqalə tərcüməsi Clairvoyant-dan mühəndis Rahul Bhatia, böyük verilənlərdə hansı fayl formatlarının olduğu, Hadoop formatlarının ən ümumi xüsusiyyətləri nələrdir və hansı formatdan istifadə etmək daha yaxşıdır.

Niyə müxtəlif fayl formatlarına ehtiyac var?

MapReduce və Spark kimi HDFS-i dəstəkləyən proqramlar üçün əsas performans darboğazı məlumatların axtarışı, oxunması və yazılması üçün lazım olan vaxtdır. Əgər sabit bir sxemdən çox inkişaf edən bir sxemimiz varsa və ya bəzi saxlama məhdudiyyətləri varsa, bu problemlər böyük məlumat dəstlərinin idarə edilməsinin çətinliyi ilə mürəkkəbləşir.

Böyük verilənlərin emalı saxlama altsistemindəki yükü artırır - Hadoop xətaya dözümlülük əldə etmək üçün məlumatları lazımsız şəkildə saxlayır. Disklərə əlavə olaraq prosessor, şəbəkə, giriş/çıxış sistemi və s. Məlumatların həcmi artdıqca, onların işlənməsi və saxlanması xərcləri də artır.

Müxtəlif fayl formatları Hadoop məhz bu problemləri həll etmək üçün icad edilmişdir. Müvafiq fayl formatının seçilməsi bəzi əhəmiyyətli faydalar təmin edə bilər:

  1. Daha sürətli oxuma vaxtı.
  2. Daha sürətli qeyd vaxtı.
  3. Paylaşılan fayllar.
  4. Sxem təkamülü üçün dəstək.
  5. Genişlənmiş sıxılma dəstəyi.

Bəzi fayl formatları ümumi istifadə üçün, digərləri daha konkret istifadələr üçün, bəziləri isə xüsusi məlumat xüsusiyyətlərinə cavab vermək üçün nəzərdə tutulub. Beləliklə, seçim həqiqətən olduqca böyükdür.

Avro fayl formatı

Uğrunda məlumatların seriallaşdırılması Avro geniş istifadə olunur - bu sətir əsasında, yəni Hadoop-da sətir məlumat saxlama formatı. O, sxemi JSON formatında saxlayır, istənilən proqram tərəfindən oxunmasını və şərhini asanlaşdırır. Məlumatın özü ikili formatda, yığcam və səmərəlidir.

Avro-nun seriallaşdırma sistemi dil neytraldır. Fayllar müxtəlif dillərdə işlənə bilər, hazırda C, C++, C#, Java, Python və Ruby.

Avro-nun əsas xüsusiyyəti onun zamanla dəyişən, yəni təkamül edən məlumat sxemləri üçün möhkəm dəstəyidir. Avro sxem dəyişikliklərini başa düşür - sahələrin silinməsi, əlavə edilməsi və ya dəyişdirilməsi.

Avro müxtəlif məlumat strukturlarını dəstəkləyir. Məsələn, siz massiv, sadalanan tip və alt qeyddən ibarət qeyd yarada bilərsiniz.

Böyük verilənlərdə fayl formatları: qısa təhsil proqramı
Bu format məlumat gölünün eniş (keçid) zonasına yazmaq üçün idealdır (məlumat gölü, və ya məlumat gölü - birbaşa məlumat mənbələrinə əlavə olaraq müxtəlif növ məlumatların saxlanması üçün nümunələr toplusu).

Beləliklə, bu format aşağıdakı səbəblərə görə məlumat gölünün eniş zonasına yazmaq üçün ən uyğundur:

  1. Bu zonadan olan məlumatlar adətən aşağı sistemlər tərəfindən sonrakı emal üçün bütövlükdə oxunur və bu halda sıra əsaslı format daha səmərəlidir.
  2. Aşağı axın sistemləri sxem cədvəllərini fayllardan asanlıqla əldə edə bilər - sxemləri xarici meta yaddaşda ayrıca saxlamağa ehtiyac yoxdur.
  3. Orijinal sxemə edilən hər hansı dəyişiklik asanlıqla işlənir (sxem təkamülü).

Parket fayl formatı

Parket, saxlayan Hadoop üçün açıq mənbəli fayl formatıdır düz sütunlu formatda iç-içə məlumat strukturları.

Ənənəvi sıra yanaşması ilə müqayisədə, Parket saxlama və performans baxımından daha səmərəlidir.

Bu, xüsusilə geniş (çox sütunlu) cədvəldən xüsusi sütunları oxuyan sorğular üçün faydalıdır. Fayl formatı sayəsində yalnız lazımi sütunlar oxunur, beləliklə I/O minimum səviyyədə saxlanılır.

Kiçik bir təxribat və izahat: Hadoop-da Parket fayl formatını daha yaxşı başa düşmək üçün gəlin sütun əsaslı, yəni sütunlu formatın nə olduğunu görək. Bu format hər bir sütun üçün oxşar dəyərləri bir yerdə saxlayır.

Məsələn, qeyd ID, Ad və Departament sahələrini ehtiva edir. Bu halda, bütün ID sütun dəyərləri, Ad sütunu dəyərləri və s. birlikdə saxlanılacaq. Cədvəl belə görünəcək:

ID
ad
şöbə

1
emp1
d1

2
emp2
d2

3
emp3
d3

Sətir formatında məlumatlar aşağıdakı kimi saxlanılacaq:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Sütunlu fayl formatında eyni məlumatlar belə saxlanılacaq:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Cədvəldən bir neçə sütunu sorğulamağınız lazım olduqda sütun formatı daha səmərəli olur. O, yalnız tələb olunan sütunları oxuyacaq, çünki onlar bitişikdir. Beləliklə, giriş/çıxış əməliyyatları minimuma endirilir.

Məsələn, sizə yalnız NAME sütunu lazımdır. IN sim formatı Verilənlər dəstindəki hər bir qeyd yüklənməlidir, sahə üzrə təhlil edilməlidir və sonra NAME datası çıxarılmalıdır. Sütun formatı birbaşa Ad sütununa keçməyə imkan verir, çünki həmin sütunun bütün dəyərləri birlikdə saxlanılır. Bütün qeydi skan etmək lazım deyil.

Beləliklə, sütun formatı sorğunun performansını yaxşılaşdırır, çünki tələb olunan sütunlara çatmaq üçün daha az axtarış vaxtı tələb olunur və yalnız istədiyiniz sütunlar oxunduğu üçün I/O əməliyyatlarının sayını azaldır.

Unikal xüsusiyyətlərdən biri Parket ki, bu formatda ola bilər məlumatların daxili strukturlarla saxlanması. Bu o deməkdir ki, Parket faylında hətta iç-içə daxil edilmiş sahələr də iç-içə strukturun bütün sahələrini oxumadan ayrı-ayrılıqda oxuna bilər. Parket daxili strukturları saxlamaq üçün parçalama və yığma alqoritmindən istifadə edir.

Böyük verilənlərdə fayl formatları: qısa təhsil proqramı
Hadoop-da Parket fayl formatını başa düşmək üçün aşağıdakı şərtləri bilməlisiniz:

  1. Simlər qrupu (sətir qrupu): verilənlərin sətirlərə məntiqi üfüqi bölünməsi. Satır qrupu verilənlər dəstindəki hər bir sütunun bir fraqmentindən ibarətdir.
  2. Sütun fraqmenti (sütun yığını): Müəyyən bir sütunun bir parçası. Bu sütun fraqmentləri müəyyən sətirlər qrupunda yaşayır və faylda bitişik olacağına zəmanət verilir.
  3. Səhifə (səhifə): Sütun fraqmentləri bir-birinin ardınca yazılmış səhifələrə bölünür. Səhifələrin ümumi başlığı var, ona görə də oxuyarkən lazımsızları atlaya bilərsiniz.

Böyük verilənlərdə fayl formatları: qısa təhsil proqramı
Burada başlıq sadəcə sehrli nömrəni ehtiva edir PAR1 (4 bayt) faylı Parket faylı kimi müəyyən edir.

Altbilgidə aşağıdakılar deyilir:

  1. Hər sütunun metadatasının başlanğıc koordinatlarını ehtiva edən fayl metadatası. Oxuyarkən, maraq doğuran bütün sütun fraqmentlərini tapmaq üçün əvvəlcə faylın metadatasını oxumalısınız. Sonra sütun hissələri ardıcıl olaraq oxunmalıdır. Digər metadata format versiyasını, sxemi və istənilən əlavə açar-dəyər cütlərini ehtiva edir.
  2. Metadata uzunluğu (4 bayt).
  3. sehrli nömrə PAR1 (4 bayt).

ORC fayl formatı

Optimallaşdırılmış sətir-sütun fayl formatı (Optimallaşdırılmış Sıra Sütun, CRO) məlumatları saxlamaq üçün çox səmərəli üsul təklif edir və digər formatların məhdudiyyətlərini aradan qaldırmaq üçün nəzərdə tutulmuşdur. Böyük, mürəkkəb və ya əl ilə saxlanılan indekslərin qurulmasını tələb etmədən, lazımsız detalları atlamağa imkan verən məlumatları mükəmməl kompakt formada saxlayır.

ORC formatının üstünlükləri:

  1. Bir fayl hər tapşırığın çıxışıdır və bu, NameNode (ad node) üzərindəki yükü azaldır.
  2. DateTime, onluq və mürəkkəb məlumat növləri (struktur, siyahı, xəritə və birlik) daxil olmaqla Hive məlumat növləri üçün dəstək.
  3. Müxtəlif RecordReader prosesləri ilə eyni faylın eyni vaxtda oxunması.
  4. Markerləri skan etmədən faylları bölmək imkanı.
  5. Faylın altbilgisindəki məlumatlara əsaslanaraq oxumaq/yazmaq prosesləri üçün maksimum mümkün yığın yaddaşının ayrılmasının qiymətləndirilməsi.
  6. Metadata Protocol Buffers binar serializasiya formatında saxlanılır, bu da sahələri əlavə etməyə və silməyə imkan verir.

Böyük verilənlərdə fayl formatları: qısa təhsil proqramı
ORC sətir kolleksiyalarını bir faylda saxlayır və kolleksiya daxilində sətir məlumatları sütunlu formatda saxlanılır.

ORC faylı zolaqlar adlanan sətir qruplarını və faylın altbilgisində dəstəkləyici məlumatları saxlayır. Faylın sonundakı Postscript sıxılma parametrlərini və sıxılmış altbilginin ölçüsünü ehtiva edir.

Standart zolaq ölçüsü 250 MB-dır. Belə böyük zolaqlar sayəsində HDFS-dən oxumaq daha səmərəli həyata keçirilir: böyük bitişik bloklarda.

Fayl altbilgisi fayldakı zolaqların siyahısını, hər zolağa düşən sətirlərin sayını və hər bir sütunun məlumat tipini qeyd edir. Hər bir sütun üçün count, min, max və sumun nəticə dəyəri də orada yazılır.

Şeridin altbilgisində axın yerlərinin kataloqu var.

Cədvəlləri skan edərkən sıra məlumatlarından istifadə olunur.

İndeks məlumatları hər bir sütun üçün minimum və maksimum dəyərləri və hər bir sütundakı sətirlərin mövqeyini ehtiva edir. ORC indeksləri sorğulara cavab vermək üçün deyil, yalnız zolaqlar və sıra qrupları seçmək üçün istifadə olunur.

Müxtəlif fayl formatlarının müqayisəsi

Avro Parketlə müqayisədə

  1. Avro bir sıra saxlama formatıdır, Parket isə məlumatları sütunlarda saxlayır.
  2. Parket analitik sorğular üçün daha uyğundur, yəni oxu əməliyyatları və məlumat sorğusu yazmaqdan daha səmərəlidir.
  3. Avro-da yazma əməliyyatları Parketdən daha səmərəli şəkildə yerinə yetirilir.
  4. Avro dövrə təkamülü ilə daha yetkin məşğul olur. Parket yalnız sxemlərin əlavə edilməsini, Avro isə çoxfunksiyalı təkamülü, yəni sütunların əlavə edilməsini və ya dəyişdirilməsini dəstəkləyir.
  5. Parket, çox sütunlu cədvəldə sütunların bir hissəsini sorğulamaq üçün idealdır. Avro bütün sütunları sorğuladığımız ETL əməliyyatları üçün uyğundur.

ORC və Parket

  1. Parket daxili məlumatları daha yaxşı saxlayır.
  2. ORC predikat basmaq üçün daha uyğundur.
  3. ORC ACID xüsusiyyətlərini dəstəkləyir.
  4. ORC məlumatları daha yaxşı sıxışdırır.

Mövzuda başqa nə oxumaq olar:

  1. Buludda böyük məlumatların təhlili: bir şirkət necə məlumat yönümlü ola bilər.
  2. Verilənlər Bazası Sxemlərinə Təvazökar Bələdçi.
  3. Rəqəmsal transformasiya haqqında telegram kanalımız.

Mənbə: www.habr.com

Добавить комментарий