Helo bawb!
Mae'r dasg fel a ganlyn - mae llif yn cael ei ddangos yn y llun uchod, sydd angen ei gyflwyno i weinyddion N gyda
Mae Safle i Safle NiFi (S2S) yn ffordd ddiogel, hynod addasadwy o drosglwyddo data rhwng achosion NiFi. Gweld sut mae S2S yn gweithio
O ran trosglwyddo data gan ddefnyddio S2S, gelwir un enghraifft yn gleient, a'r ail yw gweinydd. Mae'r cleient yn anfon data, mae'r gweinydd yn ei dderbyn. Dwy ffordd o sefydlu trosglwyddiad data rhyngddynt:
- Gwthiwch. O enghraifft y cleient, anfonir data gan ddefnyddio Grŵp Proses o Bell (RPG). Yn achos y gweinydd, derbynnir data gan ddefnyddio'r Porth Mewnbwn
- Tynnwch. Mae'r gweinydd yn derbyn data gan ddefnyddio'r RPG, mae'r cleient yn ei anfon gan ddefnyddio'r porthladd Allbwn.
Mae llif ar gyfer cyflwyno yn cael ei storio yng Nghofrestrfa Apache.
Mae Cofrestrfa Apache NiFi yn is-brosiect o Apache NiFi sy'n darparu offeryn storio llif a fersiwn. Rhyw fath o GIT. Gellir dod o hyd i wybodaeth am osod, ffurfweddu a gweithio gyda'r gofrestrfa yn
Ar y dechrau, pan fo N yn nifer fach, mae'r llif yn cael ei ddanfon a'i ddiweddaru â llaw mewn amser rhesymol.
Ond wrth i N dyfu, mae mwy o broblemau:
- mae'n cymryd mwy o amser i ddiweddaru'r llif. Mae angen i chi fynd i bob gweinydd
- mae gwallau wrth ddiweddaru templedi. Yma maent yn diweddaru, ond yma maent wedi anghofio
- gwall dynol wrth gyflawni nifer fawr o weithrediadau tebyg
Daw hyn i gyd â ni at y ffaith bod angen awtomeiddio'r broses. Rwyf wedi rhoi cynnig ar y ffyrdd canlynol i ddatrys y broblem hon:
- Defnyddiwch MiNiFi yn lle NiFi
- NiFi CLI
- NiPyAPI
Defnyddio MiNiFi
Bydd is-brosiect arall, Gweinydd MiNiFi C2, yn helpu i ddatrys y broblem hon. Bwriedir i'r cynnyrch hwn fod yn bwynt canolog yn y bensaernïaeth lleoli. Sut i ffurfweddu'r amgylchedd - disgrifir yn
Mae'r opsiwn a ddisgrifir yn yr erthygl uchod yn gweithio ac nid yw'n anodd ei weithredu, ond ni ddylem anghofio'r canlynol:
- Nid oes gan minifi holl broseswyr gan nifi
- Mae fersiynau CPU yn Minifi ar ei hôl hi o gymharu â fersiynau CPU yn NiFi.
Ar adeg ysgrifennu, y fersiwn ddiweddaraf o NiFi yw 1.9.2. Fersiwn prosesydd y fersiwn MiNiFi diweddaraf yw 1.7.0. Gellir ychwanegu proseswyr at MiNiFi, ond oherwydd anghysondebau fersiwn rhwng proseswyr NiFi a MiNiFi, efallai na fydd hyn yn gweithio.
NiFi CLI
Beirniadu gan
Rhedeg y cyfleustodau
./bin/cli.sh
_ ___ _
Apache (_) .' ..](_) ,
_ .--. __ _| |_ __ )
[ `.-. | [ |'-| |-'[ | /
| | | | | | | | | | ' '
[___||__][___][___] [___]', ,'
`'
CLI v1.9.2
Type 'help' to see a list of available commands, use tab to auto-complete.
Er mwyn i ni lwytho'r llif angenrheidiol o'r gofrestrfa, mae angen i ni wybod dynodwyr y fasged (dynodwr bwced) a'r llif ei hun (dynodwr llif). Gellir cael y data hwn naill ai trwy'r cli neu yn rhyngwyneb gwe cofrestrfa NiFi. Mae'r rhyngwyneb gwe yn edrych fel hyn:
Gan ddefnyddio'r CLI, rydych chi'n gwneud hyn:
#> 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
Rhedeg grŵp proses mewnforio o'r gofrestrfa:
#> 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
Pwynt pwysig yw y gellir nodi unrhyw enghraifft nifi fel y gwesteiwr yr ydym yn cyflwyno'r grŵp proses arno.
Ychwanegwyd grŵp proses gyda phroseswyr sydd wedi'u stopio, mae angen eu cychwyn
#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080
Gwych, mae'r proseswyr wedi dechrau. Fodd bynnag, yn ôl amodau'r broblem, mae angen achosion NiFi arnom i anfon data i achosion eraill. Gadewch i ni dybio bod y dull Push wedi'i ddewis i drosglwyddo data i'r gweinydd. Er mwyn trefnu trosglwyddo data, mae angen galluogi trosglwyddo data (Galluogi trosglwyddo) ar y Grŵp Proses Anghysbell (RPG) ychwanegol, sydd eisoes wedi'i gynnwys yn ein llif.
Yn y ddogfennaeth yn y CLI a ffynonellau eraill, ni wnes i ddod o hyd i ffordd i alluogi trosglwyddo data. Os ydych chi'n gwybod sut i wneud hyn, ysgrifennwch y sylwadau.
Gan fod gennym bash ac rydym yn barod i fynd i'r diwedd, byddwn yn dod o hyd i ffordd allan! Gallwch ddefnyddio'r API NiFi i ddatrys y broblem hon. Gadewch i ni ddefnyddio'r dull canlynol, rydym yn cymryd yr ID o'r enghreifftiau uchod (yn ein hachos ni mae'n 7f522a13-016e-1000-e504-d5b15587f2f3). Disgrifiad o Ddulliau API NiFi
Yn y corff, mae angen i chi basio JSON, o'r ffurf ganlynol:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}
Paramedrau y mae'n rhaid eu llenwi er mwyn “gweithio”:
Roedd - statws trosglwyddo data. TROSGLWYDDO Ar gael i alluogi trosglwyddo data, WEDI STOPIO i analluogi
fersiwn - fersiwn prosesydd
bydd fersiwn diofyn i 0 pan gaiff ei greu, ond gellir cael y paramedrau hyn gan ddefnyddio'r dull
I'r rhai sy'n hoff o sgriptiau bash, efallai y bydd y dull hwn yn ymddangos yn addas, ond mae'n anodd i mi - nid sgriptiau bash yw fy ffefryn. Mae'r ffordd nesaf yn fwy diddorol ac yn fwy cyfleus yn fy marn i.
NiPyAPI
Llyfrgell Python yw NiPyAPI ar gyfer rhyngweithio ag achosion NiFi.
Ein sgript ar gyfer cyflwyno'r ffurfweddiad yw rhaglen Python. Gadewch i ni symud ymlaen i godio.
Rydym yn sefydlu configs ar gyfer gwaith pellach. Bydd angen y paramedrau canlynol arnom:
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, которое подтягиваем
Ymhellach byddaf yn mewnosod enwau dulliau'r llyfrgell hon, sy'n cael eu disgrifio
Rydym yn cysylltu'r gofrestrfa i'r enghraifft nifi gan ddefnyddio
nipyapi.versioning.create_registry_client
Ar y cam hwn, gallwch hefyd ychwanegu siec bod y gofrestrfa eisoes wedi'i hychwanegu at yr enghraifft, ar gyfer hyn gallwch ddefnyddio'r dull
nipyapi.versioning.list_registry_clients
Rydyn ni'n dod o hyd i'r bwced i chwilio ymhellach am lif yn y fasged
nipyapi.versioning.get_registry_bucket
Gan ddefnyddio'r bwced a ddarganfuwyd, rydym yn edrych am lif
nipyapi.versioning.get_flow_in_bucket
Nesaf, mae'n bwysig deall a yw'r grŵp proses hwn eisoes wedi'i ychwanegu. Mae'r grŵp proses yn cael ei osod gan gyfesurynnau a gall sefyllfa godi pan fydd ail un yn cael ei arosod ar ben un. Gwiriais, gall fod yn 🙂 I gael yr holl grŵp proses ychwanegol, defnyddiwch y dull
nipyapi.canvas.list_all_process_groups
ac yna gallwn chwilio, er enghraifft, yn ôl enw.
Ni fyddaf yn disgrifio'r broses o ddiweddaru'r templed, dim ond os ychwanegir proseswyr yn y fersiwn newydd o'r templed y byddaf yn dweud, yna nid oes unrhyw broblemau gyda phresenoldeb negeseuon yn y ciwiau. Ond os caiff y proseswyr eu tynnu, yna gall problemau godi (nid yw nifi yn caniatáu tynnu'r prosesydd os yw ciw neges wedi cronni o'i flaen). Os oes gennych ddiddordeb mewn sut y gwnes i ddatrys y broblem hon - ysgrifennwch ataf, os gwelwch yn dda, byddwn yn trafod y pwynt hwn. Cysylltiadau ar ddiwedd yr erthygl. Gadewch i ni symud ymlaen at y cam o ychwanegu grŵp proses.
Wrth ddadfygio'r sgript, deuthum ar draws nodwedd nad yw'r fersiwn ddiweddaraf o lif yn cael ei thynnu i fyny bob amser, felly rwy'n argymell eich bod yn egluro'r fersiwn hon yn gyntaf:
nipyapi.versioning.get_latest_flow_ver
Defnyddio grŵp proses:
nipyapi.versioning.deploy_flow_version
Rydyn ni'n dechrau'r proseswyr:
nipyapi.canvas.schedule_process_group
Yn y bloc am CLI, ysgrifennwyd nad yw trosglwyddo data yn cael ei alluogi yn awtomatig yn y grŵp proses anghysbell? Wrth weithredu'r sgript, deuthum ar draws y broblem hon hefyd. Bryd hynny, ni allwn ddechrau trosglwyddo data gan ddefnyddio'r API a phenderfynais ysgrifennu at ddatblygwr llyfrgell NiPyAPI a gofyn am gyngor / help. Atebodd y datblygwr fi, buom yn trafod y broblem ac ysgrifennodd ei fod angen amser i “wirio rhywbeth”. A nawr, cwpl o ddiwrnodau yn ddiweddarach, mae e-bost yn cyrraedd lle mae swyddogaeth Python wedi'i ysgrifennu sy'n datrys fy mhroblem cychwyn !!! Bryd hynny, fersiwn NiPyAPI oedd 0.13.3 ac, wrth gwrs, nid oedd dim byd o'r fath ynddo. Ond yn fersiwn 0.14.0, a ryddhawyd yn eithaf diweddar, mae'r swyddogaeth hon eisoes wedi'i chynnwys yn y llyfrgell. Cyfarfod
nipyapi.canvas.set_remote_process_group_transmission
Felly, gan ddefnyddio llyfrgell NiPyAPI, fe wnaethom gysylltu'r gofrestrfa, cyflwyno llif, a hyd yn oed ddechrau proseswyr a throsglwyddo data. Yna gallwch chi gribo'r cod, ychwanegu pob math o wiriadau, logio, a dyna i gyd. Ond stori hollol wahanol yw honno.
O'r opsiynau awtomeiddio a ystyriwyd gennyf, roedd yn ymddangos i mi mai'r un olaf oedd y mwyaf effeithlon. Yn gyntaf, cod python yw hwn o hyd, y gallwch chi ymgorffori cod rhaglen ategol ynddo a manteisio ar holl fanteision yr iaith raglennu. Yn ail, mae'r prosiect NiPyAPI wrthi'n datblygu ac yn achos problemau gallwch ysgrifennu at y datblygwr. Yn drydydd, mae NiPyAPI yn dal i fod yn offeryn mwy hyblyg ar gyfer rhyngweithio â NiFi wrth ddatrys problemau cymhleth. Er enghraifft, wrth benderfynu a yw'r ciwiau neges bellach yn wag yn y llif ac a ellir diweddaru'r grŵp proses.
Dyna i gyd. Disgrifiais 3 dull o awtomeiddio cyflenwi llif yn NiFi, y peryglon y gallai datblygwr ddod ar eu traws a darparais god gweithio ar gyfer awtomeiddio cyflenwi. Os oes gennych chi gymaint o ddiddordeb yn y pwnc hwn ag ydw i -
Ffynhonnell: hab.com