Akpaaka nke nnyefe eruba na Apache NiFi

Ndewo onye ọ bụla!

Akpaaka nke nnyefe eruba na Apache NiFi

Ọrụ a dị ka ndị a - enwere mmiri, nke egosipụtara na foto dị n'elu, nke kwesịrị ibugharị ya na sava N. Apache NiFi. Nnwale nlegharị anya - a na-emepụta faịlụ ma ziga ya na ihe atụ NiFi ọzọ. Nbufe data na-eme site na iji saịtị NiFi gaa na protocol saịtị.

Saịtị NiFi gaa na Saịtị (S2S) bụ ụzọ echekwara, dịkwa mfe ịhazi iji nyefee data n'etiti oge NiFi. Kedu ka S2S si arụ ọrụ, lee akwụkwọ na ọ dị mkpa ka ị ghara ichefu ịhazi ihe atụ NiFi iji kwe ka S2S, lee ebe a.

N'ọnọdụ ebe anyị na-ekwu maka mbufe data site na iji S2S, otu ihe atụ a na-akpọ ahịa, nke abụọ nkesa. Onye ahịa na-eziga data, ihe nkesa na-enweta. Ụzọ abụọ iji hazie nnyefe data n'etiti ha:

  1. Kwaa. Site na ihe atụ onye ahịa, a na-eziga data site na iji otu Remote Process Group (RPG). N'ihe atụ nkesa, a na-enweta data site na iji ọdụ ụgbọ mmiri
  2. Dọọ. Ihe nkesa na-enweta data site na iji RPG, onye ahịa na-eziga site na iji ọdụ ụgbọ mmiri mmepụta.


A na-echekwa usoro mbugharị n'ime ndekọ Apache.

Apache NiFi Registry bụ isiokwu nke Apache NiFi na-enye ngwá ọrụ maka nchekwa ọsọ na njikwa ụdị. Ụdị GIT. Enwere ike ịhụ ozi gbasara ịwụnye, ịhazi na ịrụ ọrụ na ndekọ akwụkwọ ikike. A na-ejikọta mmiri maka nchekwa n'ime otu usoro ma chekwaa ya n'ụdị a na ndekọ. Anyị ga-alaghachi na nke a ma emechaa n'isiokwu.

Na mbido, mgbe N bụ ọnụ ọgụgụ dị nta, a na-ebufe ma na-eji aka emelite ya n'oge anabatara.

Mana ka N na-etolite, nsogbu na-abawanye ụba:

  1. ọ na-ewe karịa oge iji melite eruba. Ịkwesịrị ịbanye na sava niile
  2. Njehie imelite ndebiri na-eme. Ebe ha melitere ya, mana ebe a ka ha chefuru
  3. mmejọ mmadụ mgbe ị na-eme ọtụtụ ọrụ ndị yiri ya

Ihe a niile na-eme ka anyị mata na anyị kwesịrị ịmegharị usoro ahụ. Agbalịrị m ụzọ ndị a iji dozie nsogbu a:

  1. Jiri MiNiFi kama NiFi
  2. NiFi CLI
  3. NiPyAPI

Iji MiNiFi

Apache MiNiFy - isiokwu nke Apache NiFi. MiNiFy bụ onye na-arụkọ ọrụ ọnụ na-eji otu nhazi dị ka NiFi, na-enye gị ohere ịmepụta otu mmiri dị na NiFi. A na-enweta ọdịdị dị arọ nke onye ọrụ ahụ, n'etiti ihe ndị ọzọ, site n'eziokwu na MiNiFy enweghị ihe ngosi eserese maka nhazi nhazi. Enweghị interface eserese na MiNiFy pụtara na ọ dị mkpa iji dozie nsogbu nke ibuga eruba na minifi. Ebe ọ bụ na a na-eji MiNiFy arụ ọrụ na IOT, enwere ọtụtụ ihe na usoro nke ịnyefe eruba n'okwu ikpe minifi ikpeazụ kwesịrị ka akpaaka. Ọrụ amara ama, nri?

Isiokwu ọzọ ga-enyere aka dozie nsogbu a - MiNiFi C2 Server. Emebere ngwaahịa a ka ọ bụrụ ebe etiti n'ime nhazi ihe nrụpụta. Otu esi ahazi gburugburu - akọwara na isiokwu a Enwere ozi zuru oke na Habré iji dozie nsogbu ahụ. MiNiFi, yana njikọ nke sava C2, na-emelite nhazi ya na-akpaghị aka. Naanị ihe ndọghachi azụ nke ụzọ a bụ na ị ga-emepụta ndebiri na C2 Server; ntinye dị mfe na ndekọ ezughị.

Nhọrọ a kọwara n'isiokwu dị n'elu na-arụ ọrụ ma ọ bụghị ihe siri ike ime, ma anyị agaghị echefu ihe ndị a:

  1. Minifi enweghị ihe nhazi niile sitere na nifi
  2. Ụdị nhazi Minifi na-ada azụ n'azụ ụdị nhazi NiFi.

