Phallo Delivery Automation ho Apache NiFi

Hello mong le e mong!

Phallo Delivery Automation ho Apache NiFi

Mosebetsi ke o latelang - ho na le phallo e bontšitsoeng setšoantšong se ka holimo, e lokelang ho fetisetsoa ho li-server tsa N ka Apache NiFi. Teko ea phallo - faele e ntse e hlahisoa mme e romelloa ketsahalong e 'ngoe ea NiFi. Ho fetisoa ha data ho etsahala ho sebelisa protocol ea NiFi ho Site.

NiFi Site to Site (S2S) ke mokhoa o sireletsehileng, o ka khonehang haholo oa ho fetisetsa data lipakeng tsa liketsahalo tsa NiFi. Sheba kamoo S2S e sebetsang kateng litokomane mme ho bohlokoa ho hopola ho theha mohlala oa hau oa NiFi ho lumella S2S ho bona mona.

Ha ho tluoa tabeng ea ho fetisetsa data ho sebelisa S2S, mohlala o mong o bitsoa moreki, oa bobeli ke seva. Moreki o romela data, seva e e amohela. Mekhoa e 'meli ea ho theha phetiso ea data lipakeng tsa bona:

  1. Sututsa. Lintlha li romelloa ho tsoa ho moreki ho sebelisoa Remote Process Group (RPG). Mohlala oa seva, data e amoheloa ho sebelisoa Port Input
  2. Hula. Seva e amohela data e sebelisa RPG, moreki o e romella a sebelisa Output port.


Phallo ea ho roala e bolokiloe ho Registry ea Apache.

Apache NiFi Registry ke subproject ea Apache NiFi e fanang ka polokelo ea phallo le sesebelisoa sa phetolelo. Mofuta oa GIT. Lintlha tse mabapi le ho kenya, ho hlophisa le ho sebetsa le registry li ka fumanoa ho litokomane tsa molao. Phallo bakeng sa polokelo e kopantsoe sehlopheng sa ts'ebetso mme e bolokoe ho ngolisoang ka foromo ena. Re tla khutlela ho sena hamorao sehloohong.

Qalong, ha N e le palo e nyenyane, phallo e fanoa le ho ntlafatsoa ka letsoho ka nako e utloahalang.

Empa ha N e ntse e hola, ho na le mathata a mangata:

  1. ho nka nako e eketsehileng ho ntlafatsa phallo. U hloka ho ea ho li-server tsohle
  2. ho na le liphoso tsa ho ntlafatsa litempele. Mona ba nchafalitse, empa mona ba lebetse
  3. phoso ya motho ha a etsa palo e kgolo ya diketso tse tshoanang

Sena sohle se re tlisa ho 'nete ea hore hoa hlokahala ho iketsetsa ts'ebetso. Ke lekile litsela tse latelang ho rarolla bothata bona:

  1. Sebelisa MiNiFi sebakeng sa NiFi
  2. Ke Fi CLI
  3. NiPyAPI

Ho sebelisa MiNiFi

ApacheMiNify ke karoloana ea Apache NiFi. MiNiFy ke sesebelisoa sa komporo se sebelisang li-processor tse tšoanang le tsa NiFi, se u lumellang hore u thehe phallo e tšoanang le ea NiFi. Bobebe ba moemeli bo finyelloa, har'a lintho tse ling, ka lebaka la hore MiNiFy ha e na sebopeho sa graphical bakeng sa tlhophiso ea phallo. Ho haella ha MiNiFy ea sebopeho sa graphical ho bolela hore hoa hlokahala ho rarolla bothata ba phallo ea phallo ho minifi. Kaha MiNiFy e sebelisoa ka mafolofolo ho IOT, ho na le likarolo tse ngata 'me mokhoa oa ho fana ka phallo ho maemo a ho qetela a minifi o tlameha ho iketsetsa. Mosebetsi o tloaelehileng, na?

Morero o mong, MiNiFi C2 Server, o tla thusa ho rarolla bothata bona. Sehlahisoa sena se reretsoe ho ba ntlha ea bohareng mohahong oa ho romela. Mokhoa oa ho hlophisa tikoloho - e hlalositsoeng ho sehlooho sena ho Habré mme tlhahisoleseling e lekane ho rarolla bothata. MiNiFi ka kopanelo le seva sa C2 ka bo eona e nchafatsa tlhophiso ea eona. Phello e le 'ngoe feela ea mokhoa ona ke hore u tlameha ho etsa litempele ho C2 Server, boitlamo bo bonolo ho registry ha boa lekana.

Khetho e hlalositsoeng sehloohong se ka holimo e sebetsa ebile ha e thata ho e sebelisa, empa ha rea ​​​​lokela ho lebala tse latelang:

  1. minifi ha e na li-processor tsohle tse tsoang ho nifi
  2. Liphetolelo tsa CPU ho Minifi li salletse ka morao ho mefuta ea CPU ho NiFi.

