විශාල දත්තවල ගොනු ආකෘති: කෙටි අධ්‍යාපනික වැඩසටහනක්

විශාල දත්තවල ගොනු ආකෘති: කෙටි අධ්‍යාපනික වැඩසටහනක්
රෙමරින් විසින් කාලගුණ දේවතාවා

කණ්ඩායම Mail.ru Cloud Solutions දීමනා ලිපිය පරිවර්තනය Clairvoyant හි ඉංජිනේරු රාහුල් භාටියා විශාල දත්තවල ඇති ගොනු ආකෘති මොනවාද, Hadoop ආකෘතිවල වඩාත් පොදු ලක්ෂණ මොනවාද සහ භාවිතා කිරීමට වඩා හොඳ ආකෘතිය කුමක්ද යන්න පිළිබඳව.

විවිධ ගොනු ආකෘති අවශ්ය වන්නේ ඇයි?

MapReduce සහ Spark වැනි HDFS-සක්‍රීය යෙදුම් සඳහා ප්‍රධාන කාර්ය සාධන බාධකයක් වන්නේ දත්ත සෙවීමට, කියවීමට සහ ලිවීමට ගතවන කාලයයි. අපට ස්ථාවර එකකට වඩා පරිණාමය වෙමින් පවතින ක්‍රමවේදයක් තිබේ නම් හෝ යම් ගබඩා බාධක තිබේ නම් විශාල දත්ත කට්ටල කළමනාකරණය කිරීමේ දුෂ්කරතාවයෙන් මෙම ගැටළු සංකීර්ණ වේ.

විශාල දත්ත සැකසීම ගබඩා උප පද්ධතිය මත බර වැඩි කරයි - Hadoop දෝෂ ඉවසීම ලබා ගැනීම සඳහා දත්ත අතිරික්තව ගබඩා කරයි. තැටි වලට අමතරව, ප්රොසෙසරය, ජාලය, ආදාන / ප්රතිදාන පද්ධතිය, ආදිය පටවනු ලැබේ. දත්ත පරිමාව වර්ධනය වන විට, එය සැකසීමේ හා ගබඩා කිරීමේ පිරිවැය ද වැඩි වේ.

විවිධ ගොනු ආකෘති තුළ Hadoop මෙම ගැටළු නිවැරදිව විසඳීම සඳහා නිර්මාණය කරන ලදී. සුදුසු ගොනු ආකෘතිය තේරීමෙන් සැලකිය යුතු ප්‍රතිලාභ කිහිපයක් ලබා ගත හැක:

  1. වේගවත් කියවීමේ කාලය.
  2. වේගවත් පටිගත කිරීමේ කාලය.
  3. බෙදාගත් ගොනු.
  4. ක්‍රම පරිණාමය සඳහා සහාය.
  5. පුළුල් කරන ලද සම්පීඩන සහාය.

සමහර ගොනු ආකෘති සාමාන්‍ය භාවිතය සඳහා අදහස් කෙරේ, අනෙක් ඒවා වඩාත් නිශ්චිත භාවිතය සඳහා, සහ සමහරක් නිශ්චිත දත්ත ලක්ෂණ සපුරාලීම සඳහා නිර්මාණය කර ඇත. එබැවින් තේරීම සැබවින්ම තරමක් විශාල ය.

Avro ගොනු ආකෘතිය

සඳහා දත්ත අනුක්‍රමිකකරණය Avro බහුලව භාවිතා වේ - එය තන්තු පදනම් කරගත්, එනම් Hadoop හි තන්තු දත්ත ගබඩා කිරීමේ ආකෘතියකි. එය JSON ආකෘතියෙන් ස්කීමා ගබඩා කරයි, ඕනෑම වැඩසටහනකින් කියවීමට සහ අර්ථ නිරූපණය කිරීමට පහසු කරයි. දත්ත ද්විමය ආකෘතියෙන්, සංයුක්ත හා කාර්යක්ෂම වේ.

Avro හි අනුක්‍රමික පද්ධතිය භාෂා මධ්‍යස්ථ ය. ගොනු විවිධ භාෂා වලින් සැකසිය හැක, දැනට C, C++, C#, Java, Python සහ Ruby.

