Hello sa tanan!
Ang buluhaton mao ang mosunod - adunay usa ka dagan, nga gipresentar sa hulagway sa ibabaw, nga kinahanglan nga gilukot ngadto sa N server uban sa
Ang NiFi Site to Site (S2S) usa ka luwas, dali nga ma-configure nga paagi sa pagbalhin sa datos tali sa mga higayon sa NiFi. Giunsa pagtrabaho ang S2S, tan-awa
Sa mga kaso diin naghisgot kami bahin sa pagbalhin sa datos gamit ang S2S, usa ka pananglitan ang gitawag nga kliyente, ang ikaduha nga server. Ang kliyente nagpadala sa datos, ang server makadawat. Duha ka paagi aron ma-configure ang pagbalhin sa data tali kanila:
- Push. Gikan sa pananglitan sa kliyente, ang datos gipadala gamit ang Remote Process Group (RPG). Sa pananglitan sa server, ang datos nadawat gamit ang Input Port
- Agawon. Ang server nakadawat data gamit ang RPG, ang kliyente nagpadala gamit ang Output port.
Ang agos alang sa pag-roll out gitipigan sa Apache Registry.
Ang Apache NiFi Registry usa ka subproyekto sa Apache NiFi nga naghatag usa ka himan alang sa pagtipig sa dagan ug pagkontrol sa bersyon. Usa ka matang sa GIT. Ang kasayuran bahin sa pag-install, pag-configure ug pagtrabaho kauban ang rehistro makita sa
Sa pagsugod, kung ang N gamay nga numero, ang dagan ipadala ug mano-mano nga gi-update sa usa ka madawat nga oras.
Apan samtang ang N motubo, ang mga problema mahimong mas daghan:
- nagkinahanglan kini og dugang nga panahon sa pag-update sa dagan. Kinahanglan ka nga mag-log in sa tanan nga mga server
- Nahitabo ang mga sayup sa pag-update sa template. Dinhi sila nag-update niini, apan dinhi sila nakalimot
- mga kasaypanan sa tawo kung naghimo sa daghang parehas nga mga operasyon
Kining tanan nagdala kanato sa kamatuoran nga kinahanglan natong i-automate ang proseso. Gisulayan nako ang mosunod nga mga paagi aron masulbad kini nga problema:
- Gamita ang MiNiFi imbes nga NiFi
- NiFi CLI
- NiPyAPI
Paggamit sa MiNiFi
Ang laing subproyekto makatabang sa pagsulbad niini nga problema - MiNiFi C2 Server. Kini nga produkto gituyo nga mahimong sentro nga punto sa configuration rollout architecture. Giunsa ang pag-configure sa palibot - gihulagway sa
Ang opsyon nga gihulagway sa artikulo sa ibabaw nagtrabaho ug dili lisud nga ipatuman, apan dili nato kalimtan ang mosunod:
- Ang Minifi wala'y tanan nga mga processor gikan sa nifi
- Ang mga bersyon sa Minifi processor naa sa luyo sa mga bersyon sa NiFi processor.
Sa panahon sa pagsulat, ang pinakabag-o nga bersyon sa NiFi mao ang 1.9.2. Ang pinakabag-o nga bersyon sa processor sa MiNiFi mao ang 1.7.0. Mahimong idugang ang mga processor sa MiNiFi, apan tungod sa mga kalainan sa bersyon tali sa mga processor sa NiFi ug MiNiFi, mahimong dili kini molihok.
NiFi CLI
Gihukman ni
Ilunsad ang utility
./bin/cli.sh
_ ___ _
Apache (_) .' ..](_) ,
_ .--. __ _| |_ __ )
[ `.-. | [ |'-| |-'[ | /
| | | | | | | | | | ' '
[___||__][___][___] [___]', ,'
`'
CLI v1.9.2
Type 'help' to see a list of available commands, use tab to auto-complete.
Aron ma-load ang gikinahanglan nga dagan gikan sa rehistro, kinahanglan naton mahibal-an ang mga identifier sa balde (bucket identifier) ββββug ang dagan mismo (flow identifier). Kini nga datos mahimong makuha pinaagi sa cli o sa NiFi registry web interface. Sa web interface kini ingon niini:
Gamit ang CLI nahimo kini:
#> 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
Nagsugod kami sa pag-import sa grupo sa proseso gikan sa rehistro:
#> 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
Ang usa ka importante nga punto mao nga ang bisan unsang nifi nga instance mahimong ipiho isip host diin atong gi-roll ang proseso nga grupo.
Ang grupo sa proseso nga gidugang sa mga nahunong nga mga processor, kinahanglan nga magsugod sila
#> nifi pg-start -pgid 7f522a13-016e-1000-e504-d5b15587f2f3 -u http://nifi:8080
Nindot, nagsugod na ang mga processor. Bisan pa, sumala sa mga termino sa buluhaton, kinahanglan namon ang mga higayon sa NiFi aron ipadala ang datos sa ubang mga higayon. Ibutang ta nga imong gipili ang Push nga pamaagi sa pagbalhin sa data ngadto sa server. Aron maorganisar ang pagbalhin sa datos, kinahanglan nimo nga palihokon ang pagbalhin sa datos sa gidugang nga Remote Process Group (RPG), nga naapil na sa among dagan.
Sa dokumentasyon sa CLI ug uban pang mga tinubdan, wala koy nakit-an nga paagi aron mahimo ang pagbalhin sa datos. Kung nahibal-an nimo kung giunsa kini buhaton, palihug isulat sa mga komento.
Kay naa man tay bash ug andam na ta sa katapusan, mangita ta ug paagi! Mahimo nimong gamiton ang NiFi API aron masulbad kini nga problema. Atong gamiton ang mosunod nga pamaagi, kuhaa ang ID gikan sa mga pananglitan sa ibabaw (sa atong kaso kini mao ang 7f522a13-016e-1000-e504-d5b15587f2f3). Deskripsyon sa mga pamaagi sa NiFi API
Sa lawas kinahanglan nimo nga ipasa ang JSON, sama niini:
{
"revision": {
"clientId": "value",
"version": 0,
"lastModifier": "value"
},
"state": "value",
"disconnectedNodeAcknowledged": true
}
Mga parametro nga kinahanglan pun-an aron kini molihok:
estado β kahimtang sa pagbalhin sa datos. Anaa: PAG-TRANSMIT aron mahimo ang pagbalhin sa datos, GIHUNONG aron ma-disable
nga bersyon - bersyon sa processor
Ang bersyon mahimong default sa 0 kung gibuhat, apan kini nga mga parameter mahimong makuha gamit ang pamaagi
Para sa mga fans sa bash scripts, kini nga pamaagi murag angayan, pero medyo lisod para nako - bash scripts dili nako paborito. Ang sunod nga pamaagi mas makapaikag ug kombenyente sa akong opinyon.
NiPyAPI
Ang NiPyAPI usa ka librarya sa Python alang sa pagpakig-uban sa mga higayon sa NiFi.
Ang among script alang sa pag-roll out sa configuration usa ka programa sa Python. Mopadayon ta sa coding.
Nag-set up mi og mga config para sa dugang trabaho. Kinahanglan namon ang mosunod nga mga parameter:
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, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄ΡΡΠ³ΠΈΠ²Π°Π΅ΠΌ
Sunod akong ibutang ang mga ngalan sa mga pamaagi niini nga librarya, nga gihulagway
Ikonektar ang rehistro sa nifi nga pananglitan gamit ang
nipyapi.versioning.create_registry_client
Niini nga lakang, mahimo ka usab makadugang usa ka tseke nga ang rehistro nadugang na sa pananglitan; alang niini mahimo nimong gamiton ang pamaagi
nipyapi.versioning.list_registry_clients
Among pangitaon ang balde para sa dugang pagpangita sa dagan sa basket
nipyapi.versioning.get_registry_bucket
Gamit ang nakit-an nga balde, gipangita namon ang dagan
nipyapi.versioning.get_flow_in_bucket
Sunod, importante nga masabtan kung kini nga grupo sa proseso gidugang na. Ang grupo sa Proseso gibutang sumala sa mga koordinasyon ug ang usa ka sitwasyon mahimong motungha kung ang usa ka ikaduha nga sangkap gipatong sa ibabaw sa usa. Akong gisusi, kini mahimong mahitabo :) Aron makuha ang tanang dugang nga mga grupo sa proseso atong gigamit ang pamaagi
nipyapi.canvas.list_all_process_groups
Makapangita pa kita, pananglitan, pinaagi sa ngalan.
Dili nako ihulagway ang proseso sa pag-update sa template, isulti lang nako nga kung ang mga processor idugang sa bag-ong bersyon sa template, nan walay mga problema sa presensya sa mga mensahe sa mga pila. Apan kung ang mga processor tangtangon, nan ang mga problema mahimong motungha (nifi dili motugot kanimo sa pagtangtang sa usa ka processor kung ang usa ka mensahe nga pila natipon sa atubangan niini). Kung interesado ka kung giunsa nako pagsulbad kini nga problema, palihug pagsulat kanako ug hisgutan namon kini nga isyu. Mga kontak sa katapusan sa artikulo. Mopadayon kita sa lakang sa pagdugang usa ka grupo sa proseso.
Kung nag-debug sa script, nakit-an nako ang usa ka talagsaon nga ang pinakabag-o nga bersyon sa dagan dili kanunay gibira, mao nga girekomenda nako nga susihon una kini nga bersyon:
nipyapi.versioning.get_latest_flow_ver
I-deploy ang grupo sa proseso:
nipyapi.versioning.deploy_flow_version
Gisugdan namon ang mga processor:
nipyapi.canvas.schedule_process_group
Sa block bahin sa CLI gisulat nga ang pagbalhin sa data dili awtomatik nga mahimo sa hilit nga grupo sa proseso? Sa pag-implementar sa script, nakasugat usab ako niini nga problema. Niadtong panahona, wala ko makasugod sa pagbalhin sa datos gamit ang API ug nakahukom ko nga magsulat sa developer sa NiPyAPI library ug mangayo og tambag/tabang. Ang developer mitubag kanako, among gihisgutan ang problema ug siya misulat nga siya nagkinahanglan og panahon sa "pagsusi sa usa ka butang". Ug unya, paglabay sa pipila ka adlaw, miabot ang usa ka sulat diin ang usa ka function gisulat sa Python nga nagsulbad sa akong problema sa paglansad !!! Niadtong panahona, ang bersyon sa NiPyAPI mao ang 0.13.3 ug, siyempre, wala'y ingon niana. Apan sa bersyon 0.14.0, nga bag-o lang gipagawas, kini nga function gilakip na sa librarya. Magkita,
nipyapi.canvas.set_remote_process_group_transmission
Busa, gamit ang NiPyAPI library, among gikonektar ang registry, gilukot ang dagan, ug gisugdan pa gani ang mga processor ug pagbalhin sa data. Dayon mahimo nimong isuklay ang code, idugang ang tanang matang sa mga tseke, pag-log, ug kana lang. Apan kana usa ka hingpit nga lahi nga istorya.
Sa mga opsyon sa automation nga akong gikonsiderar, ang naulahi para nako mao ang labing episyente. Una, kini gihapon ang python code, diin mahimo nimong i-embed ang auxiliary program code ug pahimuslan ang tanan nga mga benepisyo sa programming language. Ikaduha, ang proyekto sa NiPyAPI aktibo nga nag-uswag ug kung adunay mga problema mahimo nimong sulatan ang developer. Ikatulo, ang NiPyAPI usa gihapon ka mas flexible nga himan alang sa pagpakig-uban sa NiFi sa pagsulbad sa mga komplikadong problema. Pananglitan, sa pagtino kung ang mga linya sa mensahe walaβy sulod sa dagan ug kung ang grupo sa proseso mahimong ma-update.
Mao ra. Gihubit nako ang 3 nga mga pamaagi sa pag-automate sa paghatud sa dagan sa NiFi, mga pitfalls nga mahimong masugatan sa usa ka developer, ug naghatag ug nagtrabaho nga code alang sa pag-automate sa paghatud. Kung interesado ka niini nga hilisgutan sama kanako -
Source: www.habr.com