Hello kulħadd!
Il-kompitu huwa kif ġej - hemm fluss, ippreżentat fl-istampa ta 'hawn fuq, li jeħtieġ li jiġi mxerred għal N servers b'
NiFi Site to Site (S2S) huwa mod sigur u konfigurabbli faċilment biex tittrasferixxi d-dejta bejn istanzi NiFi. Kif jaħdem S2S, ara
F'każijiet fejn qed nitkellmu dwar it-trasferiment tad-data bl-użu ta 'S2S, istanza waħda tissejjaħ klijent, it-tieni server. Il-klijent jibgħat data, is-server jirċievi. Żewġ modi kif tikkonfigura t-trasferiment tad-dejta bejniethom:
- Imbotta. Mill-istanza tal-klijent, id-dejta tintbagħat permezz ta' Grupp ta' Proċess Remot (RPG). Fuq l-istanza tas-server, id-dejta tiġi riċevuta bl-użu tal-Port tal-Input
- Iġbed. Is-server jirċievi data bl-użu ta 'RPG, il-klijent jibgħat bl-użu tal-Port Output.
Il-fluss għat-tnedija huwa maħżun fir-Reġistru Apache.
Apache NiFi Reġistru huwa sottoproġett ta 'Apache NiFi li jipprovdi għodda għall-ħażna tal-fluss u l-kontroll tal-verżjoni. Speċi ta 'GIT. Informazzjoni dwar l-installazzjoni, il-konfigurazzjoni u l-ħidma mar-reġistru tista' tinstab fi
Fil-bidu, meta N huwa numru żgħir, il-fluss jitwassal u jiġi aġġornat manwalment fi żmien aċċettabbli.
Iżda hekk kif N jikber, il-problemi jsiru aktar numerużi:
- jieħu aktar ħin biex taġġorna l-fluss. Għandek bżonn tidħol fis-servers kollha
- Jseħħu żbalji fl-aġġornament tal-mudelli. Hawn aġġornawh, imma hawn insew
- żbalji umani meta twettaq numru kbir ta 'operazzjonijiet simili
Dan kollu jwassalna għall-fatt li għandna bżonn nawtomatizzaw il-proċess. Ippruvajt il-modi li ġejjin biex issolvi din il-problema:
- Uża MiNiFi minflok NiFi
- NiFi CLI
- NiPyAPI
Bl-użu ta 'MiniFi
Sottoproġett ieħor se jgħin biex issolvi din il-problema - MiNiFi C2 Server. Dan il-prodott huwa maħsub biex ikun il-punt ċentrali fl-arkitettura tat-tnedija tal-konfigurazzjoni. Kif tikkonfigura l-ambjent - deskritt fi
L-għażla deskritta fl-artikolu hawn fuq qed taħdem u mhix diffiċli biex timplimenta, iżda ma rridux ninsew dan li ġej:
- Minifi m'għandux il-proċessuri kollha minn nifi
- Il-verżjonijiet tal-proċessuri Minifi għadhom lura wara l-verżjonijiet tal-proċessuri NiFi.
Fiż-żmien tal-kitba, l-aħħar verżjoni ta 'NiFi hija 1.9.2. L-aħħar verżjoni tal-proċessur MiNiFi hija 1.7.0. Il-proċessuri jistgħu jiżdiedu ma 'MiNiFi, iżda minħabba diskrepanzi fil-verżjoni bejn il-proċessuri NiFi u MiNiFi, dan jista' ma jaħdimx.
NiFi CLI
Ġudikant minn
Tnedija l-utilità
./bin/cli.sh
_ ___ _
Apache (_) .' ..](_) ,
_ .--. __ _| |_ __ )
[ `.-. | [ |'-| |-'[ | /
| | | | | | | | | | ' '
[___||__][___][___] [___]', ,'
`'
CLI v1.9.2
Type 'help' to see a list of available commands, use tab to auto-complete.
Sabiex aħna tagħbija l-fluss meħtieġ mir-reġistru, irridu nkunu nafu l-identifikaturi tal-barmil (identifikatur tal-barmil) u l-fluss innifsu (identifikatur tal-fluss). Din id-dejta tista' tinkiseb jew permezz tal-cli jew fl-interface tal-web tar-reġistru NiFi. Fl-interface tal-web jidher bħal dan:
Bl-użu tas-CLI dan isir:
#> 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
Nibdew jimportaw il-grupp tal-proċess mir-reġistru:
#> 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
Punt importanti huwa li kwalunkwe istanza nifi tista 'tiġi speċifikata bħala l-ospitant li lejh irrombla l-grupp tal-proċess.
Grupp ta 'proċess miżjud ma' proċessuri waqfien, jeħtieġ li jinbdew
#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080
Kbir, il-proċessuri bdew. Madankollu, skont it-termini tal-kompitu, neħtieġu istanzi NiFi biex nibagħtu data lil istanzi oħra. Ejja nassumu li għażilt il-metodu Push biex tittrasferixxi d-dejta lis-server. Sabiex torganizza t-trasferiment tad-dejta, trid tippermetti t-trasferiment tad-dejta fuq il-Grupp tal-Proċess Remot (RPG) miżjud, li diġà huwa inkluż fil-fluss tagħna.
Fid-dokumentazzjoni fis-CLI u sorsi oħra, ma sibtx mod kif nippermetti t-trasferiment tad-dejta. Jekk taf kif tagħmel dan, jekk jogħġbok ikteb fil-kummenti.
Peress li għandna bash u lesti li mmorru sal-aħħar, insibu mod kif noħorġu! Tista 'tuża l-API NiFi biex issolvi din il-problema. Ejja nużaw il-metodu li ġej, ħu l-ID mill-eżempji ta 'hawn fuq (fil-każ tagħna huwa 7f522a13-016e-1000-e504-d5b15587f2f3). Deskrizzjoni tal-metodi NiFi API
Fil-ġisem trid tgħaddi JSON, bħal dan:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}
Parametri li jridu jimtlew biex taħdem:
kienu — l-istatus tat-trasferiment tad-data. Disponibbli: TRAżmissjoni biex tippermetti t-trasferiment tad-dejta, Waqqfet biex tiddiżattiva
verżjoni - verżjoni tal-proċessur
verżjoni default għal 0 meta maħluqa, iżda dawn il-parametri jistgħu jinkisbu bl-użu tal-metodu
Għal fannijiet ta 'skripts bash, dan il-metodu jista' jidher adattat, iżda huwa daqsxejn diffiċli għalija - l-iskripts bash mhumiex il-favoriti tiegħi. Il-metodu li jmiss huwa aktar interessanti u konvenjenti fl-opinjoni tiegħi.
NiPyAPI
NiPyAPI hija librerija Python għall-interazzjoni ma 'istanzi NiFi.
L-iskrittura tagħna għat-tnedija tal-konfigurazzjoni hija programm f'Python. Ejja ngħaddu għall-kodifikazzjoni.
Aħna waqqafna konfigurazzjonijiet għal aktar xogħol. Ikollna bżonn il-parametri li ġejjin:
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, которое подтягиваем
Sussegwentement se ndaħħal l-ismijiet tal-metodi ta 'din il-librerija, li huma deskritti
Qabbad ir-reġistru mal-istanza nifi billi tuża
nipyapi.versioning.create_registry_client
F'dan il-pass, tista 'wkoll iżżid verifika li r-reġistru diġà ġie miżjud mal-istanza; għal dan tista' tuża l-metodu
nipyapi.versioning.list_registry_clients
Insibu l-barmil għal aktar tfittxija għall-fluss fil-basket
nipyapi.versioning.get_registry_bucket
Bl-użu tal-barmil misjub, infittxu fluss
nipyapi.versioning.get_flow_in_bucket
Sussegwentement, huwa importanti li wieħed jifhem jekk dan il-grupp ta 'proċess diġà ġiex miżjud. Il-grupp tal-Proċess jitqiegħed skont il-koordinati u tista' tinħoloq sitwazzjoni meta t-tieni komponent jiġi superimpost fuq wieħed. Iċċekkja, dan jista 'jiġri :) Biex tikseb il-gruppi kollha ta' proċessi miżjuda nużaw il-metodu
nipyapi.canvas.list_all_process_groups
Nistgħu nfittxu aktar, pereżempju, bl-isem.
Mhux se niddeskrivi l-proċess tal-aġġornament tal-mudell, ngħid biss li jekk il-proċessuri jiżdiedu fil-verżjoni l-ġdida tal-mudell, allura m'hemm l-ebda problemi bil-preżenza ta 'messaġġi fil-kjuwijiet. Iżda jekk il-proċessuri jitneħħew, allura jistgħu jinqalgħu problemi (nifi ma jippermettilekx tneħħi proċessur jekk ikun akkumula kju ta 'messaġġi quddiemu). Jekk inti interessat dwar kif solvut din il-problema, jekk jogħġbok iktebli u niddiskutu din il-kwistjoni. Kuntatti fl-aħħar tal-artiklu. Ejja ngħaddu għall-pass li żżid grupp ta 'proċess.
Meta niddibaggja l-iskrittura, iltqajt ma' partikolarità li l-aħħar verżjoni tal-fluss mhux dejjem tinġibed 'il fuq, għalhekk nirrakkomanda li tiċċekkja din il-verżjoni l-ewwel:
nipyapi.versioning.get_latest_flow_ver
Uża grupp ta' proċessi:
nipyapi.versioning.deploy_flow_version
Nibdew il-proċessuri:
nipyapi.canvas.schedule_process_group
Fil-blokk dwar CLI kien miktub li t-trasferiment tad-dejta mhux awtomatikament attivat fil-grupp tal-proċess remot? Meta implimentat l-iskrittura, iltqajt ma 'din il-problema wkoll. Dak iż-żmien, ma stajtx nibda t-trasferiment tad-dejta bl-użu tal-API u ddeċidejt li nikteb lill-iżviluppatur tal-librerija NiPyAPI u nitlob għal parir/għajnuna. L-iżviluppatur wieġeb lili, iddiskutejna l-problema u kiteb li kellu bżonn iż-żmien biex "jiċċekkja xi ħaġa". U mbagħad, ftit tal-jiem wara, tasal ittra li fiha tinkiteb funzjoni f'Python li ssolvi l-problema tat-tnedija tiegħi!!! Dak iż-żmien, il-verżjoni NiPyAPI kienet 0.13.3 u, ovvjament, ma kien hemm xejn bħal dan. Iżda fil-verżjoni 0.14.0, li ġiet rilaxxata pjuttost reċentement, din il-funzjoni kienet diġà inkluża fil-librerija. Iltaqa',
nipyapi.canvas.set_remote_process_group_transmission
Allura, bl-użu tal-librerija NiPyAPI, aħna konnessi r-reġistru, roll out fluss, u anke bdejna proċessuri u trasferiment tad-data. Imbagħad tista 'tikmix il-kodiċi, żid kull tip ta' kontrolli, illoggjar, u dak kollu. Imma dik hija storja kompletament differenti.
Mill-għażliet ta 'awtomazzjoni li ikkunsidrajt, l-aħħar waħda dehret lili l-aktar effiċjenti. L-ewwelnett, dan għadu kodiċi python, li fih tista 'tdaħħal kodiċi tal-programm awżiljarju u tieħu vantaġġ mill-benefiċċji kollha tal-lingwa ta' programmar. It-tieni nett, il-proġett NiPyAPI qed jiżviluppa b'mod attiv u f'każ ta 'problemi tista' tikteb lill-iżviluppatur. It-tielet nett, NiPyAPI għadu għodda aktar flessibbli għall-interazzjoni ma 'NiFi fis-soluzzjoni ta' problemi kumplessi. Per eżempju, fid-determinazzjoni jekk il-kjuwijiet tal-messaġġi humiex issa vojta fil-fluss u jekk il-grupp tal-proċess jistax jiġi aġġornat.
Dak kollox. Iddeskrivejt 3 approċċi għall-awtomatizzazzjoni tal-kunsinna tal-fluss f'NiFi, in-nases li żviluppatur jista 'jiltaqa' magħhom, u pprovda kodiċi tax-xogħol għall-awtomatizzazzjoni tal-kunsinna. Jekk int interessat f'dan is-suġġett daqs kemm jien -
Sors: www.habr.com