Avro හි ප්‍රධාන ලක්ෂණයක් වන්නේ කාලයත් සමඟ වෙනස් වන, එනම් පරිණාමය වන දත්ත ක්‍රම සඳහා එහි ශක්තිමත් සහායයි. ක්‍ෂේත්‍ර මකා දැමීම, එකතු කිරීම හෝ වෙනස් කිරීම Avro විසින් ක්‍රමානුකූල වෙනස්කම් තේරුම් ගනී.

Avro විවිධ දත්ත ව්‍යුහයන් සඳහා සහය දක්වයි. උදාහරණයක් ලෙස, ඔබට අරාවක්, ගණන් කළ වර්ගයක් සහ උප වාර්තාවක් අඩංගු වාර්තාවක් සෑදිය හැක.

විශාල දත්තවල ගොනු ආකෘති: කෙටි අධ්‍යාපනික වැඩසටහනක්
දත්ත විලක ගොඩබෑමේ (සංක්‍රාන්ති) කලාපයට ලිවීමට මෙම ආකෘතිය සුදුසු වේ (දත්ත විල, හෝ දත්ත විල - දත්ත මූලාශ්‍ර වලට අමතරව විවිධ වර්ගයේ දත්ත ගබඩා කිරීම සඳහා වන අවස්ථා එකතුවකි).

එබැවින්, පහත සඳහන් හේතූන් මත දත්ත විලක ගොඩබෑමේ කලාපයට ලිවීම සඳහා මෙම ආකෘතිය වඩාත් සුදුසු වේ:

  1. මෙම කලාපයෙන් දත්ත සාමාන්‍යයෙන් පහළ පද්ධති මඟින් වැඩිදුර සැකසීම සඳහා සම්පූර්ණයෙන් කියවනු ලැබේ - සහ පේළි මත පදනම් වූ ආකෘතියක් මෙම අවස්ථාවේදී වඩාත් කාර්යක්ෂම වේ.
  2. පහළ ප්‍රවාහ පද්ධති වලට ගොනු වලින් ස්කීමා වගු පහසුවෙන් ලබා ගත හැක - බාහිර මෙටා ආචයනයේ ක්‍රම වෙනම ගබඩා කිරීම අවශ්‍ය නොවේ.
  3. මුල් යෝජනා ක්‍රමයට ඕනෑම වෙනස්කමක් පහසුවෙන් සැකසෙනු ඇත (ක්‍රම පරිණාමය).

පාකට් ගොනු ආකෘතිය

Parquet යනු ගබඩා කරන Hadoop සඳහා විවෘත මූලාශ්‍ර ගොනු ආකෘතියකි පැතලි තීරු ආකෘතියේ කැදලි දත්ත ව්‍යුහයන්.

සාම්ප්රදායික පේළි ප්රවේශය හා සසඳන විට, ගබඩා කිරීම සහ කාර්ය සාධනය අනුව Parquet වඩා කාර්යක්ෂම වේ.

පුළුල් (බොහෝ තීරු) වගුවකින් නිශ්චිත තීරු කියවන විමසුම් සඳහා මෙය විශේෂයෙන් ප්‍රයෝජනවත් වේ. ගොනු ආකෘතියට ස්තූතියි, අවශ්‍ය තීරු පමණක් කියවනු ලැබේ, එබැවින් I/O අවම මට්ටමක තබා ඇත.

කුඩා අපගමනය සහ පැහැදිලි කිරීම: Hadoop හි ඇති Parquet ගොනු ආකෘතිය වඩා හොඳින් අවබෝධ කර ගැනීම සඳහා, තීරු මත පදනම් වූ - එනම් තීරු - ආකෘතියක් යනු කුමක්දැයි බලමු. මෙම ආකෘතිය එක් එක් තීරු සඳහා සමාන අගයන් එකට ගබඩා කරයි.