N'oge edere, ụdị NiFi kachasị ọhụrụ bụ 1.9.2. Ụdị nhazi MiNiFi kacha ọhụrụ bụ 1.7.0. Enwere ike itinye ihe nhazi na MiNiFi, mana n'ihi ndakọrịta ụdị n'etiti ndị nhazi NiFi na MiNiFi, nke a nwere ike ọ gaghị arụ ọrụ.

NiFi CLI

Na-ekpe ikpe site na nkọwa ngwá ọrụ na webụsaịtị gọọmentị, nke a bụ ngwá ọrụ maka imezi mmekọrịta dị n'etiti NiFI na NiFi Registry na ngalaba nnyefe ma ọ bụ njikwa usoro. Iji malite, ịkwesịrị ibudata ngwá ọrụ a. site n'ebe a.

Mwepụta akụrụngwa

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

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

Ka anyị nwee ike ibufe ihe achọrọ site na ndekọ ndekọ, anyị kwesịrị ịma ihe njirimara nke bọket (ihe nchọpụta ịwụ) na mmiri n'onwe ya (ihe nchọpụta eruba). Enwere ike nweta data a site na cli ma ọ bụ na interface weebụ ndekọ NiFi. Na interface weebụ ọ dị ka nke a:

Akpaaka nke nnyefe eruba na Apache NiFi

Iji CLI mee nke a:

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

Anyị na-amalite ibubata usoro site na ndekọ:

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

Otu ihe dị mkpa bụ na enwere ike ịkọwa ihe atụ nifi ọ bụla dị ka onye ọbịa nke anyị na-atụgharị otu usoro.

Otu usoro agbakwunyere na ndị nrụpụta kwụsịrị, ha kwesịrị ịmalite

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

Ọ dị mma, ndị nhazi amalitela. Agbanyeghị, dịka usoro nke ọrụ ahụ siri dị, anyị chọrọ oge NiFi iji zipu data na oge ndị ọzọ. Ka anyị were na ị họrọla usoro Push iji nyefee data na sava ahụ. Iji hazie mbufe data, ịkwesịrị ịme ka ịnyefe data na agbakwunyere Remote Process Group (RPG), nke etinyelarị na ọsọ anyị.

Akpaaka nke nnyefe eruba na Apache NiFi

N'ime akwụkwọ dị na CLI na isi mmalite ndị ọzọ, ahụghị m ụzọ m ga-esi mee ka ịnyefe data. Ọ bụrụ na ị maara ka esi eme nke a, biko dee na nkọwa.

Ebe anyị nwere bash na anyị dị njikere ịga na njedebe, anyị ga-achọta ụzọ mgbapụ! Ị nwere ike iji NiFi API dozie nsogbu a. Ka anyị jiri usoro a, were ID ahụ site na ihe atụ ndị dị n'elu (n'ọnọdụ anyị ọ bụ 7f522a13-016e-1000-e504-d5b15587f2f3). Nkọwa nke ụzọ NiFi API ebe a.

Akpaaka nke nnyefe eruba na Apache NiFi
N'ime ahụ, ịkwesịrị ịgafe JSON, dị ka nke a:

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

Parameter kwesịrị imeju ka ọ rụọ ọrụ:
ala - ọnọdụ mbufe data. Dị: Mbugharị iji mee ka ịnyefe data nwee ike, Kwụsị gbanyụọ
version - processor ụdị

ụdị ga-adaba na 0 mgbe emepụtara ya, mana enwere ike nweta paramita ndị a site na iji usoro a

Akpaaka nke nnyefe eruba na Apache NiFi

Maka ndị na-akwado scripts bash, usoro a nwere ike iyi ka ọ dabara adaba, mana ọ na-esiri m ike - scripts bash abụghị ọkacha mmasị m. Ụzọ na-esote bụ ihe na-adọrọ mmasị ma dị mma n'uche m.

NiPyAPI

NiPyAPI bụ ọba akwụkwọ Eke Ọgba maka imekọrịta ihe na oge NiFi. Ibe akwụkwọ nwere ozi dị mkpa maka ịrụ ọrụ na ụlọ akwụkwọ. A kọwara mmalite ngwa ngwa na oru ngo na github.

Edemede anyị maka ịtụgharị nhazi ahụ bụ mmemme na Python. Ka anyị gaba na nzuzo.
Anyị na-ahazi nhazi maka ọrụ ọzọ. Anyị ga-achọ paramita ndị a:

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

Na-esote m ga-etinye aha nke ụzọ nke ọba akwụkwọ a, nke a kọwara ebe a.

Jikọọ ndekọ ahụ na ihe atụ nifi site na iji

nipyapi.versioning.create_registry_client

Na usoro a, ị nwekwara ike ịgbakwunye nlele na agbakwunyelarị ndekọ aha na ihe atụ; maka nke a ị nwere ike iji usoro a.

nipyapi.versioning.list_registry_clients

Anyị na-achọta ịwụ maka ịchọgharị ọzọ maka eruba na nkata

