HADOOP TECHNOLOGY IN TAMIL – பிக் டேட்டாவின் DISTRIBUTED PROCESSING FRAMEWORK ஹடூப் ஓர் அலசல்
ஹடூப் என்பது ஒரு எல்லார்க்கும் கிடைக்க கூடிய ஒரு திறந்த வெளி(OPEN SOURCE) மென்பொருளாகும் இது அப்பாச்சியை(APACHE) அடிப்படையாக கொண்டு இயங்குகிறது.இது ஜாவா மொழி மூலமாக நிறுவப்படுகிறது.இது டக் கட்டிங்(DOUGE CUTTING) என்பவரால் 2006ம் ஆண்டு உருவாக்கப்பட்டது. இது ஒரு மிகப்பெரிய அளவிலான டேட்டாவை சிறந்த முறையில் Storeசெய்து Processசெய்ய பயன்படுகிறது
3 COMPONENTS IN HADOOP:
ஹடூபில் மூன்று வகையான உபகரணங்கள் இருக்கிறது.
1.HDFS
2. MAP REDUCE
3. HADOOP CLUSTER
1. HDFS
ஹடூப் HDFSயை கொண்டுள்ளது. HDFS என்பது HADOOP DISTRIBUTED FILES SYSTEM. இது டேட்டாவை HADOOP CLUSTERக்குள் சேமித்து கையாளப்(Store and Manage) பயன்படுகிறது. DISTRIBUTED SYSTEMல் கணிப்பொறி தரவுகள் அனைத்தும் கிளஸ்ட்டரில்(CLUSTER) இணைக்கப்பட்டுள்ளது. கிளஸ்ட்டர்(CLUSTER) என்பது பலவகைப்பட்ட கணிப்பொறி மற்றும் கணிப்பொறி சார்ந்த சாதனங்களாகும்.
இதில் மூன்று Deomeonகள் உள்ளன
1. Name node (or Master node)
2. Data node (or Slave node)
3. Secondary name node
2. MAP REDUCE:
HDFSல் இருக்கும் தரவுகளை கம்ப்யூட்டிங் மற்றும் பிராஸிங் செய்ய பயன்படுகிறது.
3. HADOOP CLUSTER:
Hadoop cluster என்பது MASTER NODE SLAVE NODE என்ற இரண்டு NODEகளால் உருவானது.
MASTER NODE:
The MASTER NODE மூலமாகத்தான் Name node மற்றும் Job tracker இயங்குகின்றன.இந்த name node hdfs metadata வை சேமிக்க பயன்படுகிறது.
SLAVE NODE:
The Slave node மூலமாகத்தான் Data node மற்றும் Task tracker இயங்குகின்றன.
STORAGE NODE:
Name nodeம் Data nodeம் தான் தரவுகளை சேகரிக்கவும் நிர்வகிக்கவும் பயன்படுகிறது. ஆகையால் இவை Storage node என்று அழைக்கப்படுகிறது.
COMPUTE NODE:
Job trackerம் Task trackerம் தரவுகளை கணக்கிடுவதற்கு செயல்படுத்துவதற்கு பயன்படுகிறது ஆகையால் இவை compute node என்றழைக்கப்படுகிறது.
SINGLE MACHINE & MULTIPLE MACHINE:
Name node ம் Job tracker ம் ஒற்றை எந்திரத்தில் இயங்குகின்றன.
Data node ம் Task tracker ம் பல எந்திரத்தில் இயங்குகின்றன.
WHAT IS NODE:
Clusterக்குள் இருக்கும் எந்திரம் அல்லது கணினியை குறிப்பதே NODE ஆகும்.
WHAT IS MODE:
Mode என்பது லினஸ் OS ல் மறைமுகமாக இயங்கும் செயலியை குறிக்கிறது.
HADOOP கட்டமைப்பு
“Hadoop ஒரு தனிக்கருவி அல்ல; பல்வேறு சிறுசிறு கருவிகளின் கூட்டமைப்பே!” என்று ஏற்கனவே பார்த்தோம். இதன் மிக முக்கிய அங்கங்களாக HDFS மற்றும் MapReducer ஆகியவை விளங்குகின்றன. இவை முறையே தரவுகளை சேமித்தல் மற்றும் பகுத்தாய்தல் ஆகிய முக்கியப் பணிகளைச் செய்கின்றன. இவற்றுடன் சேர்த்து Pig, Hive, HBase, Phoenix, Spark, ZooKeeper, Flume, Sqoop, Oozie, மற்றும் Storm ஆகிய கருவிகளையும் Apache நிறுவனம் வழங்குகிறது. இவற்றை நமது தேவைக்கேற்ப Hadoop கட்டமைப்பில் இணைத்தோ/நீக்கியோ பயன்படுத்திக்கொள்ளலாம். இந்தக் கூட்டமைப்பில் இடம் பெற்றுள்ள கருவிகளையும், அவை எந்தெந்த இடங்களில் பங்களிக்கின்றன என்பதையும் பின்வருமாறு காணலாம்.
1. தரவுகளை சேமித்தல் (Storage) : HDFS, HBase
2. சேமித்தவற்றை நெறிப்படுத்துதல் (Processing) : MapReduce, YARN
3. நெறிமுறைப்படுத்தப்பட்டவற்றை தேவைக்கேற்றபடி பெறுதல் (Access) : Pig, Hive, Mahout, Avro, Sqoop
4. தரவுகளின் மேளாண்மை (Management) : Oozie, Chukwa, Flume, Zoo Keeper
Hadoop கட்டமைப்பின் முதல் வெளியீட்டில்(v1) தரவுகளை சேமிப்பதற்கு hdfs-ம் அவற்றிலிருந்து தரவுகளை நெறிமுறைப்படுத்தி அடுத்த நிலைக்கு பக்குவப்படுத்துவதற்கு mapreduce-ம் பயன்படுத்தப்பட்டன. அவ்வாறே அதன் இரண்டாவது வெளியீட்டில்(v2) சேமிக்கும் வேலைக்கு hbase-ம் பதப்படுத்தும் வேலைக்கு yarn-ம் வெளிவந்தன. மற்ற கருவிகள் அனைத்திற்கும் பொதுவானவை. இவை ஒவ்வொன்றைப்பற்றியும் பின்வருமாறு காணலாம்.
HDFS:-
Hadoop Distributed File System என்பதுதான் அனைத்திற்கும் அடித்தளம். இது அதிக அளவிலான கோப்புகளை அணுகி சேமிக்க வல்லது. இதன் ஆற்றல் ஒரே ஒரு கணினியில் சேமிப்பதோடு நின்றுவிடாமல், கோப்புகளின் எண்ணிக்கை பெருகப் பெருக பல்வேறு கணினியில் அவற்றைப் பிரித்து சேமிக்க வல்லது. இவ்வாறு ஒன்று போன்ற தகவல்களைப் பிரித்து சேமித்துள்ள அனைத்துக் கணினிகளும் cluster முறையில் இணைக்கப்பட்டு அவற்றில் ஒரு கணினி server-ஆகவும் மற்றவை clients-ஆகவும் செயல்புரியத் துவங்கும். server-ல் உள்ளது master nodeஎனவும், clients-ல் உள்ளது data nodeஎனவும் அழைக்கப்படும். இதில்தான் தரவுகள் சென்று சேரும்.
Hbase:-
Hadoop database என்பதுதான் Hbase என்றழைக்கப்படுகிறது. இது NoSQL-ஐ அடிப்படையாக வைத்து உருவாக்கப்பட்டது. எனவே வடிவற்ற தகவல்களையும் சேமிக்கும் திறன் பெற்று விளங்குகிறது. ஆனால் கோப்பு முறையில் தரவுகள் சேமிக்கப்படுவதிலிருந்து இது வித்தியாசப்பட்டு விளங்குகிறது. ஒரு database-ல் சேமிப்பது போன்று இதில் தரவுகள் சேமிக்கப்படுகின்றன. எனவே திடீரென இடையில் தகவல்களைப் போடுவதோ எடுப்பதோ இங்கு சுலபமாகிறது.
MapReducer:-
சேமிக்கப்பட்ட தகவல்களை பதப்படுத்தி, பக்குவப்படுத்தி, அடுத்த நிலைக்கு வேண்டியவாறு நெறிமுறைப்படுத்தும் வேலையை Mapreducer செய்கிறது. இது Mapper மற்றும் Reducer எனும் இருவேறு algorithmns ஆகும். இது cluster முறையில் இணைக்கப்பட்டுள்ள அனைத்துக் கருவிகளிலிருந்தும் தகவல்களை அணுக வல்லது. இதனுடைய சிறப்பே அதன் வேகம்தான். அதாவது இத்தகைய வேலைகளைச் செய்வதற்கு rdbms 20 மணி நேரம் எடுத்துக்கொள்கின்றது என்றால், இக்கருவி அதனை 3மூன்றே நிமிடங்களில் முடித்துவிடும்.
YARN:-
இது ஒன்றோடொன்று இணைந்து செயல்படுகின்ற அனைத்து கணினிகளையும் மேளாண்மை செய்வதற்கும், அவற்றுக்குள் வேலைகளை ஒதுக்கீடு செய்து தொடர்ச்சியாக அவற்றைக் கண்காணிப்பதற்கும் பயன்படுகின்ற cluster மேளாண்மைக்கான ஒரு மென்பொருள் கருவியாகும். Yet another resource negotiator என்பது இதன் பொருள். இதுவும் mapreducer-ன் பணிகளையே செய்கிறது என்றாலும், புதுப்புது அணுகுமுறைகளில் தரவுகளைக் கையாண்டு அதன் பணிகளை இன்னும் சுலபமக்குகிறது. எனவே இதனை mapreducer-ன் இரண்டாம் தலைமுறை என்று கூறலாம்.
Pig:-
இது தரவுகளை எவ்விதம் மாற்ற வேண்டும், எவ்வாறு மாற்ற வேண்டும் (data transformation logic) என்பதை கணினிக்கு கூற உதவும் ஒரு நிரலாக்க மொழி ஆகும். SQL போன்று செயல்படக் கூடிய இந்த நிரலாக்க மொழி PigLatin என்றும், இதை வைத்து உருவாக்கப்படுபவை PigPrograms என்றும் அழைக்கப்படுகின்றன. இத்தகைய programs-தான் Mapreducer algorithmn-களில் எழுதப்பட்டு அவை hadoop cluster-ல் இயக்கப்படுகின்றன. Pig-ல் பயனர்கள் தாங்களே ஒரு function-ஐ வரையறுப்பதன்(User Defined Functions) மூலம் Jruby, Jython, Javaபோன்ற மற்ற நிரலாக்க மொழிகளுடனும் இணைந்து செயல்பட முடியும். இதன் விளைவாக நிகழ்காலப் பிரச்சனைகளை அலசுவதற்கு உதவும் விதமாக உருவாக்கப்பட்ட ஒருசில பயன்பாட்டியல்களில் Pig ஒரு கருவியாக சுலபமாக இணைந்து செயல்பட வல்லது.
Hive:-
இதுவும் SQL போன்று செயல்படக் கூடிய ஒரு மொழிதான். ஆனால் Pig என்பது ஒரு scripting மொழியெனில், Hive என்பது ஒரு query மொழி. Transformation Logic-ஐ எழுதுவதற்கு நிரலாக்க மொழியில் பழக்கமுள்ளவர்கள் Pig-ஐத் தேர்வு செய்வார்கள். ETL, Data Warehousing போன்ற துறைகளில் வேலைப்பார்த்து SQL-ல் அதிக பழக்கமுள்ளவர்கள் Hive-ஐத் தேர்வு செய்வார்கள். மற்றபடி இரண்டும் கிட்டத்தட்ட ஒரே வேலையைச் செய்வதற்குத்தான் பயன்படுகின்றன. தரவுகளை அணுகும் முறைகளில்தான் இவை வேறுபட்டு விளங்குகின்றன.
Mahout:-
இது இயந்திரவழிக் கற்றலுக்கு(machine learning) உதவும் algorithmns-ஐக் கொண்ட ஒரு நூலகம் ஆகும். இதுவே செயற்கை அறிவுத்திறனை (Artificial Intelligence) வளர்ப்பதற்கு அடித்தளமாக விளங்குகிறது. இப்பிரிவில் இயந்திரங்கள் என்ன செய்ய வேண்டும் என்பதனை வெளிப்படையாக நிரல்கள் மூலம் சொல்லத் தேவையில்லை. hdfs-ல் உள்ள அதிகப்படியான தரவுகளிலிருந்து தாமாகவே ஒரு pattern-ஐக் கண்டுபிடித்து, அடுத்த நிலைக்குச் செல்லும் திறன் பெற்றதாக இயந்திரங்களை மாற்றுவதற்கு இத்தகைய Mahout algorithmns உதவுகின்றன. இவற்றை நாம் Mapreducer-ல் பயன்படுத்தி hdfs-ல் உள்ள தரவுகளைக் கையாளச் செய்யலாம்.
Avro:-
Data Serialization-க்கு உதவுகின்ற ஒரு கோப்பு வகைதான் இந்த Avro. இதனையும் Doug Cutting என்பவர்தான் கண்டுபிடித்தார். ஒரு மாபெரும் தரவுத் தளத்திலுள்ள தரவுகளை எடுத்து jsonவடிவிலோ, binaryவடிவிலோ கொடுப்பதற்கு Data Serializationஎன்று பெயர். உதாரணத்துக்கு 1TB அளவுகொண்ட தரவுகளை text வடிவில் மாற்றினால் அது 2TB அளவுடையதாகவும், அதையே binary வடிவான avro வடிவில் மாற்றினால் அது 500MB அளவுடையதாகவும் மாறிவிடும். இவ்வாறு அதிக அளவு கொண்டவற்றை குறைந்த அளவில் மாற்றுவதற்குத் தான் zip, tarஆகியவை ஏற்கனவே உள்ளனவே என்று நீங்கள் கேட்கலாம். ஆனால் இவையெல்லாம் ஒரே கணினியில் வேண்டுமானால் சுலபமாக unzip, untar செய்து பயன்படுத்தப்படலாம். இதுவே ஒரு cluster என்று வரும்போது இத்தகைய வடிவங்கள் உதவாது. அதற்கென சிறப்பாக உருவாக்கப்பட்ட ஒரு கோப்புவடிவம் தான் இந்த Avro.
Avro வடிவில் சுருக்கப்பட்ட தரவுகளைப் பிரித்து பல்வேறு கணினிகளுக்கு அனுப்பும்போது, எந்த ஒரு தகவல் இழப்பும் ஏற்படாமல், அவைகள் பிரிக்கப்பட்ட அளவில் தனித்தனியே process செய்யப்படும். இதற்கென Compressible மற்றும் splittable எனும் இரு வடிவங்களில் binary கோப்புகள் உருவாக்கப்படுகின்றன. இதுவே இதன் சிறப்பம்சம் ஆகும். மேலும் இத்தகைய கோப்புகளை பல்வேறு வகை நிரலாக்க மொழிகளாலும் எடுத்துப் படிக்க முடியும். Avro schema-வானது json வடிவில் வரையறுக்கப்பட்டு முழுமையாக அதைச் சார்ந்தே செயல்படுகிறது. எனவே இது மொழி சார்பற்றதாகவும் schema-based ஆகவும் விளங்குகிறது.
Sqoop:-
தரவுத்தளம் / தரவுக்கிடங்கு (database / datastores) ஆகியவற்றிலிருந்து hadoop-க்கு மொத்தமாக (bulk-data processing)தரவுகளைப் பரிமாற்றம் செய்வதற்கு sqoop (SQL + Hadoop) பயன்படுகிறது. என்பதே sqoop ஆகும். ETL-க்குத் துணைபுரியும் வகையில் தரவுகள் அனைத்தையும் தரவுக்கிடங்கிலிருந்து(EDW) hadoop-க்கு மாற்றியும், அவ்வாறே hadoop-லிருந்து கிடங்கிற்கு மாற்றியும் குறைந்த செலவில் திறம்பட செயலாற்றுவதற்கு இது உதவுகிறது. மேலும் Teradata, Mysql, Oracle, Postgreபோன்ற அனைத்து வகையான தரவுத்தளத்துடனும் இது இணைந்து செயலாற்ற வல்லது.
Oozie:-
இது ஒரு workflow schedularஆகும். ஒன்றுடன் ஒன்று சார்பு கொண்ட தொடர்ச்சியான வேலைகளை அடுத்தடுத்து இயக்கப் பயன்படும். அதாவது தனிச்சையாக இயங்கக்கூடிய வேலைகளைக் கையாள்வது சுலபம். ஆனால் ஒரு வேலையின் வெளியீட்டை வைத்துத்தான் மற்றொன்று தன் செயல்பாட்டைத் துவங்கவேண்டுமெனில், அதற்கு இந்த Oozie பயன்படுகிறது. இதில் DAG (Directed Acyclical Graphs) எனும் வரைப்படத்தை உருவாக்கி, அதன் மூலம் பல்வேறு வேலைகளின் தொடர்புகளையும், அவை இயக்கப்பட வேண்டிய வரிசைமுறைகளையும் தெளிவாக விளக்கலாம். இதில் ஒரு node செயலுக்காகவும், மற்றொன்று செயல்களை தீர்மானிக்கவும் பயன்படுகிறது.
Action node என்பது செயலுக்கானது. Hdfs-ல் கோப்புகளை கொண்டு சேர்த்தல், mapreducer-ஐ இயக்குதல், pig/hive-ன் இயக்கங்களைத் துவக்குதல், பல்வேறு மூலங்களிலிருந்து தரவுகளை இறக்குதல் ஆகியன இதில் அடங்கும். Control node என்பது செயல்களை தீர்மானிக்கக் கூடியது. அதாவது ஒரு வேலையின் முடிவினை வைத்து அடுத்து எங்கு செல்ல வேண்டும், எந்த விதமான முடிவுக்கு எங்கிருந்து அடுத்தடுத்த வேலைகளைத் துவங்க வேண்டும் போன்ற அனைத்தையும் தீர்மானிக்கிறது. Start, End, Error ஆகிய nodes அனைத்தும் இந்த செயல்களைத் தீர்மானிக்கும் node வகையின் கீழ் வருகின்றன.
Chukwa:-
பொதுவாக hadoop என்பது hdfs-க்குள் ஏற்றப்பட்ட நிலையான தகவல்களை எடுத்து தனது வேலைகளைத் துவங்கும். ஆனால் பல்வேறு கணிணிகளிடமிருந்து தொடர்ச்சியாக வருகின்ற logs அனைத்தையும் hdfs-க்குள் செலுத்தி அதனை ஆய்வு செய்வதற்கு இத்தகைய chukwa, flumeபோன்ற கருவிகள் பயன்படுகின்றன. இதில் agent மற்றும் collector என்று இரண்டு அமைப்புகள் உள்ளன. Agent என்பது தரவுகளை எடுத்து அனுப்புவதற்காக ஒவ்வொரு கணினியிலும் செயல்படுவது. Collector என்பது agent அனுப்பிய தரவுகளைப் பெற்று hdfs-க்குள் அனுப்புவது.
Chukwa எனும் இக்கருவி collection, processingபோன்ற பல்வேறு நிலைகளைக் கொண்ட ஒரு குழாய் போன்ற செயல்பாட்டமைப்பினைப் பெற்றிருக்கும். இதன் ஒவ்வொரு நிலையும் பல்வேறு இடைமுகப்புகளால் இணைக்கப்பட்டிருக்கும். எனவே பிற்காலத்தில் புதுப்புது மாறுதல்கள் வந்தாலும்கூட, அதன் தற்போதைய நிலையில் எந்தஒரு குறைப்பாடும் இருக்காது. HICC (Hadoop Infrastructure Care Center) என்பதும் தகவல்களை வெளிப்படுத்துவதற்கு உதவுகின்ற வலைப்பக்கத்திற்கான ஒரு இடைமுகப்பு ஆகும். இதன்மூலம் தகவல்களை திறம்பட வெளிப்படுத்தி, கண்காணித்து அதனடிப்படையில் தேர்ந்த முடிவுகளை எடுக்கலாம்.
Flume:-
இதுவும் chukwa போன்றே batch processing-க்கு உதவுகின்ற, ஆனால் அதைவிட மிகக் குறைந்த நேரத்தில் logs-ஐ எடுத்து அனுப்பும் ஒரு கருவியாகும். Chukwa என்பது 5 நிமிடத்திற்கு ஒருமுறை batch முறைப்படி logs-ஐ எடுத்து அனுப்பினால், Flume-ஆனது சமகாலத்தில் வந்து கொண்டிருக்கின்ற logs-ஐ எடுத்து உடனுக்குடன் அனுப்புகிறது. இது logs விழ விழ அதனை எடுத்து உடனுக்குடன் Continuous Streaming முறைப்படி அனுப்பிக்கொண்டே இருக்கும்.
Zoo Keeper:-
இக்கருவி பிரிந்து இயங்குகின்ற பல்வேறு பயன்பாட்டியல்களை ஒருங்கிணைக்கப் பயன்படுகிறது. உதாரணத்துக்கு cluster-ல் இயங்கிக்கொண்டிருக்கும் 50-க்கும் மேற்பட்ட கணிணிகளில் ஏதேனும் ஒன்றில் கோளாறு ஏற்பட்டால் கூட அது எந்த node, எங்கிருந்து வருகிறது, மாற்றாக என்ன செய்வது போன்ற அனைத்து விதமான கோணங்களிலிருந்தும் யோசித்து, மாற்று செயல்பாடுகளுக்கான வேலையைத் துவங்கி அவை அனைத்தையும் பராமரிக்கும் வேலையை Zoo Keeper செய்கிறது.