Automation lìbhrigeadh sruthadh ann an Apache NiFi

Hello a h-uile duine!

Automation lìbhrigeadh sruthadh ann an Apache NiFi

Tha an obair mar a leanas - tha sruth ann, air a thaisbeanadh san dealbh gu h-àrd, a dh’ fheumas a bhith air a sgaoileadh a-mach gu frithealaichean N le Apache NiFi. Deuchainn sruthadh - tha faidhle ga chruthachadh agus ga chuir gu eisimpleir NiFi eile. Bidh gluasad dàta a’ tachairt a’ cleachdadh protocol Làrach gu Làrach NiFi.

Tha Làrach NiFi gu Làrach (S2S) na dhòigh tèarainte, furasta a rèiteachadh airson dàta a ghluasad eadar suidheachaidhean NiFi. Mar a tha S2S ag obair, faic sgrìobhainnean agus tha e cudromach gun a bhith a’ dìochuimhneachadh an eisimpleir NiFi a rèiteachadh gus S2S a cheadachadh, faic an seo.

Ann an cùisean far a bheil sinn a’ bruidhinn mu ghluasad dàta a’ cleachdadh S2S, canar teachdaiche ri aon eisimpleir, an dàrna frithealaiche. Bidh an neach-dèiligidh a’ cur dàta, gheibh am frithealaiche. Dà dhòigh air gluasad dàta a rèiteachadh eatorra:

  1. Push. Bho eisimpleir an neach-dèiligidh, thèid dàta a chuir a-steach a’ cleachdadh Buidheann Pròiseas Iomallach (RPG). Air eisimpleir an fhrithealaiche, gheibhear dàta a’ cleachdadh am Port Input
  2. Pull. Bidh an frithealaiche a ’faighinn dàta a’ cleachdadh RPG, bidh an neach-dèiligidh a ’cur a’ cleachdadh port Toraidh.


Tha sruthadh airson sgaoileadh air a stòradh ann an Clàr Apache.

Tha Clàradh Apache NiFi na fho-phròiseact de Apache NiFi a bheir seachad inneal airson stòradh sruthadh agus smachd dreach. Seòrsa de GIT. Gheibhear fiosrachadh mu bhith a’ stàladh, a’ rèiteachadh agus ag obair leis a’ chlàr ann an sgrìobhainnean oifigeil. Tha sruthadh airson stòradh air a chur còmhla ann am buidheann pròiseas agus air a stòradh san fhoirm seo sa chlàr. Tillidh sinn gu seo nas fhaide air adhart san artaigil.

Aig an toiseach, nuair a tha N na àireamh bheag, tha sruth air a lìbhrigeadh agus air ùrachadh le làimh ann an ùine iomchaidh.

Ach mar a bhios N a’ fàs, bidh na duilgheadasan a’ fàs nas lìonmhoire:

  1. bheir e barrachd ùine airson an t-sruth ùrachadh. Feumaidh tu logadh a-steach a h-uile frithealaichean
  2. Tha mearachdan ùrachadh teamplaid a’ nochdadh. An seo dh’ ùraich iad e, ach an seo dhìochuimhnich iad
  3. mearachdan daonna nuair a bhios iad a’ coileanadh àireamh mhòr de dh’ obraichean coltach ris

Tha seo uile gar toirt don fhìrinn gum feum sinn am pròiseas a dhèanamh fèin-ghluasadach. Dh'fheuch mi na dòighean a leanas gus an duilgheadas seo fhuasgladh:

  1. Cleachd MiNiFi an àite NiFi
  2. NiFi CLI
  3. NiPyAPI

A’ cleachdadh MiNiFi

Apache MiNiFy - fo-phròiseact Apache NiFi. Tha MiNiFy na àidseant teann a bhios a’ cleachdadh na h-aon phròiseasan ri NiFi, a’ toirt cothrom dhut na h-aon sruthan a chruthachadh agus a tha ann an NiFi. Tha nàdar aotrom an àidseant air a choileanadh, am measg rudan eile, leis nach eil eadar-aghaidh grafaigeach aig MiNiFy airson rèiteachadh sruthadh. Tha dìth eadar-aghaidh grafaigeach ann am MiNiFy a’ ciallachadh gu bheil e riatanach fuasgladh fhaighinn air an duilgheadas a thaobh lìbhrigeadh sruthadh gu minifi. Leis gu bheil MiNiFy air a chleachdadh gu gnìomhach ann an IOT, tha mòran phàirtean ann agus feumaidh am pròiseas airson sruth a lìbhrigeadh gu na suidheachaidhean minifi deireannach a bhith fèin-ghluasadach. Obair eòlach, ceart?

