Үлкен деректердегі файл пішімдері: қысқаша білім беру бағдарламасы

Үлкен деректердегі файл пішімдері: қысқаша білім беру бағдарламасы
Ауа райы құдайы Ремарин

команда Mail.ru бұлтты шешімдері ұсыныстар мақала аудармасы Clairvoyant инженері Рахул Бхатия үлкен деректерде қандай файл пішімдері бар, Hadoop пішімдерінің ең көп таралған мүмкіндіктері қандай және қай пішімді қолданған дұрыс.

Неліктен әртүрлі файл пішімдері қажет?

MapReduce және Spark сияқты HDFS қолдайтын қолданбалар үшін негізгі өнімділік кедергісі деректерді іздеуге, оқуға және жазуға кететін уақыт болып табылады. Бұл мәселелер үлкен деректер жиынын басқару қиындығымен күрделене түседі, егер бізде бекітілген схемадан гөрі дамып келе жатқан схема болса немесе кейбір сақтау шектеулері болса.

Үлкен деректерді өңдеу сақтау ішкі жүйесіне жүктемені арттырады - Hadoop қатеге төзімділікке қол жеткізу үшін деректерді артық сақтайды. Дискілерден басқа процессор, желі, енгізу/шығару жүйесі және т.б. Мәліметтердің көлемі өскен сайын оны өңдеу және сақтау құны да өседі.

Түрлі файл пішімдері Hadoop дәл осы мәселелерді шешу үшін ойлап тапты. Сәйкес файл пішімін таңдау кейбір маңызды артықшылықтарды қамтамасыз етеді:

  1. Жылдам оқу уақыты.
  2. Жылдамырақ жазу уақыты.
  3. Ортақ файлдар.
  4. Схема эволюциясын қолдау.
  5. Кеңейтілген қысу қолдауы.

Кейбір файл пішімдері жалпы пайдалануға арналған, басқалары нақтырақ пайдалану үшін, ал кейбіреулері нақты деректер сипаттамаларына сай жасалған. Сондықтан таңдау шынымен өте үлкен.

Avro файл пішімі

үшін деректерді сериялау Авро кеңінен қолданылады - бұл жолға негізделген, яғни Hadoop жүйесіндегі деректерді сақтау жолының пішімі. Ол схеманы JSON пішімінде сақтайды, бұл кез келген бағдарлама арқылы оқуды және түсіндіруді жеңілдетеді. Деректер екілік форматта, ықшам және тиімді.

Avro сериализация жүйесі тілге бейтарап. Файлдарды әртүрлі тілдерде өңдеуге болады, қазіргі уақытта C, C++, C#, Java, Python және Ruby.

Avro бағдарламасының негізгі ерекшелігі оның уақыт өте өзгеретін, яғни дамитын деректер схемаларына сенімді қолдауы болып табылады. Avro схемадағы өзгерістерді - өрістерді жоюды, қосуды немесе өзгертуді түсінеді.

Avro әртүрлі деректер құрылымдарын қолдайды. Мысалы, массив, санаулы түр және ішкі жазба бар жазба жасауға болады.

Үлкен деректердегі файл пішімдері: қысқаша білім беру бағдарламасы
Бұл формат деректер көлінің қону (өту) аймағына жазу үшін өте қолайлы (деректер көлі, немесе деректер көлі - тікелей деректер көздеріне қосымша деректердің әртүрлі түрлерін сақтауға арналған даналардың жинағы).

Сонымен, бұл пішім келесі себептер бойынша деректер көлінің қону аймағына жазу үшін ең қолайлы:

  1. Бұл аймақтағы деректер әдетте төменгі ағындық жүйелермен әрі қарай өңдеу үшін толығымен оқылады - бұл жағдайда жолға негізделген пішім тиімдірек.
  2. Төменгі жүйелер файлдардан схема кестелерін оңай шығарып алады — схемаларды сыртқы мета сақтауда бөлек сақтаудың қажеті жоқ.
  3. Бастапқы схемаға кез келген өзгерту оңай өңделеді (схема эволюциясы).

Паркет файл пішімі

Паркет — сақтайтын Hadoop үшін ашық бастапқы файл пішімі жазық бағаналы пішімдегі кірістірілген деректер құрылымдары.

Дәстүрлі қатар әдісімен салыстырғанда, паркет сақтау және өнімділік тұрғысынан тиімдірек.