nipyapi.versioning.get_registry_bucket

Iji bọket achọtara, anyị na-achọ eruba

nipyapi.versioning.get_flow_in_bucket

Na-esote, ọ dị mkpa ịghọta ma agbakwunyela otu usoro a. A na-edobe otu usoro dịka nhazi na ọnọdụ nwere ike ibilite mgbe etinyere ihe nke abụọ n'elu otu. Achọpụtara m, nke a nwere ike ime :) Iji nweta otu usoro agbakwunyere anyị na-eji usoro a

nipyapi.canvas.list_all_process_groups

Anyị nwere ike ịchọ ọzọ, dịka ọmụmaatụ, n'aha.

Agaghị m akọwa usoro nke imelite template ahụ, m ga-ekwu naanị na ọ bụrụ na a na-agbakwunye ndị nhazi na ụdị ọhụrụ nke template ahụ, mgbe ahụ, ọ dịghị nsogbu ọ bụla na ọnụnọ nke ozi na queues. Mana ọ bụrụ na ewepụrụ ndị nrụpụta, mgbe ahụ nsogbu nwere ike ibilite (nifi anaghị ekwe ka iwepu ihe nrụpụta ma ọ bụrụ na kwụ n'ahịrị ozi agbakọbara n'ihu ya). Ọ bụrụ na ị nwere mmasị ka m si dozie nsogbu a, biko detara m akwụkwọ na anyị ga-ekwurịta okwu a. Kọntaktị na njedebe nke akụkọ. Ka anyị gaa n'ihu na nzọụkwụ nke ịgbakwunye otu usoro.

Mgbe m na-emezigharị edemede ahụ, ahụrụ m ihe dị iche iche na ọ bụghị mgbe niile ka a na-ebuli ụdị iyi kachasị ọhụrụ, yabụ ana m akwado ịlele ụdị a:

nipyapi.versioning.get_latest_flow_ver

Nyefee otu usoro:

nipyapi.versioning.deploy_flow_version

Anyị na-amalite ndị processors:

nipyapi.canvas.schedule_process_group

N'ime ngọngọ banyere CLI e dere na a naghị enyefefe data na-akpaghị aka n'ime otu usoro dịpụrụ adịpụ? Mgbe m na-emejuputa edemede ahụ, enwere m nsogbu a. N'oge ahụ, enweghị m ike ịmalite ịnyefe data site na iji API ma ekpebiri m idegara onye mmepụta nke ọbá akwụkwọ NiPyAPI akwụkwọ ma rịọ maka ndụmọdụ / enyemaka. Onye nrụpụta zara m, anyị kwurịtara nsogbu ahụ wee dee na ọ chọrọ oge iji "lelee ihe". Ma mgbe ahụ, ụbọchị ole na ole ka e mesịrị, akwụkwọ ozi rutere ebe edere ọrụ na Python nke na-edozi nsogbu mmalite m !!! N'oge ahụ, ụdị NiPyAPI bụ 0.13.3 na, n'ezie, ọ dịghị ihe dị otú ahụ. Mana na ụdị 0.14.0, nke ewepụtara na nso nso a, etinyelarị ọrụ a n'ọbá akwụkwọ. zute,

nipyapi.canvas.set_remote_process_group_transmission

Yabụ, n'iji ọbá akwụkwọ NiPyAPI, anyị jikọtara ndekọ ahụ, na-agbagharị agbagharị, na ọbụna malite ndị nhazi na ịnyefe data. Mgbe ahụ, ị ​​​​nwere ike ịgbanye koodu ahụ, tinye ụdị nlele ọ bụla, ịdebanye aha, nke ahụ bụ ihe niile. Mana nke ahụ bụ akụkọ dị iche kpamkpam.

N'ime nhọrọ akpaaka m tụlere, nke ikpeazụ dị m ka ọ kacha arụ ọrụ nke ọma. Nke mbụ, nke a ka bụ koodu Python, nke ị nwere ike itinye koodu mmemme inyeaka wee nweta uru niile dị na asụsụ mmemme. Nke abuo, oru ngo NiPyAPI na-etowanye nke oma ma oburu na enwere nsogbu i nwere ike idegara onye nrụpụta akwụkwọ. Nke atọ, NiPyAPI ka bụ ngwa ọrụ na-agbanwe agbanwe maka iso NiFi na-emekọrịta ihe na idozi nsogbu ndị siri ike. Dịka ọmụmaatụ, n'ịchọpụta ma ahịrị ozi adịghị ugbu a na ntinye na ma enwere ike imelite otu usoro ahụ.

Ọ gwụla. Akọwara m ụzọ 3 iji rụọ ọrụ nnyefe ọsọ na NiFi, ọnyà onye nrụpụta nwere ike izute, wee nye koodu ọrụ maka nnyefe akpaaka. Ọ bụrụ na ị nwere mmasị na isiokwu a dịka m nwere - dee!

isi: www.habr.com

Tinye a comment