ʻO ka holo ʻana o ka hoʻouna ʻana ma Apache NiFi

Hello a pau!

ʻO ka holo ʻana o ka hoʻouna ʻana ma Apache NiFi

Penei ka hana - aia kahi kahe i hōʻike ʻia ma ke kiʻi ma luna, pono e ʻōwili ʻia i nā kikowaena N me Apache NiFi. Hoʻāʻo Flow - ke hana ʻia nei kahi faila a hoʻouna ʻia i kahi kumu NiFi ʻē aʻe. Lawe ʻia ka hoʻoili ʻikepili me ka hoʻohana ʻana i ka NiFi Site i ka protocol Site.

ʻO NiFi Site to Site (S2S) kahi ala palekana, hiki ke hoʻololi i ka ʻikepili ma waena o nā manawa NiFi. E ʻike i ka hana ʻana o S2S palapala a he mea nui e hoʻomanaʻo e hoʻonohonoho i kāu kumu NiFi e ʻae iā S2S e ʻike maanei.

I ka wā e pili ana i ka hoʻoili ʻikepili me ka hoʻohana ʻana iā S2S, ua kapa ʻia kahi mea kūʻai aku, ʻo ka lua he kikowaena. Hoʻouna ka mea kūʻai i ka ʻikepili, loaʻa i ke kikowaena. ʻElua ala e hoʻonohonoho ai i ka hoʻoili ʻikepili ma waena o lākou:

  1. pahu aku ai i. Hoʻouna ʻia ka ʻikepili mai ka mea kūʻai aku me ka hoʻohana ʻana i kahi Pūʻulu Kaʻina Hana mamao (RPG). Ma ke kikowaena kikowaena, loaʻa ka ʻikepili me ka hoʻohana ʻana i ka Input Port
  2. huki. Loaʻa i ka server ka ʻikepili me ka RPG, hoʻouna ka mea kūʻai aku me ka hoʻohana ʻana i ke awa Output.


Mālama ʻia ke kahe no ka holo ʻana ma ka Registry Apache.

ʻO Apache NiFi Registry kahi papahana o Apache NiFi e hāʻawi ana i kahi mālama kahe a me nā mea hana hoʻololi. ʻO kahi ʻano GIT. Hiki ke loaʻa ka ʻike e pili ana i ke kau ʻana, ka hoʻonohonoho ʻana a me ka hana ʻana me ke kākau inoa palapala kūhelu. Hoʻohui ʻia ke kahe no ka mālama ʻana i kahi hui kaʻina hana a mālama ʻia i loko o ke kākau inoa ma kēia palapala. E hoʻi mākou i kēia ma hope o ka ʻatikala.

I ka hoʻomaka, inā he helu liʻiliʻi ʻo N, hāʻawi ʻia ke kahe a hoʻonui ʻia e ka lima i ka manawa kūpono.

Akā i ka ulu ʻana o N, nui aʻe nā pilikia:

  1. ʻoi aku ka lōʻihi o ka manawa e hōʻano hou i ke kahe. Pono ʻoe e hele i nā kikowaena a pau
  2. aia nā hewa i ka hoʻonui ʻana i nā mamana. Ma ʻaneʻi lākou i hōʻano hou, akā eia lākou poina
  3. hewa kanaka ke hana i ka nui o na hana like

Ke lawe nei kēia mau mea iā mākou i ka ʻoiaʻiʻo he pono e hoʻomaʻemaʻe i ke kaʻina hana. Ua hoʻāʻo wau i kēia mau ala e hoʻoponopono ai i kēia pilikia:

  1. E hoʻohana i ka MiNiFi ma kahi o NiFi
  2. NiFi CLI
  3. NiPyAPI

Ke hoʻohana nei i ka MiNiFi

ApacheMiNify ʻO ia kahi papahana o Apache NiFi. ʻO MiNiFy kahi mea hana paʻa e hoʻohana ana i nā kaʻina hana like me NiFi, e ʻae iā ʻoe e hana i ke kahe like me NiFi. Loaʻa ka māmā o ka mea hana, ma waena o nā mea ʻē aʻe, ma muli o ka loaʻa ʻole o ka MiNiFy i kahi kiʻi kiʻi no ka hoʻonohonoho kahe. ʻO ka nele o MiNiFy i kahi kiʻi kiʻi ʻo ia ka mea pono e hoʻoponopono i ka pilikia o ka hāʻawi ʻana i ke kahe i minifi. No ka mea, hoʻohana ikaika ʻia ʻo MiNiFy ma IOT, nui nā ʻāpana a me ke kaʻina o ka hāʻawi ʻana i ke kahe i nā manawa liʻiliʻi hope loa e pono e hoʻohana ʻia. He hana kamaʻāina, ʻeā?