උදාහරණයක් ලෙස, වාර්තාවේ ID, නම සහ දෙපාර්තමේන්තු ක්ෂේත්‍ර ඇතුළත් වේ. මෙම අවස්ථාවෙහිදී, සියලුම ID තීරු අගයන් එකට ගබඩා කරනු ලැබේ, නම තීරු අගයන් සහ යනාදිය. මේසය මේ වගේ දෙයක් පෙනෙනු ඇත:

ID
නම
ෙදපාර්තෙම්න්තුෙව්

1
emp1
d1

2
emp2
d2

3
emp3
d3

තන්තු ආකෘතියෙන්, දත්ත පහත පරිදි සුරකිනු ඇත:

1
emp1
d1
2
emp2
d2
3
emp3
d3

තීරු ගොනු ආකෘතියක් තුළ, එකම දත්ත මෙලෙස සුරැකෙනු ඇත:

1
2
3
emp1
emp2
emp3
d1
d2
d3

ඔබට වගුවකින් තීරු කිහිපයක් විමසීමට අවශ්‍ය වූ විට තීරු ආකෘතිය වඩාත් කාර්යක්ෂම වේ. එය යාබදව ඇති බැවින් අවශ්‍ය තීරු පමණක් කියවනු ඇත. මේ ආකාරයෙන්, I/O මෙහෙයුම් අවම මට්ටමක තබා ඇත.

උදාහරණයක් ලෙස, ඔබට අවශ්‍ය වන්නේ NAME තීරුව පමණි. තුල තන්තු ආකෘතිය දත්ත කට්ටලයේ ඇති සෑම වාර්තාවක්ම පූරණය කර, ක්ෂේත්‍රය අනුව විග්‍රහ කර, පසුව NAME දත්ත උපුටා ගැනීම අවශ්‍ය වේ. එම තීරුව සඳහා වන සියලුම අගයන් එකට ගබඩා කර ඇති නිසා තීරු ආකෘතිය ඔබට කෙලින්ම නම තීරුවට සරඹ කිරීමට ඉඩ සලසයි. ඔබට සම්පූර්ණ පටිගත කිරීම ස්කෑන් කිරීමට අවශ්‍ය නැත.

මේ අනුව, තීරු ආකෘතිය විමසුම් කාර්ය සාධනය වැඩි දියුණු කරයි, මන්ද එයට අවශ්‍ය තීරු වෙත යාමට අඩු සෙවීම් කාලයක් අවශ්‍ය වන අතර අපේක්ෂිත තීරු පමණක් කියවන බැවින් I/O මෙහෙයුම් සංඛ්‍යාව අඩු කරයි.

සුවිශේෂී ලක්ෂණ වලින් එකකි පාකට් එය මෙම ආකෘතියෙන් කළ හැකිය කැදැලි ව්‍යුහයන් සමඟ දත්ත ගබඩා කරන්න. මෙයින් අදහස් කරන්නේ, Parquet ගොනුවක, කැදැලි ව්‍යුහයේ ඇති සියලුම ක්ෂේත්‍ර කියවීමකින් තොරව කැදැලි ක්ෂේත්‍ර පවා තනි තනිව කියවිය හැකි බවයි. කැදලි ව්‍යුහයන් ගබඩා කිරීම සඳහා Parquet ඉරා දැමීමේ සහ එකලස් කිරීමේ ඇල්ගොරිතමයක් භාවිතා කරයි.

විශාල දත්තවල ගොනු ආකෘති: කෙටි අධ්‍යාපනික වැඩසටහනක්
Hadoop හි Parquet ගොනු ආකෘතිය තේරුම් ගැනීමට, ඔබ පහත සඳහන් නියමයන් දැන සිටිය යුතුය:

  1. නූල් සමූහය (පේළි සමූහය): දත්ත පේළිවලට තාර්කික තිරස් බෙදීම. පේළි සමූහයක් දත්ත කට්ටලයේ එක් එක් තීරුවේ කොටසකින් සමන්විත වේ.
  2. තීරු ඛණ්ඩනය (තීරු කුට්ටිය): නිශ්චිත තීරුවක කොටසක්. මෙම තීරු කොටස් නිශ්චිත පේළි සමූහයක ජීවත් වන අතර ගොනුව තුළ එක ළඟ බව සහතික කර ඇත.
  3. පිටුව (පිටුව): තීරු කොටස් එකින් එක ලියා ඇති පිටු වලට බෙදා ඇත. පිටු වලට පොදු මාතෘකාවක් ඇත, එබැවින් කියවීමේදී ඔබට අනවශ්‍ය ඒවා මඟ හැරිය හැක.