Бұл кең (көп бағандар) кестеден арнайы бағандарды оқитын сұраулар үшін әсіресе пайдалы. Файл пішімінің арқасында тек қажетті бағандар оқылады, сондықтан енгізу/шығару минимумға дейін сақталады.

Шағын экскурсия және түсініктеме: Hadoop бағдарламасында Parket файл пішімін жақсырақ түсіну үшін бағанға негізделген пішім не екенін көрейік. Бұл пішім әр баған үшін ұқсас мәндерді бірге сақтайды.

Мысалы, жазба ID, Аты және Бөлім өрістерін қамтиды. Бұл жағдайда идентификатор бағанының барлық мәндері, Атау бағанының мәндері және т.б. бірге сақталады. Кесте келесідей болады:

ID
Толық аты-жөніңіз
бөлім

1
эмп1
d1

2
эмп2
d2

3
эмп3
d3

Жол пішімінде деректер келесідей сақталады:

1
эмп1
d1
2
эмп2
d2
3
эмп3
d3

Бағаналы файл пішімінде бірдей деректер келесідей сақталады:

1
2
3
эмп1
эмп2
эмп3
d1
d2
d3

Кестеден бірнеше бағандарды сұрау қажет болғанда бағаналы пішім тиімдірек болады. Ол тек қажетті бағандарды оқиды, себебі олар іргелес. Осылайша енгізу/шығару операциялары минималды деңгейде сақталады.

Мысалы, сізге тек NAME бағаны қажет. IN жол пішімі Деректер жиынындағы әрбір жазбаны жүктеу, өріс бойынша талдау, содан кейін NAME деректерін шығару қажет. Баған пішімі тікелей Атау бағанына жылжу мүмкіндігін береді, себебі сол бағанның барлық мәндері бірге сақталады. Жазбаны толығымен сканерлеудің қажеті жоқ.

Осылайша, бағаналы пішім сұрау өнімділігін жақсартады, себебі ол қажетті бағандарға жету үшін іздеу уақытын аз талап етеді және енгізу/шығару әрекеттерінің санын азайтады, себебі тек қажетті бағандар оқылады.

Бірегей ерекшеліктерінің бірі Паркет Бұл форматта ол мүмкін кірістірілген құрылымдармен деректерді сақтау. Бұл Parket файлында тіпті кірістірілген өрістерді кірістірілген құрылымдағы барлық өрістерді оқымай-ақ жеке оқуға болатынын білдіреді. Паркет кірістірілген құрылымдарды сақтау үшін ұсақтау және құрастыру алгоритмін пайдаланады.

Үлкен деректердегі файл пішімдері: қысқаша білім беру бағдарламасы
Hadoop бағдарламасында Parket файл пішімін түсіну үшін келесі шарттарды білу қажет:

  1. Жолдар тобы (жолдар тобы): деректерді жолдарға логикалық көлденең бөлу. Жолдар тобы деректер жиынындағы әрбір бағанның фрагментінен тұрады.
  2. Баған фрагменті (баған бөлігі): Белгілі бір бағанның фрагменті. Бұл баған фрагменттері жолдардың белгілі бір тобында тұрады және файлда сабақтас болуына кепілдік беріледі.
  3. Бет (бет): Баған үзінділері бірінен соң бірі жазылған беттерге бөлінеді. Беттердің ортақ атауы бар, сондықтан оқу кезінде қажетсіздерін өткізіп жіберуге болады.

Үлкен деректердегі файл пішімдері: қысқаша білім беру бағдарламасы
Мұнда тақырып тек сиқырлы санды қамтиды PAR1 (4 байт) файлды Parket файлы ретінде анықтайды.

Төменгі деректемеде келесілер айтылады:

  1. Әрбір бағанның метадеректерінің бастапқы координаттарын қамтитын файл метадеректері. Оқу кезінде қызығушылық тудыратын барлық баған фрагменттерін табу үшін алдымен файлдың метадеректерін оқу керек. Содан кейін баған бөліктерін ретімен оқу керек. Басқа метадеректер пішім нұсқасын, схеманы және кез келген қосымша кілт-мән жұптарын қамтиды.
  2. Метадеректер ұзындығы (4 байт).
  3. сиқырлы сан PAR1 (4 байт).