Cuidichidh fo-phròiseact eile leis an duilgheadas seo fhuasgladh - MiNiFi C2 Server. Thathas an dùil gum bi an toradh seo mar phrìomh àite ann an ailtireachd sgaoileadh rèiteachaidh. Mar a chuireas tu an àrainneachd air dòigh - air a mhìneachadh ann an an artaigil seo Tha fiosrachadh gu leòr air Habré gus an duilgheadas fhuasgladh. Bidh MiNiFi, ann an co-bhonn ris an t-seirbheisiche C2, ag ùrachadh a rèiteachadh gu fèin-ghluasadach. Is e an aon eas-bhuannachd den dòigh-obrach seo gum feum thu teamplaidean a chruthachadh air C2 Server; chan eil gealltanas sìmplidh don chlàr gu leòr.

Tha an roghainn a tha air a mhìneachadh san artaigil gu h-àrd ag obair agus chan eil e doirbh a bhuileachadh, ach cha bu chòir dhuinn dìochuimhneachadh na leanas:

  1. Chan eil a h-uile pròiseasar aig Minifi bho nifi
  2. Tha dreachan pròiseasar Minifi air dheireadh air dreachan pròiseasar NiFi.

Aig àm sgrìobhaidh, is e an dreach as ùire de NiFi 1.9.2. Is e an dreach pròiseasar MiNiFi as ùire 1.7.0. Faodar pròiseasairean a chuir ri MiNiFi, ach air sgàth eadar-dhealachaidhean dreach eadar pròiseasairean NiFi agus MiNiFi, is dòcha nach obraich seo.

NiFi CLI

A ’breithneachadh le tuairisgeul inneal air an làrach-lìn oifigeil, is e inneal a tha seo airson an eadar-obrachadh eadar NiFI agus Clàr NiFi a dhèanamh fèin-ghluasadach ann an raon lìbhrigeadh sruthadh no riaghladh pròiseas. Gus tòiseachadh, feumaidh tu an inneal seo a luchdachadh sìos. bho seo.

Cuir air bhog an goireas

./bin/cli.sh
           _     ___  _
 Apache   (_)  .' ..](_)   ,
 _ .--.   __  _| |_  __    )