විශාල දත්තවල ගොනු ආකෘති: කෙටි අධ්‍යාපනික වැඩසටහනක්
මෙහි මාතෘකාවේ ඇත්තේ මැජික් අංකය පමණි PAR1 (බයිට් 4) එය ගොනුව Parquet ගොනුවක් ලෙස හඳුනා ගනී.

පාදකය පහත සඳහන් දේ පවසයි:

  1. එක් එක් තීරුවේ පාර-දත්තවල ආරම්භක ඛණ්ඩාංක අඩංගු ගොනු පාර-දත්ත. කියවන විට, උනන්දුවක් දක්වන සියලුම තීරු කොටස් සොයා ගැනීමට ඔබ මුලින්ම ගොනුවේ පාර-දත්ත කියවිය යුතුය. එවිට තීරු කොටස් අනුපිළිවෙලින් කියවිය යුතුය. වෙනත් පාර-දත්තවල ආකෘති අනුවාදය, යෝජනා ක්‍රමය සහ ඕනෑම අමතර යතුරු-අගය යුගල ඇතුළත් වේ.
  2. පාරදත්ත දිග (බයිට් 4).
  3. මැජික් අංකය PAR1 (බයිට් 4).

ORC ගොනු ආකෘතිය

ප්‍රශස්ත පේළි-තීරු ගොනු ආකෘතිය (ප්‍රශස්ත පේළි තීරුව, CRO) දත්ත ගබඩා කිරීම සඳහා ඉතා කාර්යක්ෂම ක්රමයක් ඉදිරිපත් කරන අතර අනෙකුත් ආකෘතිවල සීමාවන් මඟහරවා ගැනීමට සැලසුම් කර ඇත. විශාල, සංකීර්ණ හෝ අතින් නඩත්තු කරන ලද දර්ශක ගොඩනැගීමට අවශ්‍ය නොවී - ඔබට අනවශ්‍ය තොරතුරු මඟ හැරීමට ඉඩ සලසමින් පරිපූර්ණ සංයුක්ත ස්වරූපයෙන් දත්ත ගබඩා කරයි.

ORC ආකෘතියේ වාසි:

  1. එක් ගොනුවක් යනු එක් එක් කාර්යයේ ප්‍රතිදානය වන අතර, එය NameNode (name node) මත පැටවීම අඩු කරයි.
  2. DateTime, දශම සහ සංකීර්ණ දත්ත වර්ග (struct, list, map සහ Union) ඇතුළුව Hive දත්ත වර්ග සඳහා සහය
  3. විවිධ RecordReader ක්‍රියාවලි මගින් එකම ගොනුව එකවර කියවීම.
  4. සලකුණු සඳහා ස්කෑන් කිරීමකින් තොරව ගොනු බෙදීමේ හැකියාව.
  5. ගොනු පාදකයේ ඇති තොරතුරු මත පදනම්ව කියවීමේ/ලිවීමේ ක්‍රියාවලීන් සඳහා හැකි උපරිම මතක වෙන් කිරීම ඇස්තමේන්තු කිරීම.
  6. පාර-දත්ත ගබඩා කර ඇත්තේ ප්‍රොටෝකෝල බෆර්ස් ද්විමය අනුක්‍රමික ආකෘතියේ වන අතර එමඟින් ක්ෂේත්‍ර එකතු කිරීමට සහ ඉවත් කිරීමට ඉඩ සලසයි.

විශාල දත්තවල ගොනු ආකෘති: කෙටි අධ්‍යාපනික වැඩසටහනක්
ORC තනි ගොනුවක තන්තු එකතුව ගබඩා කරයි, සහ එකතුව තුළ, තන්තු දත්ත තීරු ආකෘතියකින් ගබඩා කරයි.