ORC файл пішімі

Оңтайландырылған жол-баған файл пішімі (Оңтайландырылған жол бағанасы, ТЖЫҰ) деректерді сақтаудың өте тиімді әдісін ұсынады және басқа пішімдердің шектеулерін еңсеруге арналған. Деректерді өте ықшам пішінде сақтайды, бұл сізге қажет емес мәліметтерді өткізіп жіберуге мүмкіндік береді - үлкен, күрделі немесе қолмен жүргізілетін индекстерді құруды қажет етпей.

ORC форматының артықшылықтары:

  1. Бір файл әрбір тапсырманың шығысы болып табылады, ол NameNode (атау түйіні) жүктемесін азайтады.
  2. DateTime, ондық және күрделі деректер түрлерін (құрылым, тізім, карта және одақ) қоса алғанда, Hive деректер түрлерін қолдау.
  3. Әр түрлі RecordReader процестерімен бір файлды бір уақытта оқу.
  4. Маркерлерді сканерлеусіз файлдарды бөлу мүмкіндігі.
  5. Файлдың төменгі деректемесіндегі ақпарат негізінде оқу/жазу процестері үшін максималды мүмкін үйме жадының бөлінуін бағалау.
  6. Метадеректер Protocol Buffers екілік сериялау пішімінде сақталады, ол өрістерді қосуға және жоюға мүмкіндік береді.

Үлкен деректердегі файл пішімдері: қысқаша білім беру бағдарламасы
ORC жолдардың жинақтарын бір файлда сақтайды және жинақ ішінде жол деректері бағаналық пішімде сақталады.

ORC файлы жолақтар деп аталатын жолдар топтарын және файлдың төменгі деректемесінде қолдау көрсететін ақпаратты сақтайды. Файлдың соңындағы Postscript қысу параметрлерін және қысылған төменгі колонтитулдың өлшемін қамтиды.

Әдепкі жолақ өлшемі - 250 МБ. Осындай үлкен жолақтардың арқасында HDFS-тен оқу тиімдірек орындалады: үлкен іргелес блоктарда.

Файлдың төменгі деректемесі файлдағы жолдар тізімін, әр жолдағы жолдар санын және әр бағанның деректер түрін жазады. Әрбір баған үшін count, min, max және sum нәтижелік мәні де сонда жазылады.

Жолақтың төменгі деректемесінде ағын орындарының каталогы бар.

Жол деректері кестелерді сканерлеу кезінде пайдаланылады.

Индекс деректері әрбір баған үшін ең төменгі және ең үлкен мәндерді және әрбір бағандағы жолдардың орнын қамтиды. ORC индекстері сұрауларға жауап беру үшін емес, жолақтар мен жол топтарын таңдау үшін ғана пайдаланылады.

Әр түрлі файл пішімдерін салыстыру

Авро паркетпен салыстырғанда

  1. Avro - жолды сақтау пішімі, ал Паркет деректерді бағандарда сақтайды.
  2. Паркет аналитикалық сұраулар үшін жақсырақ, яғни оқу операциялары мен сұрау деректері жазуға қарағанда әлдеқайда тиімді.
  3. Avro-да жазу операциялары Паркетке қарағанда тиімдірек орындалады.
  4. Avro контур эволюциясымен неғұрлым жетілген түрде айналысады. Паркет схеманы қосуды ғана қолдайды, ал Avro көп функциялы эволюцияны, яғни бағандарды қосуды немесе өзгертуді қолдайды.
  5. Паркет көп бағанды ​​кестедегі бағандардың ішкі жиынын сұрау үшін өте қолайлы. Avro барлық бағандарды сұрайтын ETL операциялары үшін қолайлы.

ORC және паркет

  1. Паркет кірістірілген деректерді жақсырақ сақтайды.
  2. ORC предикат итермелеу үшін жақсырақ.
  3. ORC ACID сипаттарын қолдайды.
  4. ORC деректерді жақсырақ қысады.

Тақырып бойынша тағы не оқу керек:

  1. Бұлттағы үлкен деректерді талдау: компания қалай деректерге бағдарланған бола алады.
  2. Дерекқор схемаларына қарапайым нұсқаулық.
  3. Цифрлық трансформация туралы біздің телеграм каналымыз.

Ақпарат көзі: www.habr.com

пікір қалдыру