ʻO kekahi subproject, MiNiFi C2 Server, e kōkua i ka hoʻoponopono ʻana i kēia pilikia. Manaʻo ʻia kēia huahana e lilo i ke kikowaena o ka hoʻolālā hoʻolaha. Pehea e hoʻonohonoho ai i ke kaiapuni - wehewehe ʻia ma kēiaʻatikala ma Habré a ua lawa ka ʻike e hoʻoponopono i ka pilikia. ʻO MiNiFi e hui pū me ka kikowaena C2 e hoʻololi koke i kāna hoʻonohonoho. ʻO ka drawback wale nō o kēia ala, pono ʻoe e hana i nā templates ma ka C2 Server, ʻaʻole lawa ka hana maʻalahi i ke kākau inoa.

Ke hana nei ke koho i wehewehe ʻia ma ka ʻatikala ma luna a ʻaʻole paʻakikī ke hoʻokō, akā ʻaʻole pono mākou e poina i kēia:

  1. ʻAʻole loaʻa i ka minifi nā kaʻina hana a pau mai nifi
  2. Aia nā mana CPU ma Minifi ma hope o nā mana CPU ma NiFi.

I ka manawa kākau, ʻo ka mana hou o NiFi ʻo 1.9.2. ʻO ka mana kaʻina hana o ka mana MiNiFi hou loa he 1.7.0. Hiki ke hoʻohui ʻia nā kaʻina hana i MiNiFi, akā ma muli o nā ʻano like ʻole ma waena o nā kaʻina hana NiFi a me MiNiFi, ʻaʻole pono kēia.

NiFi CLI

E hoahewa ana e wehewehe mea paahana ma ka punaewele official, he mea hana keia no ka hooponopono ana i ka pilina ma waena o NiFI a me NiFi Registry ma ke kahua o ka lawe kahe ana a i ole ka hooponopono ana. Hoʻoiho i kēia mea hana e hoʻomaka ai. mai kēia wahi.

Holo i ka pono

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

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

I mea e hiki ai iā mākou ke hoʻouka i ka kahe e pono ai mai ka papa inoa, pono mākou e ʻike i nā mea hōʻike o ka hīnaʻi (ka ʻike ʻike) ​​a me ke kahe ponoʻī (ka ʻike kahe). Hiki ke kiʻi ʻia kēia ʻikepili ma o ka cli a i ʻole ma ke kikowaena pūnaewele hoʻopaʻa inoa NiFi. ʻO ka ʻaoʻao pūnaewele e like me kēia:

ʻO ka holo ʻana o ka hoʻouna ʻana ma Apache NiFi

Ke hoʻohana nei i ka CLI, hana ʻoe i kēia:

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

Holo i ka hui kaʻina hana hoʻokomo mai ka papa inoa:

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

ʻO kahi mea koʻikoʻi e hiki ke kuhikuhi ʻia i kēlā me kēia nifi ma ke ʻano he mea hoʻokipa a mākou e ʻōwili ai i ka hui kaʻina hana.

Hoʻohui ʻia ka hui kaʻina me nā kaʻina hana paʻa, pono lākou e hoʻomaka

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

Nui, ua hoʻomaka nā mea hana. Eia naʻe, e like me nā kūlana o ka pilikia, pono mākou i nā manawa NiFi e hoʻouna i ka ʻikepili i nā manawa ʻē aʻe. E manaʻo mākou ua koho ʻia ke ʻano Push e hoʻoili i ka ʻikepili i ke kikowaena. I mea e hoʻonohonoho ai i ka hoʻoili ʻana i ka ʻikepili, pono ia e hiki ke hoʻololi i ka ʻikepili (Enable transmitting) ma ka Remote Process Group (RPG) i hoʻohui ʻia, i hoʻokomo ʻia i kā mākou kahe.

ʻO ka holo ʻana o ka hoʻouna ʻana ma Apache NiFi