ORC ගොනුවක් ගොනුවේ පාදකයේ ඉරි සහ ආධාරක තොරතුරු ලෙස හැඳින්වෙන රේඛා කාණ්ඩ ගබඩා කරයි. ගොනුවේ අවසානයේ ඇති පසු පිටපතෙහි සම්පීඩන පරාමිති සහ සම්පීඩිත පාදයේ ප්‍රමාණය අඩංගු වේ.

පෙරනිමි තීරු ප්‍රමාණය 250 MB වේ. එවැනි විශාල ඉරි නිසා, HDFS වෙතින් කියවීම වඩාත් කාර්යක්ෂමව සිදු කරනු ලැබේ: විශාල යාබද කුට්ටි වල.

ගොනු පාදකය ගොනුවේ ඇති මංතීරු ලැයිස්තුව, මංතීරුවකට පේළි ගණන සහ එක් එක් තීරුවේ දත්ත වර්ගය වාර්තා කරයි. එක් එක් තීරුව සඳහා ගණන්, මිනි, උපරිම සහ එකතුවේ ප්‍රතිඵලයක් ලෙස ලැබෙන අගය ද එහි ලියා ඇත.

තීරුවේ පාදයේ ප්‍රවාහ ස්ථාන නාමාවලියක් අඩංගු වේ.

වගු පරිලෝකනය කිරීමේදී පේළි දත්ත භාවිතා වේ.

දර්ශක දත්තවල එක් එක් තීරුව සඳහා අවම සහ උපරිම අගයන් සහ එක් එක් තීරුවේ පේළිවල පිහිටීම ඇතුළත් වේ. ORC දර්ශක භාවිතා කරනුයේ ඉරි සහ පේළි කණ්ඩායම් තෝරාගැනීම සඳහා මිස විමසුම්වලට පිළිතුරු සැපයීම සඳහා නොවේ.

විවිධ ගොනු ආකෘති සංසන්දනය කිරීම

Avro Parquet හා සසඳන විට

  1. Avro යනු පේළි ගබඩා කිරීමේ ආකෘතියක් වන අතර, Parquet තීරු වල දත්ත ගබඩා කරයි.
  2. විශ්ලේෂණාත්මක විමසුම් සඳහා Parquet වඩාත් සුදුසු වේ, එනම් කියවීමේ මෙහෙයුම් සහ දත්ත විමසීම ලිවීමට වඩා කාර්යක්ෂම වේ.
  3. Avro හි ලිවීමේ මෙහෙයුම් Parquet වලට වඩා කාර්යක්ෂමව සිදු කෙරේ.
  4. Avro පරිපථ පරිණාමය සමඟ වඩාත් පරිණත ලෙස කටයුතු කරයි. Parquet අනුග්‍රහය දක්වන්නේ ක්‍රම එකතු කිරීම සඳහා පමණි, Avro බහුකාර්ය පරිණාමය සඳහා සහය දක්වයි, එනම් තීරු එකතු කිරීම හෝ වෙනස් කිරීම.
  5. බහු-තීරු වගුවක තීරු උප කුලකයක් විමසීම සඳහා Parquet සුදුසු වේ. අපි සියලුම තීරු විමසන ETL මෙහෙයුම් සඳහා Avro සුදුසු වේ.

ORC එදිරිව පාකට්

  1. Parquet කැදැලි දත්ත වඩා හොඳින් ගබඩා කරයි.
  2. Pushdown පුරෝකථනය කිරීමට ORC වඩාත් සුදුසුය.
  3. ORC ACID ගුණාංග සඳහා සහය දක්වයි.
  4. ORC දත්ත වඩා හොඳින් සම්පීඩනය කරයි.

මාතෘකාව පිළිබඳ තවත් කියවිය යුතු දේ:

  1. වලාකුළෙහි විශාල දත්ත විශ්ලේෂණය: සමාගමක් දත්ත-නැඹුරු කළ හැකි ආකාරය.
  2. දත්ත සමුදා යෝජනා ක්‍රම සඳහා නිහතමානී මාර්ගෝපදේශයක්.
  3. ඩිජිටල් පරිවර්තනය පිළිබඳ අපගේ විදුලි පණිවුඩ නාලිකාව.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න