[ `.-. | [  |'-| |-'[  |  /  
|  | | |  | |  | |   | | '    '
[___||__][___][___] [___]',  ,'
                           `'
          CLI v1.9.2

Type 'help' to see a list of available commands, use tab to auto-complete.

Gus an urrainn dhuinn an sruth a tha a dhìth a luchdachadh bhon chlàr, feumaidh fios a bhith againn air aithnichearan a’ bhucaid (aithnichear bucaid) agus an t-sruth fhèin (aithnichear sruth). Faodar an dàta seo fhaighinn an dàrna cuid tron ​​​​cli no ann an eadar-aghaidh lìn clàraidh NiFi. Anns an eadar-aghaidh lìn tha e a’ coimhead mar seo:

Automation lìbhrigeadh sruthadh ann an Apache NiFi

A’ cleachdadh an CLI tha seo air a dhèanamh:

#> 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

Tòisichidh sinn a’ toirt a-steach buidheann pròiseas bhon chlàr:

#> 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

Is e puing chudromach gum faodar eisimpleir nifi sam bith a shònrachadh mar an aoigh air am bi sinn a’ sgaoileadh a’ bhuidheann pròiseas.

Buidheann pròiseas air a chur ris le pròiseasairean stad, feumaidh iad tòiseachadh

#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080

Sgoinneil, tha na pròiseasairean air tòiseachadh. Ach, a rèir teirmean na h-obrach, feumaidh sinn suidheachaidhean NiFi airson dàta a chuir gu suidheachaidhean eile. Gabhaidh sinn ris gu bheil thu air an dòigh Push a thaghadh airson dàta a ghluasad chun t-seirbheisiche. Gus gluasad dàta a chuir air dòigh, feumaidh tu gluasad dàta a chomasachadh air a’ Bhuidheann Pròiseas Iomallach (RPG) a bharrachd, a tha mar-thà air a ghabhail a-steach san t-sruth againn.

Automation lìbhrigeadh sruthadh ann an Apache NiFi

Anns na sgrìobhainnean anns an CLI agus tobraichean eile, cha do lorg mi dòigh air gluasad dàta a chomasachadh. Ma tha fios agad mar a nì thu seo, sgrìobh anns na beachdan.

Leis gu bheil bash againn agus gu bheil sinn deiseil airson a dhol chun deireadh, lorgaidh sinn slighe a-mach! Faodaidh tu an API NiFi a chleachdadh gus an duilgheadas seo fhuasgladh. Cleachdaidh sinn an dòigh a leanas, gabh an ID bho na h-eisimpleirean gu h-àrd (anns a’ chùis againn is e 7f522a13-016e-1000-e504-d5b15587f2f3). Tuairisgeul air dòighean API NiFi an seo.

Automation lìbhrigeadh sruthadh ann an Apache NiFi
Anns a’ bhodhaig feumaidh tu a dhol seachad air JSON, mar seo:

{
    "revision": {
	    "clientId": "value",
	    "version": 0,
	    "lastModifier": "value"
	},
    "state": "value",
    "disconnectedNodeAcknowledged": true
}

Paramadairean a dh'fheumar a lìonadh a-steach airson a bhith ag obair:
stàite - inbhe gluasad dàta. Ri fhaighinn: TRANSMITTING gus gluasad dàta a chomasachadh, STOPED gus a chuir à comas
dreach - dreach pròiseasar

bidh an dreach bunaiteach gu 0 nuair a thèid a chruthachadh, ach gheibhear na paramadairean sin leis an dòigh

Automation lìbhrigeadh sruthadh ann an Apache NiFi

Do luchd-leantainn sgriobtaichean bash, is dòcha gu bheil an dòigh seo a ’coimhead freagarrach, ach tha e beagan duilich dhomh - chan e sgriobtaichean bash as fheàrr leam. Tha an ath dhòigh-obrach nas inntinniche agus nas goireasaiche nam bheachd-sa.

NiPyAPI

Tha NiPyAPI na leabharlann Python airson eadar-obrachadh le suidheachaidhean NiFi. Duilleag sgrìobhainnean tha am fiosrachadh riatanach airson a bhith ag obair leis an leabharlann. Tha toiseach tòiseachaidh air a mhìneachadh ann an pròiseict air github.

Tha an sgriobt againn airson an rèiteachadh a sgaoileadh na phrògram ann am Python. Gluaisidh sinn air adhart gu còdadh.
Stèidhich sinn configs airson tuilleadh obrach. Feumaidh sinn na paramadairean a leanas:

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, которое подтягиваем

An uairsin cuiridh mi a-steach ainmean dhòighean an leabharlainn seo, a tha air am mìneachadh an seo.

Ceangail an clàradh ris an eisimpleir nifi a 'cleachdadh

nipyapi.versioning.create_registry_client

Aig a 'cheum seo, faodaidh tu cuideachd seic a chuir ris gu bheil an clàr air a chur ris an eisimpleir mu thràth; airson seo faodaidh tu am modh a chleachdadh

nipyapi.versioning.list_registry_clients

Lorg sinn am bucaid airson tuilleadh rannsachaidh airson sruthadh sa bhasgaid

nipyapi.versioning.get_registry_bucket

A 'cleachdadh a' bhucaid a chaidh a lorg, bidh sinn a 'coimhead airson sruth

nipyapi.versioning.get_flow_in_bucket

An ath rud, tha e cudromach tuigsinn a bheil am buidheann pròiseas seo air a chur ris mu thràth. Tha am buidheann Pròiseas air a chuir a rèir co-chomharran agus faodaidh suidheachadh èirigh nuair a thèid dàrna pàirt a chuir thairis air aon. Rinn mi sgrùdadh, faodaidh seo tachairt :) Gus a h-uile buidheann pròiseas a bharrachd fhaighinn bidh sinn a’ cleachdadh an dòigh

nipyapi.canvas.list_all_process_groups

Faodaidh sinn tuilleadh rannsachaidh a dhèanamh, mar eisimpleir, le ainm.