Nakong ea ho ngola, mofuta oa morao-rao oa NiFi ke 1.9.2. Phetolelo ea processor ea mofuta oa morao-rao oa MiNiFi ke 1.7.0. Li-processor li ka eketsoa ho MiNiFi, empa ka lebaka la ho se lumellane ha mofuta pakeng tsa li-processor tsa NiFi le MiNiFi, sena se kanna sa se sebetse.

Ke Fi CLI

Ho ahlola ka tlhaloso sesebelisoa ho websaeteng ea molao, sena ke sesebelisoa sa ho iketsetsa tšebelisano pakeng tsa NiFI le NiFi Registry tšimong ea phallo ea phallo kapa tsamaiso ea ts'ebetso. Khoasolla sesebelisoa sena ho qala. ho tloha mona.

Kenya lisebelisoa

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

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

E le hore re khone ho kenya phallo e hlokahalang ho tsoa ho ngoliso, re hloka ho tseba li-identifiers tsa baskete (identifier ea bakete) le phallo ka boeona (sekhetho sa phallo). Lintlha tsena li ka fumanoa ka cli kapa ka NiFi registry web interface. Sehokelo sa webo se shebahala tjena:

Phallo Delivery Automation ho Apache NiFi

U sebelisa CLI, u etsa sena:

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

Matha sehlopha sa ts'ebetso ea ho tlisa ho tsoa ho registry:

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

Taba ea bohlokoa ke hore mohlala ofe kapa ofe oa nifi o ka hlalosoa e le moamoheli eo re tsamaisang sehlopha sa tšebetso ho eena.

Sehlopha sa tšebetso se kenyellelitsoeng ka li-processor tse emisitsoeng, li hloka ho qalisoa

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

E kholo, li-processor li se li qalile. Leha ho le joalo, ho latela maemo a bothata, re hloka maemo a NiFi ho romella data maemong a mang. Ha re nke hore mokhoa oa Push o khethiloe ho fetisetsa data ho seva. Bakeng sa ho hlophisa phetisetso ea data, hoa hlokahala ho nolofalletsa phetiso ea data (Enable transmitting) ho Remote Process Group (RPG) e kenyellelitsoeng, e seng e kenyellelitsoe phallong ea rona.

Phallo Delivery Automation ho Apache NiFi

Litokomaneng tsa CLI le mehloli e meng, ha kea fumana mokhoa oa ho nolofalletsa phetisetso ea data. Haeba u tseba ho etsa sena, ka kopo ngola litlhalosong.

Kaha re na le bash mme re ikemiselitse ho ea qetellong, re tla fumana tsela ea ho tsoa! U ka sebelisa NiFi API ho rarolla bothata bona. A re sebeliseng mokhoa o latelang, re nka ID ho tloha mehlala e ka holimo (tabeng ea rona ke 7f522a13-016e-1000-e504-d5b15587f2f3). Tlhaloso ea Mekhoa ea NiFi API mona.

Phallo Delivery Automation ho Apache NiFi
'Meleng, o hloka ho fetisa JSON, ea foromo e latelang:

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

Li-parameter tse lokelang ho tlatsoa ho "sebetsa":
boemo — boemo ba phetiso ya data. E teng TRANSMITTING ho nolofalletsa phetiso ea data, STOPED ho tima
tlhahiso - mofuta oa processor

mofuta o tla lula o le 0 ha o bōptjoa, empa mekhahlelo ena e ka fumanoa ho sebelisoa mokhoa

Phallo Delivery Automation ho Apache NiFi

Bakeng sa barati ba bash scripts, mokhoa ona o ka 'na oa bonahala o loketse, empa ho thata ho' na - bash scripts ha se ntho eo ke e ratang haholo. Tsela e latelang e thahasellisa ebile e loketse haholoanyane ka maikutlo a ka.

NiPyAPI

NiPyAPI ke laeborari ea Python ea ho sebelisana le maemo a NiFi. Leqephe la litokomane e na le tlhahisoleseding e hlokahalang bakeng sa ho sebetsa le laeborari. Ho qala ka potlako ho hlalosoa ho morero ho github.

Sengoloa sa rona sa ho tsamaisa tlhophiso ke lenaneo la Python. Ha re feteleng pele ho khouto.
Beha li-configs bakeng sa mosebetsi o eketsehileng. Re tla hloka paramente tse latelang:

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

Ho feta moo ke tla kenya mabitso a mekhoa ea laebrari ena, e hlalositsoeng mona.

Re hokahanya registry le mohlala oa nifi re sebelisa

nipyapi.versioning.create_registry_client

Mothating ona, o ka eketsa cheke hore registry e se e kentsoe mohlala, hobane o ka sebelisa mokhoa ona.

nipyapi.versioning.list_registry_clients

