
Թիմ առաջարկություններ ինժեներ Ռահուլ Բհաթիան Clairvoyant-ից այն մասին, թե ինչ ֆայլերի ձևաչափեր կան մեծ տվյալների մեջ, որոնք են Hadoop ձևաչափերի ամենատարածված հատկանիշները և որ ձևաչափն է ավելի լավ օգտագործել:
Ինչու են անհրաժեշտ տարբեր ֆայլերի ձևաչափեր:
HDFS-ով ապահովված հավելվածների համար, ինչպիսիք են MapReduce-ը և Spark-ը, կատարողականի հիմնական խոչընդոտը տվյալներ փնտրելու, կարդալու և գրելու համար պահանջվող ժամանակն է: Այս խնդիրներին բարդանում է տվյալների մեծ հավաքածուները կառավարելու դժվարությունը, եթե մենք ունենք զարգացող սխեման, այլ ոչ թե ֆիքսված, կամ եթե կան պահեստավորման որոշ սահմանափակումներ:
Մեծ տվյալների մշակումը մեծացնում է բեռնվածությունը պահեստավորման ենթահամակարգի վրա. Hadoop-ը ավելորդ կերպով պահպանում է տվյալները՝ սխալների հանդուրժողականության հասնելու համար: Բացի սկավառակներից, բեռնված են պրոցեսորը, ցանցը, մուտքային/ելքային համակարգը և այլն։ Տվյալների ծավալի աճին զուգահեռ ավելանում են դրանց մշակման և պահպանման ծախսերը:
Տարբեր ֆայլերի ձևաչափեր հորինված է հենց այս խնդիրները լուծելու համար: Ֆայլի համապատասխան ձևաչափի ընտրությունը կարող է մի քանի նշանակալի առավելություններ տալ.
- Ավելի արագ ընթերցման ժամանակ:
- Ավելի արագ ձայնագրման ժամանակ:
- Համօգտագործվող ֆայլեր.
- Աջակցություն սխեմայի էվոլյուցիայի համար:
- Ընդլայնված սեղմման աջակցություն:
Որոշ ֆայլերի ձևաչափեր նախատեսված են ընդհանուր օգտագործման համար, մյուսները՝ ավելի հատուկ օգտագործման համար, իսկ որոշները նախատեսված են տվյալների հատուկ բնութագրերին համապատասխանելու համար: Այսպիսով, ընտրությունն իսկապես բավականին մեծ է:
Avro ֆայլի ձևաչափ
Համար տվյալների սերիականացում Ավրո-ն լայնորեն կիրառվում է` այն լարային հիմքով, այսինքն՝ լարային տվյալների պահպանման ձևաչափ Hadoop-ում։ Այն պահպանում է սխեման JSON ձևաչափով, ինչը հեշտացնում է այն կարդալը և մեկնաբանելը ցանկացած ծրագրի կողմից: Տվյալներն ինքնին երկուական ձևաչափով են, կոմպակտ և արդյունավետ:
Avro-ի սերիականացման համակարգը լեզվական չեզոք է: Ֆայլերը կարող են մշակվել տարբեր լեզուներով՝ ներկայումս C, C++, C#, Java, Python և Ruby:
Avro-ի հիմնական առանձնահատկությունը տվյալների սխեմաների կայուն աջակցությունն է, որոնք ժամանակի ընթացքում փոխվում են, այսինքն՝ զարգանում: Avro-ն հասկանում է սխեմայի փոփոխությունները՝ դաշտերի ջնջում, ավելացում կամ փոփոխություն:
Avro-ն աջակցում է տվյալների մի շարք կառուցվածքների: Օրինակ, կարող եք ստեղծել ձայնագրություն, որը պարունակում է զանգված, թվարկված տեսակ և ենթագրառումներ:

Այս ձևաչափը իդեալական է տվյալների լճի վայրէջքի (անցումային) գոտում գրելու համար (, կամ տվյալների լիճ - օրինակների հավաքածու՝ ի լրումն տվյալների աղբյուրների ուղղակիորեն տարբեր տեսակի տվյալների պահպանման):
Այսպիսով, այս ձևաչափը լավագույնս հարմար է տվյալների լճի վայրէջքի գոտում գրելու համար հետևյալ պատճառներով.
- Այս գոտու տվյալները սովորաբար ամբողջությամբ կարդում են՝ ներքևի համակարգերի կողմից հետագա մշակման համար, և տողերի վրա հիմնված ձևաչափն այս դեպքում ավելի արդյունավետ է:
- Ներքևի համակարգերը կարող են հեշտությամբ առբերել սխեմաների աղյուսակները ֆայլերից. կարիք չկա սխեմաները առանձին պահել արտաքին մետա պահեստում:
- Բնօրինակ սխեմայի ցանկացած փոփոխություն հեշտությամբ մշակվում է (սխեմայի էվոլյուցիա):
Մանրահատակի ֆայլի ձևաչափ
Մանրահատակը բաց կոդով ֆայլի ձևաչափ է Hadoop-ի համար, որը պահում է ներդիր տվյալների կառուցվածքները հարթ սյունաձև ձևաչափով.
Ավանդական շարքի մոտեցման համեմատ՝ Մանրահատակն ավելի արդյունավետ է պահեստավորման և կատարողականության առումով:
Սա հատկապես օգտակար է այն հարցումների համար, որոնք կարդում են որոշակի սյունակներ լայն (շատ սյունակներ) աղյուսակից: Ֆայլի ձևաչափի շնորհիվ ընթերցվում են միայն անհրաժեշտ սյունակները, ուստի I/O-ն նվազագույնի է հասցվում:
Մի փոքր շեղում և բացատրությունHadoop-ում Parquet ֆայլի ձևաչափը ավելի լավ հասկանալու համար տեսնենք, թե ինչ է սյունակի վրա հիմնված, այսինքն՝ սյունակային ձևաչափը: Այս ձևաչափը պահպանում է նմանատիպ արժեքներ յուրաքանչյուր սյունակի համար միասին:
, գրառումը ներառում է ID, Անուն և բաժին դաշտերը: Այս դեպքում 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
Սյունակային ձևաչափն ավելի արդյունավետ է, երբ անհրաժեշտ է աղյուսակից մի քանի սյունակներ հարցումներ կատարել: Այն կկարդա միայն պահանջվող սյունակները, քանի որ դրանք հարակից են: Այս կերպ I/O գործառնությունները նվազագույնի են հասցվում:
Օրինակ, ձեզ անհրաժեշտ է միայն NAME սյունակը: IN Տվյալների հավաքածուի յուրաքանչյուր գրառում պետք է բեռնվի, վերլուծվի ըստ դաշտի, այնուհետև հանվի NAME տվյալները: Սյունակի ձևաչափը թույլ է տալիս անմիջապես անցնել Անուն սյունակին, քանի որ այդ սյունակի բոլոր արժեքները պահվում են միասին: Պետք չէ ամբողջ ձայնագրությունը սկանավորել:
Այսպիսով, սյունակային ձևաչափը բարելավում է հարցումների կատարումը, քանի որ այն պահանջում է ավելի քիչ փնտրման ժամանակ պահանջվող սյունակներին հասնելու համար և նվազեցնում է I/O գործողությունների քանակը, քանի որ ընթերցվում են միայն ցանկալի սյունակները:
Յուրահատուկ հատկանիշներից մեկը այն է, որ այս ձևաչափով կարող է տվյալների պահպանում ներդիր կառուցվածքներով. Սա նշանակում է, որ Parquet ֆայլում նույնիսկ ներկառուցված դաշտերը կարելի է առանձին-առանձին կարդալ՝ առանց ներկառուցված կառուցվածքի բոլոր դաշտերը կարդալու: Մանրահատակը օգտագործում է մանրացման և հավաքման ալգորիթմ՝ ներդիր կառուցվածքները պահելու համար:

Hadoop-ում Parquet ֆայլի ձևաչափը հասկանալու համար դուք պետք է իմանաք հետևյալ տերմինները.
- Տողերի խումբ (տողերի խումբ). Տվյալների տրամաբանական հորիզոնական բաժանումը տողերի: Տողերի խումբը բաղկացած է տվյալների հավաքածուի յուրաքանչյուր սյունակի հատվածից:
- Սյունակի հատված (սյունակի կտոր). Հատուկ սյունակի հատված: Այս սյունակի հատվածները ապրում են տողերի որոշակի խմբում և երաշխավորված են ֆայլում հարակից լինելու համար:
- Page (էջ). Սյունակի հատվածները բաժանվում են մեկը մյուսի հետևից գրված էջերի: Էջերն ունեն ընդհանուր վերնագիր, ուստի կարդալիս կարող եք բաց թողնել ավելորդները:

Այստեղ վերնագիրը պարզապես պարունակում է կախարդական թիվը PAR1- ը (4 բայթ), որը նույնականացնում է ֆայլը որպես մանրահատակի ֆայլ:
Ստորագրում ասվում է հետևյալը.
- Ֆայլի մետատվյալներ, որոնք պարունակում են յուրաքանչյուր սյունակի մետատվյալների մեկնարկային կոորդինատները: Ընթերցանության ժամանակ նախ պետք է կարդալ ֆայլի մետատվյալները՝ գտնելու համար հետաքրքրող սյունակների բոլոր հատվածները: Այնուհետև սյունակի հատվածները պետք է ընթերցվեն հաջորդաբար: Այլ մետատվյալները ներառում են ձևաչափի տարբերակը, սխեման և ցանկացած լրացուցիչ բանալին-արժեք զույգ:
- Մետատվյալների երկարությունը (4 բայթ):
- կախարդական համարը PAR1- ը (4 բայթ):
ORC ֆայլի ձևաչափ
Օպտիմիզացված տող-սյունակ ֆայլի ձևաչափ (Օպտիմիզացված տող սյունակ, ) առաջարկում է տվյալների պահպանման շատ արդյունավետ միջոց և նախատեսված է այլ ձևաչափերի սահմանափակումները հաղթահարելու համար: Պահպանում է տվյալները կատարյալ կոմպակտ ձևով, ինչը թույլ է տալիս բաց թողնել ավելորդ մանրամասները՝ առանց մեծ, բարդ կամ ձեռքով պահպանվող ինդեքսների կառուցման պահանջի:
ORC ձևաչափի առավելությունները.
- Մեկ ֆայլը յուրաքանչյուր առաջադրանքի արդյունքն է, որը նվազեցնում է NameNode-ի (անունի հանգույցի) բեռը:
- Աջակցություն Hive տվյալների տեսակներին, ներառյալ DateTime, տասնորդական և բարդ տվյալների տեսակները (կառուցվածք, ցուցակ, քարտեզ և միավորում):
- Նույն ֆայլի միաժամանակյա ընթերցում RecordReader-ի տարբեր գործընթացներով:
- Ֆայլերը բաժանելու ունակություն՝ առանց մարկերների սկանավորման:
- Կույտային հիշողության առավելագույն հնարավոր բաշխման գնահատում կարդալու/գրելու գործընթացների համար՝ հիմնվելով ֆայլի էջատակի տեղեկատվության վրա:
- Մետատվյալները պահվում են Protocol Buffers երկուական սերիալացման ձևաչափով, որը թույլ է տալիս դաշտերը ավելացնել և հեռացնել:

ORC-ը պահպանում է տողերի հավաքածուները մեկ ֆայլում, և հավաքածուի ներսում տողերի տվյալները պահվում են սյունակային ձևաչափով:
ORC ֆայլը պահում է տողերի խմբեր, որոնք կոչվում են շերտեր և օժանդակ տեղեկատվություն ֆայլի ստորոտում: Ֆայլի վերջում Postscript-ը պարունակում է սեղմման պարամետրեր և սեղմված ստորագրի չափը:
Լռելյայն շերտի չափը 250 ՄԲ է: Նման մեծ շերտերի շնորհիվ HDFS-ից ընթերցումը կատարվում է ավելի արդյունավետ՝ մեծ հարակից բլոկներում:
Ֆայլի էջատակը գրանցում է ֆայլի գծերի ցանկը, տողերի քանակը յուրաքանչյուր տողում և յուրաքանչյուր սյունակի տվյալների տեսակը: Այնտեղ գրված է նաև յուրաքանչյուր սյունակի համար ստացված count, min, max և sum:
Շերտի ստորոտը պարունակում է հոսքի վայրերի գրացուցակ:
Տողերի տվյալները օգտագործվում են աղյուսակները սկանավորելիս:
Ինդեքսային տվյալները ներառում են յուրաքանչյուր սյունակի նվազագույն և առավելագույն արժեքները և յուրաքանչյուր սյունակի տողերի դիրքը: ORC ինդեքսներն օգտագործվում են միայն շերտեր և տող խմբեր ընտրելու համար, այլ ոչ թե հարցումներին պատասխանելու համար:
Տարբեր ֆայլերի ձևաչափերի համեմատություն
Ավրո՝ համեմատած Մանրահատակի հետ
- Avro-ն տողերի պահպանման ձևաչափ է, մինչդեռ մանրահատակը տվյալները պահում է սյունակներում:
- Մանրահատակը ավելի հարմար է վերլուծական հարցումների համար, ինչը նշանակում է, որ ընթերցման գործողությունները և հարցումների տվյալները շատ ավելի արդյունավետ են, քան գրելը:
- Avro-ում գրելու գործողություններն ավելի արդյունավետ են կատարվում, քան մանրահատակում:
- Avro-ն ավելի հասուն է զբաղվում շրջանային էվոլյուցիայի հետ: Մանրահատակը աջակցում է միայն սխեմաների ավելացմանը, մինչդեռ Avro-ն աջակցում է բազմաֆունկցիոնալ էվոլյուցիայի, այսինքն՝ սյունակների ավելացման կամ փոփոխման:
- Մանրահատակը իդեալական է բազմասյուն աղյուսակում սյունակների ենթաբազմություն հարցումների համար: Avro-ն հարմար է ETL գործառնությունների համար, որտեղ մենք հարցում ենք անում բոլոր սյունակներին:
ORC ընդդեմ մանրահատակի
- Մանրահատակի խանութներն ավելի լավ են դնում ներկառուցված տվյալները:
- ORC-ն ավելի հարմար է պրեդիկատային pushdown-ի համար:
- ORC-ն աջակցում է ACID հատկություններին:
- ORC-ն ավելի լավ է սեղմում տվյալները:
Էլ ինչ կարդալ թեմայի շուրջ:
- .
- .
- .
Source: www.habr.com