Cha toir mi cunntas air a’ phròiseas airson an teamplaid ùrachadh, cha bhith mi ag ràdh ach ma thèid pròiseasairean a chuir ris an dreach ùr den teamplaid, chan eil duilgheadas sam bith ann le làthaireachd teachdaireachdan anns na ciudha. Ach ma thèid pròiseasairean a thoirt air falbh, faodaidh duilgheadasan èirigh (cha leig nifi leat pròiseasar a thoirt air falbh ma tha ciudha teachdaireachd air cruinneachadh air a bheulaibh). Ma tha ùidh agad mar a dh’ fhuasgail mi an duilgheadas seo, nach sgrìobh thu thugam agus bruidhnidh sinn mun chùis seo. Caraidean aig deireadh an artaigil. Gluaisidh sinn air adhart chun cheum gus buidheann pròiseas a chur ris.

Nuair a bha mi a ’deasbad an sgriobt, thàinig mi tarsainn air rud sònraichte nach eil an dreach as ùire de shruth an-còmhnaidh air a tharraing suas, agus mar sin tha mi a’ moladh sùil a thoirt air an dreach seo an-toiseach:

nipyapi.versioning.get_latest_flow_ver

Cleachd buidheann pròiseas:

nipyapi.versioning.deploy_flow_version

Bidh sinn a’ tòiseachadh na pròiseasairean:

nipyapi.canvas.schedule_process_group

Anns a’ bhloc mu CLI chaidh a sgrìobhadh nach eil gluasad dàta air a chomasachadh gu fèin-ghluasadach sa bhuidheann phròiseasan iomallach? Nuair a chuir mi an sgriobt an gnìomh, thachair mi ris an duilgheadas seo cuideachd. Aig an àm sin, cha robh e comasach dhomh gluasad dàta a thòiseachadh leis an API agus chuir mi romhpa sgrìobhadh gu leasaiche leabharlann NiPyAPI agus comhairle / cuideachadh iarraidh. Fhreagair an leasaiche mi, bheachdaich sinn air an duilgheadas agus sgrìobh e gu robh feum aige air ùine airson “rudeigin a sgrùdadh”. Agus an uairsin, latha no dhà às deidh sin, thig litir a-steach anns a bheil gnìomh sgrìobhte ann am Python a dh’ fhuasglas mo dhuilgheadas tòiseachaidh !!! Aig an àm sin, bha an dreach NiPyAPI 0.13.3 agus, gu dearbh, cha robh dad mar sin ann. Ach ann an dreach 0.14.0, a chaidh a leigeil a-mach o chionn ghoirid, bha an gnìomh seo mar-thà air a ghabhail a-steach don leabharlann. Coinnich,

nipyapi.canvas.set_remote_process_group_transmission

Mar sin, a’ cleachdadh leabharlann NiPyAPI, cheangail sinn an clàr, chuir sinn a-steach sruth, agus thòisich sinn eadhon air pròiseasairean agus gluasad dàta. An uairsin faodaidh tu an còd a chìreadh, cuir a h-uile seòrsa seic, logadh a-steach, agus sin agad. Ach ’s e sgeulachd gu tur eadar-dhealaichte a tha sin.

De na roghainnean fèin-ghluasaid air an do bheachdaich mi, bha e coltach riumsa am fear mu dheireadh as èifeachdaiche. An toiseach, is e còd python a tha seo fhathast, anns an urrainn dhut còd prògram cuideachaidh a chuir a-steach agus brath a ghabhail air na buannachdan uile bhon chànan prògramaidh. San dàrna h-àite, tha pròiseact NiPyAPI gu gnìomhach a’ leasachadh agus ma tha duilgheadasan ann faodaidh tu sgrìobhadh chun leasaiche. San treas àite, tha NiPyAPI fhathast na inneal nas sùbailte airson eadar-obrachadh le NiFi ann a bhith a’ fuasgladh dhuilgheadasan iom-fhillte. Mar eisimpleir, ann a bhith a’ dearbhadh a bheil na ciudhaichean teachdaireachd a-nis falamh san t-sruth agus an gabh am buidheann pròiseas ùrachadh.

Sin e. Thug mi cunntas air dòighean-obrach 3 airson lìbhrigeadh sruth fèin-ghluasadach ann an NiFi, duilgheadasan a dh’ fhaodadh a bhith aig leasaiche, agus thug mi seachad còd obrach airson lìbhrigeadh fèin-ghluasadach. Ma tha an aon ùidh agad sa chuspair seo ’s a tha mise - sgrìobh!

Source: www.habr.com

Cuir beachd ann