அனைவருக்கும் வணக்கம்!
பணி பின்வருமாறு - மேலே உள்ள படத்தில் ஒரு ஓட்டம் காட்டப்பட்டுள்ளது, இது N சேவையகங்களுக்கு உருட்டப்பட வேண்டும்
NiFi Site to Site (S2S) என்பது NiFi நிகழ்வுகளுக்கு இடையே தரவை மாற்றுவதற்கான பாதுகாப்பான, மிகவும் தனிப்பயனாக்கக்கூடிய வழியாகும். S2S எவ்வாறு செயல்படுகிறது என்பதைப் பார்க்கவும்
S2S ஐப் பயன்படுத்தி தரவு பரிமாற்றம் வரும்போது, ஒரு நிகழ்வு கிளையன்ட் என்று அழைக்கப்படுகிறது, இரண்டாவது சேவையகம். கிளையன்ட் தரவை அனுப்புகிறது, சேவையகம் அதைப் பெறுகிறது. அவற்றுக்கிடையே தரவு பரிமாற்றத்தை அமைக்க இரண்டு வழிகள்:
- புஷ். ரிமோட் பிராசஸ் குழுவை (RPG) பயன்படுத்தி கிளையண்ட் நிகழ்விலிருந்து தரவு அனுப்பப்படுகிறது. சேவையக நிகழ்வில், உள்ளீட்டு போர்ட்டைப் பயன்படுத்தி தரவு பெறப்படுகிறது
- இழு. சேவையகம் ஆர்பிஜியைப் பயன்படுத்தி தரவைப் பெறுகிறது, கிளையன்ட் அவுட்புட் போர்ட்டைப் பயன்படுத்தி அனுப்புகிறது.
உருட்டலுக்கான ஓட்டம் அப்பாச்சி பதிவேட்டில் சேமிக்கப்படுகிறது.
அப்பாச்சி நிஃபை ரெஜிஸ்ட்ரி என்பது அப்பாச்சி நிஃபையின் துணைத் திட்டமாகும், இது ஃப்ளோ ஸ்டோரேஜ் மற்றும் பதிப்புக் கருவியை வழங்குகிறது. ஒரு வகையான ஜிஐடி. பதிவேட்டில் நிறுவுதல், கட்டமைத்தல் மற்றும் பணிபுரிதல் பற்றிய தகவல்களைக் காணலாம்
தொடக்கத்தில், N ஒரு சிறிய எண்ணாக இருக்கும் போது, ஓட்டமானது நியாயமான நேரத்தில் கையால் வழங்கப்பட்டு புதுப்பிக்கப்படும்.
ஆனால் N வளரும்போது, மேலும் சிக்கல்கள் உள்ளன:
- ஓட்டத்தைப் புதுப்பிக்க அதிக நேரம் எடுக்கும். நீங்கள் அனைத்து சேவையகங்களுக்கும் செல்ல வேண்டும்
- டெம்ப்ளேட்களைப் புதுப்பிப்பதில் பிழைகள் உள்ளன. இங்கே அவர்கள் புதுப்பிக்கப்பட்டனர், ஆனால் இங்கே அவர்கள் மறந்துவிட்டார்கள்
- அதிக எண்ணிக்கையிலான ஒத்த செயல்பாடுகளைச் செய்யும்போது மனித தவறு
செயல்முறையை தானியக்கமாக்குவது அவசியம் என்பதற்கு இவை அனைத்தும் நம்மைக் கொண்டுவருகின்றன. இந்த சிக்கலை தீர்க்க நான் பின்வரும் வழிகளை முயற்சித்தேன்:
- NiFiக்குப் பதிலாக MiNiFi ஐப் பயன்படுத்தவும்
- NiFi CLI
- NiPyAPI
MiNiFi ஐப் பயன்படுத்துதல்
மற்றொரு துணைத் திட்டம், MiNiFi C2 சேவையகம், இந்த சிக்கலை தீர்க்க உதவும். இந்த தயாரிப்பு வரிசைப்படுத்தல் கட்டமைப்பில் மைய புள்ளியாக இருக்க வேண்டும். சுற்றுச்சூழலை எவ்வாறு கட்டமைப்பது - விவரிக்கப்பட்டுள்ளது
மேலே உள்ள கட்டுரையில் விவரிக்கப்பட்டுள்ள விருப்பம் வேலை செய்கிறது மற்றும் செயல்படுத்த கடினமாக இல்லை, ஆனால் பின்வருவனவற்றை நாம் மறந்துவிடக் கூடாது:
- minifi இல் nifi இலிருந்து அனைத்து செயலிகளும் இல்லை
- மினிஃபியில் உள்ள சிபியு பதிப்புகள் நிஃபையில் உள்ள சிபியு பதிப்புகளை விட பின்தங்கி உள்ளன.
எழுதும் நேரத்தில், NiFi இன் சமீபத்திய பதிப்பு 1.9.2 ஆகும். சமீபத்திய MiNiFi பதிப்பின் செயலி பதிப்பு 1.7.0 ஆகும். செயலிகளை MiNiFi இல் சேர்க்கலாம், ஆனால் NiFi மற்றும் MiNiFi செயலிகளுக்கு இடையே உள்ள பதிப்பு முரண்பாடுகள் காரணமாக, இது வேலை செய்யாமல் போகலாம்.
NiFi CLI
ஆல் தீர்ப்பளித்தல்
பயன்பாட்டை இயக்கவும்
./bin/cli.sh
_ ___ _
Apache (_) .' ..](_) ,
_ .--. __ _| |_ __ )
[ `.-. | [ |'-| |-'[ | /
| | | | | | | | | | ' '
[___||__][___][___] [___]', ,'
`'
CLI v1.9.2
Type 'help' to see a list of available commands, use tab to auto-complete.
பதிவேட்டில் இருந்து தேவையான ஓட்டத்தை ஏற்றுவதற்கு, கூடையின் அடையாளங்காட்டிகள் (வாளி அடையாளங்காட்டி) மற்றும் ஓட்டம் (ஓட்டம் அடையாளங்காட்டி) ஆகியவற்றை நாம் அறிந்து கொள்ள வேண்டும். இந்தத் தரவை cli மூலமாகவோ அல்லது NiFi ரெஜிஸ்ட்ரி இணைய இடைமுகத்திலோ பெறலாம். வலை இடைமுகம் இதுபோல் தெரிகிறது:
CLI ஐப் பயன்படுத்தி, நீங்கள் இதைச் செய்கிறீர்கள்:
#> registry list-buckets -u http://nifi-registry:18080
# Name Id Description
- -------------- ------------------------------------ -----------
1 test_bucket 709d387a-9ce9-4535-8546-3621efe38e96 (empty)
#> registry list-flows -b 709d387a-9ce9-4535-8546-3621efe38e96 -u http://nifi-registry:18080
# Name Id Description
- ------------ ------------------------------------ -----------
1 test_flow d27af00a-5b47-4910-89cd-9c664cd91e85
பதிவேட்டில் இருந்து இறக்குமதி செயல்முறை குழுவை இயக்கவும்:
#> nifi pg-import -b 709d387a-9ce9-4535-8546-3621efe38e96 -f d27af00a-5b47-4910-89cd-9c664cd91e85 -fv 1 -u http://nifi:8080
7f522a13-016e-1000-e504-d5b15587f2f3
ஒரு முக்கியமான விஷயம் என்னவென்றால், எந்த nifi நிகழ்வையும் நாம் செயல்முறைக் குழுவை ரோல் செய்யும் ஹோஸ்டாகக் குறிப்பிடலாம்.
நிறுத்தப்பட்ட செயலிகளுடன் செயல்முறை குழு சேர்க்கப்பட்டது, அவை தொடங்கப்பட வேண்டும்
#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080
அருமை, செயலிகள் தொடங்கிவிட்டன. இருப்பினும், சிக்கலின் நிலைமைகளின்படி, பிற நிகழ்வுகளுக்கு தரவை அனுப்ப எங்களுக்கு NiFi நிகழ்வுகள் தேவை. சேவையகத்திற்கு தரவை மாற்ற புஷ் முறை தேர்ந்தெடுக்கப்பட்டது என்று வைத்துக்கொள்வோம். தரவு பரிமாற்றத்தை ஒழுங்கமைக்க, எங்கள் ஓட்டத்தில் ஏற்கனவே சேர்க்கப்பட்டுள்ள ரிமோட் செயல்முறை குழுவில் (RPG) தரவு பரிமாற்றத்தை (இயக்கு அனுப்புதல்) இயக்குவது அவசியம்.
CLI மற்றும் பிற ஆதாரங்களில் உள்ள ஆவணங்களில், தரவு பரிமாற்றத்தை இயக்குவதற்கான வழியை நான் காணவில்லை. இதை எப்படி செய்வது என்று உங்களுக்குத் தெரிந்தால், கருத்துகளில் எழுதுங்கள்.
எங்களிடம் பேஷ் இருப்பதால், இறுதிவரை செல்ல நாங்கள் தயாராக இருப்பதால், நாங்கள் ஒரு வழியைக் கண்டுபிடிப்போம்! இந்த சிக்கலை தீர்க்க நீங்கள் NiFi API ஐப் பயன்படுத்தலாம். பின்வரும் முறையைப் பயன்படுத்துவோம், மேலே உள்ள எடுத்துக்காட்டுகளிலிருந்து ஐடியை எடுத்துக்கொள்வோம் (எங்கள் விஷயத்தில் இது 7f522a13-016e-1000-e504-d5b15587f2f3). NiFi API முறைகளின் விளக்கம்
உடலில், பின்வரும் படிவத்தின் JSON ஐ நீங்கள் அனுப்ப வேண்டும்:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}
"வேலை" செய்வதற்காக நிரப்பப்பட வேண்டிய அளவுருக்கள்:
இருந்து - தரவு பரிமாற்ற நிலை. தரவு பரிமாற்றத்தை இயக்குவதற்கு டிரான்ஸ்மிட்டிங் உள்ளது, முடக்குவதற்கு நிறுத்தப்பட்டது
பதிப்பு - செயலி பதிப்பு
உருவாக்கப்படும் போது பதிப்பு இயல்புநிலையாக 0 ஆக இருக்கும், ஆனால் இந்த அளவுருக்கள் முறையைப் பயன்படுத்தி பெறலாம்
பாஷ் ஸ்கிரிப்ட்களை விரும்புவோருக்கு, இந்த முறை பொருத்தமானதாகத் தோன்றலாம், ஆனால் அது எனக்கு கடினமாக உள்ளது - பாஷ் ஸ்கிரிப்டுகள் எனக்கு பிடித்தவை அல்ல. அடுத்த வழி என் கருத்துப்படி மிகவும் சுவாரஸ்யமானது மற்றும் வசதியானது.
NiPyAPI
NiPyAPI என்பது NiFi நிகழ்வுகளுடன் தொடர்புகொள்வதற்கான பைதான் நூலகமாகும்.
உள்ளமைவை வெளியிடுவதற்கான எங்கள் ஸ்கிரிப்ட் ஒரு பைதான் நிரலாகும். குறியீட்டு முறைக்கு செல்லலாம்.
மேலும் வேலைக்கான கட்டமைப்புகளை அமைக்கவும். எங்களுக்கு பின்வரும் அளவுருக்கள் தேவைப்படும்:
nipyapi.config.nifi_config.host = 'http://nifi:8080/nifi-api' #путь до nifi-api инстанса, на котором разворачиваем process group
nipyapi.config.registry_config.host = 'http://nifi-registry:18080/nifi-registry-api' #путь до nifi-registry-api registry
nipyapi.config.registry_name = 'MyBeutifulRegistry' #название registry, как будет называться в инстансе nifi
nipyapi.config.bucket_name = 'BucketName' #название bucket, из которого подтягиваем flow
nipyapi.config.flow_name = 'FlowName' #название flow, которое подтягиваем
மேலும் விவரிக்கப்பட்டுள்ள இந்த நூலகத்தின் முறைகளின் பெயர்களைச் செருகுவேன்
நாங்கள் பதிவேட்டைப் பயன்படுத்தி nifi நிகழ்வுடன் இணைக்கிறோம்
nipyapi.versioning.create_registry_client
இந்த கட்டத்தில், பதிவேட்டில் ஏற்கனவே சேர்க்கப்பட்டுள்ளதா என்பதை நீங்கள் சரிபார்க்கலாம், இதற்காக நீங்கள் முறையைப் பயன்படுத்தலாம்
nipyapi.versioning.list_registry_clients
கூடையில் ஓட்டத்தை மேலும் தேடுவதற்கு வாளியைக் காண்கிறோம்
nipyapi.versioning.get_registry_bucket
கிடைத்த வாளியின் படி, நாங்கள் ஓட்டத்தைத் தேடுகிறோம்
nipyapi.versioning.get_flow_in_bucket
அடுத்து, இந்த செயல்முறை குழு ஏற்கனவே சேர்க்கப்பட்டுள்ளதா என்பதைப் புரிந்துகொள்வது அவசியம். செயல்முறைக் குழு ஆயத்தொகுப்புகளால் வைக்கப்படுகிறது மற்றும் ஒன்றின் மேல் இரண்டாவது ஒன்றை மிகைப்படுத்தும்போது ஒரு சூழ்நிலை ஏற்படலாம். நான் சரிபார்த்தேன், அது 🙂 சேர்க்கப்பட்ட அனைத்து செயல்முறைக் குழுவையும் பெற, முறையைப் பயன்படுத்தவும்
nipyapi.canvas.list_all_process_groups
பின்னர் நாம் தேடலாம், எடுத்துக்காட்டாக, பெயர் மூலம்.
டெம்ப்ளேட்டைப் புதுப்பிக்கும் செயல்முறையை நான் விவரிக்க மாட்டேன், டெம்ப்ளேட்டின் புதிய பதிப்பில் செயலிகள் சேர்க்கப்பட்டால், வரிசைகளில் செய்திகள் இருப்பதில் எந்த பிரச்சனையும் இல்லை என்று மட்டுமே கூறுவேன். ஆனால் செயலிகள் அகற்றப்பட்டால், சிக்கல்கள் ஏற்படலாம் (நிஃபை செயலியின் முன் ஒரு செய்தி வரிசை குவிந்திருந்தால் அதை அகற்ற அனுமதிக்காது). இந்த சிக்கலை நான் எவ்வாறு தீர்த்தேன் என்பதில் நீங்கள் ஆர்வமாக இருந்தால் - எனக்கு எழுதுங்கள், தயவுசெய்து, நாங்கள் இந்த விஷயத்தைப் பற்றி விவாதிப்போம். கட்டுரையின் முடிவில் உள்ள தொடர்புகள். செயல்முறைக் குழுவைச் சேர்ப்பதற்கான படிக்குச் செல்லலாம்.
ஸ்கிரிப்டை பிழைத்திருத்தம் செய்யும் போது, ஓட்டத்தின் சமீபத்திய பதிப்பு எப்போதும் இழுக்கப்படுவதில்லை என்ற அம்சத்தை நான் கண்டேன், எனவே இந்த பதிப்பை முதலில் தெளிவுபடுத்துமாறு பரிந்துரைக்கிறேன்:
nipyapi.versioning.get_latest_flow_ver
செயல்முறை குழுவை வரிசைப்படுத்துங்கள்:
nipyapi.versioning.deploy_flow_version
நாங்கள் செயலிகளைத் தொடங்குகிறோம்:
nipyapi.canvas.schedule_process_group
CLI பற்றிய பிளாக்கில், தொலைநிலை செயல்முறை குழுவில் தரவு பரிமாற்றம் தானாகவே இயக்கப்படவில்லை என்று எழுதப்பட்டதா? ஸ்கிரிப்டை செயல்படுத்தும் போது, நானும் இந்த சிக்கலை எதிர்கொண்டேன். அந்த நேரத்தில், என்னால் API ஐப் பயன்படுத்தி தரவு பரிமாற்றத்தைத் தொடங்க முடியவில்லை, மேலும் NiPyAPI நூலகத்தின் டெவலப்பருக்கு எழுதி ஆலோசனை / உதவி கேட்க முடிவு செய்தேன். டெவலப்பர் எனக்கு பதிலளித்தார், நாங்கள் சிக்கலைப் பற்றி விவாதித்தோம், மேலும் அவர் "ஏதாவது சரிபார்க்க" நேரம் தேவை என்று எழுதினார். இப்போது, இரண்டு நாட்களுக்குப் பிறகு, ஒரு மின்னஞ்சல் வருகிறது, அதில் ஒரு பைதான் செயல்பாடு எழுதப்பட்டுள்ளது, அது எனது தொடக்க சிக்கலை தீர்க்கிறது !!! அந்த நேரத்தில், NiPyAPI பதிப்பு 0.13.3 ஆக இருந்தது, நிச்சயமாக, அதில் அப்படி எதுவும் இல்லை. ஆனால் சமீபத்தில் வெளியிடப்பட்ட பதிப்பு 0.14.0 இல், இந்த செயல்பாடு ஏற்கனவே நூலகத்தில் சேர்க்கப்பட்டுள்ளது. சந்திக்கவும்
nipyapi.canvas.set_remote_process_group_transmission
எனவே, NiPyAPI நூலகத்தின் உதவியுடன், நாங்கள் பதிவேட்டை இணைத்தோம், ஓட்டத்தை உருட்டினோம், மேலும் செயலிகள் மற்றும் தரவு பரிமாற்றத்தையும் தொடங்கினோம். நீங்கள் குறியீட்டை சீப்பு செய்யலாம், அனைத்து வகையான காசோலைகளையும் சேர்க்கலாம், பதிவு செய்யலாம், அவ்வளவுதான். ஆனால் அது முற்றிலும் மாறுபட்ட கதை.
நான் கருதிய ஆட்டோமேஷன் விருப்பங்களில், பிந்தையது எனக்கு மிகவும் திறமையானதாகத் தோன்றியது. முதலாவதாக, இது இன்னும் பைதான் குறியீடு, இதில் நீங்கள் துணை நிரல் குறியீட்டை உட்பொதிக்கலாம் மற்றும் நிரலாக்க மொழியின் அனைத்து நன்மைகளையும் அனுபவிக்க முடியும். இரண்டாவதாக, NiPyAPI திட்டம் தீவிரமாக வளர்ந்து வருகிறது மற்றும் சிக்கல்கள் ஏற்பட்டால் நீங்கள் டெவலப்பருக்கு எழுதலாம். மூன்றாவதாக, சிக்கலான சிக்கல்களைத் தீர்ப்பதில் NiFi உடன் தொடர்புகொள்வதற்கான மிகவும் நெகிழ்வான கருவியாக NiPyAPI உள்ளது. எடுத்துக்காட்டாக, செய்தி வரிசைகள் தற்போது ஓட்டத்தில் காலியாக உள்ளதா மற்றும் செயல்முறைக் குழுவைப் புதுப்பிக்க முடியுமா என்பதைத் தீர்மானிப்பதில்.
அவ்வளவுதான். NiFi இல் ஃப்ளோ டெலிவரியை தானியக்கமாக்குவதற்கான 3 அணுகுமுறைகளை விவரித்தேன், டெவலப்பர் சந்திக்கக்கூடிய ஆபத்துகள் மற்றும் டெலிவரியை தானியங்குபடுத்துவதற்கான செயல்பாட்டுக் குறியீட்டை வழங்கினேன். இந்த தலைப்பில் என்னைப் போலவே உங்களுக்கும் ஆர்வமாக இருந்தால் -
ஆதாரம்: www.habr.com