Ma ka palapala i loko o ka CLI a me nā kumu ʻē aʻe, ʻaʻole i loaʻa iaʻu kahi ala e hiki ai i ka hoʻoili ʻikepili. Inā ʻike ʻoe pehea e hana ai i kēia, e ʻoluʻolu e kākau i nā manaʻo.

No ka mea he bash kā mākou a ua mākaukau mākou e hele i ka hopena, e ʻike mākou i kahi ala i waho! Hiki iā ʻoe ke hoʻohana i ka NiFi API e hoʻoponopono i kēia pilikia. E hoʻohana i kēia ʻano hana, lawe mākou i ka ID mai nā hiʻohiʻona ma luna (i kā mākou hihia ʻo 7f522a13-016e-1000-e504-d5b15587f2f3). ʻO ka wehewehe ʻana i nā ʻano NiFi API maanei.

ʻO ka holo ʻana o ka hoʻouna ʻana ma Apache NiFi
I ke kino, pono ʻoe e hele i JSON, o kēia ʻano:

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

ʻO nā ʻāpana pono e hoʻopiha ʻia i mea e "hana":
moku'āina — kūlana hoʻoili ʻikepili. Loaʻa ka TRANSMITTING e hiki ai i ka hoʻoili ʻikepili, STOPPED e hoʻopau
mana - mana hana

e paʻamau ka version i ka 0 i ka wā i hana ʻia ai, akā hiki ke loaʻa kēia mau ʻāpana me ka hoʻohana ʻana i ke ʻano

ʻO ka holo ʻana o ka hoʻouna ʻana ma Apache NiFi

No ka poʻe makemake i ka bash scripts, kūpono paha kēia ʻano hana, akā paʻakikī iaʻu - ʻaʻole ʻo kaʻu mea punahele ka bash scripts. ʻO ke ala aʻe he mea hoihoi a maʻalahi hoʻi i koʻu manaʻo.

NiPyAPI

ʻO NiPyAPI kahi waihona Python no ka launa pū ʻana me nā manawa NiFi. ʻAoʻao palapala aia ka ʻike e pono ai e hana me ka waihona. Ua wehewehe ʻia ka hoʻomaka wikiwiki ma ka hana ma github.

ʻO kā mākou palapala no ka ʻōwili ʻana i ka hoʻonohonoho he polokalamu Python. E neʻe kākou i ka coding.
Hoʻonohonoho i nā configs no ka hana hou aku. Pono mākou i kēia mau ʻāpana:

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

E hoʻokomo hou wau i nā inoa o nā ʻano o kēia waihona, i wehewehe ʻia maanei.

Hoʻohui mākou i ke kākau inoa i ka hoʻohana ʻana i ka nifi

nipyapi.versioning.create_registry_client

Ma kēia ʻanuʻu, hiki iā ʻoe ke hoʻohui i kahi hōʻoia ua hoʻohui ʻia ke kākau inoa i ka laʻana, no kēia hiki iā ʻoe ke hoʻohana i ke ʻano.

nipyapi.versioning.list_registry_clients

Loaʻa iā mākou ka bākeke e ʻimi hou aku i ke kahe i loko o ka hīnaʻi

nipyapi.versioning.get_registry_bucket

Wahi a ka bākeke i loaʻa, ke ʻimi nei mākou i ke kahe

nipyapi.versioning.get_flow_in_bucket

A laila, pono e hoʻomaopopo inā ua hoʻohui ʻia kēia hui kaʻina. Hoʻonoho ʻia ka pūʻulu kaʻina hana e nā hoʻonohonoho a hiki ke kū mai kahi kūlana ke kau ʻia ka lua ma luna o kekahi. Ua nānā au, hiki iā 🙂 No ka loaʻa ʻana o ka hui kaʻina hana i hoʻohui ʻia, e hoʻohana i ke ʻano

nipyapi.canvas.list_all_process_groups

a laila hiki iā mākou ke ʻimi, no ka laʻana, ma ka inoa.