Re fumana nkho ho tsoela pele ho batla ho phalla ka basketeng

nipyapi.versioning.get_registry_bucket

Ho ea ka nkho e fumanoeng, re batla ho phalla

nipyapi.versioning.get_flow_in_bucket

Ka mor'a moo, ke habohlokoa ho utloisisa hore na sehlopha sena sa ts'ebetso se se se ekelitsoe. Sehlopha sa ts'ebetso se behoa ke li-coordinate 'me boemo bo ka' na ba hlaha ha ea bobeli e behoa holim'a e 'ngoe. Ke hlahlobile, e ka ba 🙂 Ho fumana sehlopha sohle sa ts'ebetso, sebelisa mokhoa

nipyapi.canvas.list_all_process_groups

'me joale re ka batla, mohlala, ka mabitso.

Nke ke ka hlalosa mokhoa oa ho ntlafatsa template, ke tla re feela haeba li-processor li kenyelletsoa phetolelong e ncha ea template, joale ha ho na mathata ka boteng ba melaetsa meleng. Empa haeba li-processor li tlosoa, mathata a ka 'na a hlaha (nifi ha e lumelle ho tlosoa ha processor haeba molaetsa oa molaetsa o bokelletse ka pel'a eona). Haeba u thahasella hore na ke rarolle bothata bona joang - ngolla, ka kopo, re tla tšohla ntlha ena. Mabitso qetellong ea sengoloa. Ha re feteleng mohatong oa ho eketsa sehlopha sa tšebetso.

Ha ke lokisa sengoloa, ke ile ka kopana le tšobotsi eo mofuta oa morao-rao oa phallo o sa bueng kamehla, kahoo ke khothaletsa hore o hlakise mofuta ona pele:

nipyapi.versioning.get_latest_flow_ver

Hlahisa sehlopha sa tšebetso:

nipyapi.versioning.deploy_flow_version

Re qala li-processor:

nipyapi.canvas.schedule_process_group

Sebokeng se mabapi le CLI, ho ne ho ngotsoe hore phetisetso ea data ha e khonehe ka bo eona sehlopheng sa ts'ebetso e hole? Ha ke kenya ts'ebetsong script, le 'na ke ile ka kopana le bothata bona. Ka nako eo, ke ne ke sitoa ho qala ho fetisetsa data ho sebelisa API mme ke ile ka etsa qeto ea ho ngolla moqapi oa laebrari ea NiPyAPI le ho kopa keletso / thuso. Moqapi o ile a nkaraba, ra buisana ka bothata mme a ngola hore o hloka nako ea ho "hlahloba ho hong". 'Me joale, matsatsi a' maloa hamorao, lengolo-tsoibila le fihla moo ho ngotsoeng ts'ebetso ea Python e rarollang bothata ba ka ba ho qala !!! Ka nako eo, phetolelo ea NiPyAPI e ne e le 0.13.3 'me, ha e le hantle, ho ne ho se letho le joalo ho eona. Empa phetolelong ea 0.14.0, e ileng ea lokolloa haufinyane tjena, mosebetsi ona o se o kenyelelitsoe laebraring. Kopana

nipyapi.canvas.set_remote_process_group_transmission

Kahoo, ka thuso ea laebrari ea NiPyAPI, re ile ra hokahanya ngoliso, ra phutha phallo, ra ba ra qala li-processor le phetisetso ea data. Ebe u ka kopanya khoutu, eketsa mefuta eohle ea licheke, ho rema lifate, 'me ke phetho. Empa eo ke pale e fapaneng ka ho felletseng.

Har'a likhetho tsa li-automation tseo ke li nahanang, tsa morao-rao li ne li bonahala ho 'na li sebetsa ka ho fetisisa. Ntlha ea pele, ena e ntse e le khoutu ea python, eo ho eona u ka kenyang khoutu ea lenaneo le thusang 'me u natefeloe ke melemo eohle ea puo ea lenaneo. Taba ea bobeli, morero oa NiPyAPI o ntse o tsoela pele ka mafolofolo mme haeba ho na le mathata o ka ngolla moqapi. Taba ea boraro, NiPyAPI e ntse e le sesebelisoa se bonolo haholoanyane sa ho sebelisana le NiFi ho rarolla mathata a rarahaneng. Ka mohlala, ho etsa qeto ea hore na melaetsa ea melaetsa ha e na letho hona joale le hore na hoa khoneha ho ntlafatsa sehlopha sa ts'ebetso.

Ke phetho. Ke hlalositse mekhoa ea 3 ea ho tsamaisa phallo ea phallo ho NiFi, litsietsi tseo mohlahlami a ka kopanang le tsona mme a fana ka khoutu e sebetsang bakeng sa ho tsamaisa thepa ka bo eona. Haeba u thahasella sehlooho sena joalo ka 'na - ngola!

Source: www.habr.com

Eketsa ka tlhaloso