ʻAʻole wau e wehewehe i ke kaʻina hana o ka hoʻonui ʻana i ka template, e ʻōlelo wale wau inā hoʻohui ʻia nā mea hana i ka mana hou o ka template, a laila ʻaʻohe pilikia me ka hele ʻana o nā memo i nā queues. Akā inā hoʻoneʻe ʻia nā kaʻina hana, a laila hiki ke ala mai nā pilikia (ʻaʻole ʻae ʻo nifi i ka wehe ʻana o ka mea hana inā ua hōʻuluʻulu ʻia kahi laina leka i mua o ia). Inā makemake ʻoe i kaʻu hoʻoponopono ʻana i kēia pilikia - e kākau mai iaʻu, e ʻoluʻolu, e kūkākūkā mākou i kēia wahi. Nā pilina ma ka hope o ka ʻatikala. E neʻe kākou i ka ʻanuʻu o ka hoʻohui ʻana i kahi hui kaʻina hana.

I ka hoʻopau ʻana i ka palapala, ʻike wau i kahi hiʻohiʻona ʻaʻole huki mau ʻia ka mana hou o ka kahe, no laila ke paipai nei au iā ʻoe e wehewehe mua i kēia mana:

nipyapi.versioning.get_latest_flow_ver

Hoʻopili i ka hui kaʻina hana:

nipyapi.versioning.deploy_flow_version

Hoʻomaka mākou i nā mea hana:

nipyapi.canvas.schedule_process_group

Ma ka poloka e pili ana iā CLI, ua kākau ʻia ʻaʻole hiki ke hoʻololi ʻia ka hoʻoili ʻikepili i ka hui kaʻina mamao? I ka hoʻokō ʻana i ka palapala, ua loaʻa iaʻu kēia pilikia. I kēlā manawa, ʻaʻole hiki iaʻu ke hoʻomaka i ka hoʻololi ʻana i ka ʻikepili me ka hoʻohana ʻana i ka API a ua hoʻoholo wau e kākau i ka mea hoʻomohala o ka waihona NiPyAPI a noi i ka ʻōlelo aʻoaʻo / kōkua. Ua pane mai ka mea hoʻomohala iaʻu, ua kūkākūkā mākou i ka pilikia a kākau ʻo ia e pono ana ka manawa e "nānā i kekahi mea". A i kēia manawa, he mau lā ma hope mai, hiki mai kahi leka uila i kākau ʻia kahi hana Python e hoʻonā i kaʻu pilikia hoʻomaka !!! I kēlā manawa, ʻo 0.13.3 ka mana NiPyAPI a, ʻoiaʻiʻo, ʻaʻohe mea o ia ʻano. Akā i ka mana 0.14.0, i hoʻokuʻu ʻia i kēia manawa, ua hoʻokomo ʻia kēia hana i loko o ka waihona. Hui

nipyapi.canvas.set_remote_process_group_transmission

No laila, me ke kōkua o ka hale waihona puke NiPyAPI, ua hoʻopili mākou i ke kākau inoa, ʻōwili i ke kahe, a hoʻomaka pū i nā mea hana a me ka hoʻoili ʻikepili. A laila hiki iā ʻoe ke hoʻohui i ke code, hoʻohui i nā ʻano loiloi āpau, logging, a ʻo ia nō. Akā, he moʻolelo ʻokoʻa loa kēlā.

ʻO nā koho automation aʻu i noʻonoʻo ai, ʻoi aku ka maikaʻi o ka hope. ʻO ka mea mua, ʻo ia nō ka code python, kahi e hiki ai iā ʻoe ke hoʻokomo i ke code program kōkua a hoʻohana pono i ka ʻōlelo papahana. ʻO ka lua, ke ulu ikaika nei ka papahana NiPyAPI a inā pilikia nā pilikia hiki iā ʻoe ke kākau i ka mea hoʻomohala. ʻO ke kolu, ʻo NiPyAPI kahi mea hana maʻalahi no ka launa pū ʻana me NiFi i ka hoʻoponopono ʻana i nā pilikia paʻakikī. No ka laʻana, i ka hoʻoholo ʻana inā ʻaʻohe hakahaka nā queues memo i ke kahe a inā hiki ke hoʻonui i ka hui kaʻina.

ʻo ia wale nō. Ua wehewehe au i 3 mau ala e hoʻokaʻawale ai i ka hāʻawi ʻana i ka kahe ma NiFi, nā pitfalls e hālāwai ai ka mea hoʻomohala a hāʻawi i kahi code hana no ka lawe ʻana i ka lawe ʻana. Inā makemake ʻoe i kēia kumuhana e like me aʻu - kakau !

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka