Adaṣiṣẹ ti ifijiṣẹ sisan ni Apache NiFi

Kaabo gbogbo eniyan!

Adaṣiṣẹ ti ifijiṣẹ sisan ni Apache NiFi

Iṣẹ naa jẹ bi atẹle - ṣiṣan wa, ti a gbekalẹ ni aworan loke, eyiti o nilo lati yiyi si awọn olupin N pẹlu Apache NiFi. Idanwo sisan - faili kan ti wa ni ipilẹṣẹ ati firanṣẹ si apẹẹrẹ NiFi miiran. Gbigbe data waye nipa lilo Aye NiFi si Ilana Aye.

Aaye NiFi si Aye (S2S) jẹ aabo, ọna atunto irọrun lati gbe data laarin awọn iṣẹlẹ NiFi. Bawo ni S2S ṣiṣẹ, wo iwe ati pe o ṣe pataki lati maṣe gbagbe lati tunto apẹẹrẹ NiFi lati gba S2S laaye, wo nibi.

Ni awọn ọran nibiti a ti n sọrọ nipa gbigbe data nipa lilo S2S, apẹẹrẹ kan ni a pe ni alabara, olupin keji. Onibara firanṣẹ data, olupin naa gba. Awọn ọna meji lati tunto gbigbe data laarin wọn:

  1. Ti. Lati apẹẹrẹ alabara, a firanṣẹ data nipa lilo Ẹgbẹ Ilana Latọna jijin (RPG). Lori apẹẹrẹ olupin, data gba ni lilo Port Input
  2. Fa. Olupin naa gba data nipa lilo RPG, alabara firanṣẹ ni lilo ibudo Ijade.


Sisan fun yiyi jade ti wa ni ipamọ ni Iforukọsilẹ Apache.

Iforukọsilẹ Apache NiFi jẹ iṣẹ akanṣe ti Apache NiFi ti o pese ohun elo kan fun ibi ipamọ sisan ati iṣakoso ẹya. Iru GIT. Alaye nipa fifi sori ẹrọ, tunto ati ṣiṣẹ pẹlu iforukọsilẹ ni a le rii ni osise iwe aṣẹ. Sisan fun ibi ipamọ ti wa ni idapo sinu ẹgbẹ ilana ati ti o fipamọ sinu fọọmu yii ni iforukọsilẹ. A yoo pada si eyi nigbamii ninu nkan naa.

Ni ibẹrẹ, nigbati N jẹ nọmba kekere, sisan ti wa ni jiṣẹ ati imudojuiwọn pẹlu ọwọ ni akoko itẹwọgba.

Ṣugbọn bi N ṣe n dagba, awọn iṣoro naa di pupọ:

  1. o gba akoko diẹ sii lati ṣe imudojuiwọn ṣiṣan naa. O nilo lati wọle si gbogbo awọn olupin
  2. Awọn aṣiṣe imudojuiwọn awoṣe waye. Nibi ti won imudojuiwọn o, sugbon nibi ti won gbagbe
  3. awọn aṣiṣe eniyan nigba ṣiṣe nọmba nla ti awọn iṣẹ ṣiṣe kanna

Gbogbo eyi mu wa si otitọ pe a nilo lati ṣe adaṣe ilana naa. Mo gbiyanju awọn ọna wọnyi lati yanju iṣoro yii:

  1. Lo MiNiFi dipo NiFi
  2. NiFi CLI
  3. NiPyAPI

Lilo MiNiFi

Apache MiNiFy - koko-ọrọ ti Apache NiFi. MiNiFy jẹ aṣoju iwapọ ti o nlo awọn ilana kanna bi NiFi, gbigba ọ laaye lati ṣẹda awọn ṣiṣan kanna bi ni NiFi. Iseda iwuwo iwuwo ti aṣoju jẹ aṣeyọri, laarin awọn ohun miiran, nipasẹ otitọ pe MiNiFy ko ni wiwo ayaworan fun iṣeto sisan. Aini wiwo ayaworan ni MiNiFy tumọ si pe o jẹ dandan lati yanju iṣoro ti jiṣẹ sisan si minifi. Niwọn bi a ti lo MiNiFy ni itara ni IOT, ọpọlọpọ awọn paati wa ati ilana ti jiṣẹ sisan si awọn iṣẹlẹ minifi ikẹhin nilo lati ṣe adaṣe. Iṣẹ-ṣiṣe ti o mọ, otun?

Koko-ọrọ miiran yoo ṣe iranlọwọ lati yanju iṣoro yii - MiNiFi C2 Server. Ọja yii ni ipinnu lati jẹ aaye aringbungbun ni faaji yiyọjade iṣeto ni. Bii o ṣe le tunto agbegbe - ti a ṣalaye ninu Arokọ yi Alaye ti o to lori Habré lati yanju iṣoro naa. MiNiFi, ni apapo pẹlu olupin C2, ṣe imudojuiwọn iṣeto rẹ laifọwọyi. Iyatọ ti ọna yii ni pe o ni lati ṣẹda awọn awoṣe lori olupin C2;

Aṣayan ti a ṣalaye ninu nkan ti o wa loke n ṣiṣẹ ati pe ko nira lati ṣe, ṣugbọn a ko gbọdọ gbagbe atẹle naa:

  1. Minifi ko ni gbogbo awọn ero isise lati nifi
  2. Minifi isise awọn ẹya aisun sile NiFi isise awọn ẹya.

Ni akoko kikọ, ẹya tuntun ti NiFi jẹ 1.9.2. Ẹya ero isise MiNiFi tuntun jẹ 1.7.0. Awọn ero isise le ṣe afikun si MiNiFi, ṣugbọn nitori awọn aiṣedeede ẹya laarin NiFi ati awọn ilana MiNiFi, eyi le ma ṣiṣẹ.

NiFi CLI

Idajọ nipasẹ apejuwe ọpa lori oju opo wẹẹbu osise, eyi jẹ ohun elo fun adaṣe adaṣe laarin NiFI ati Iforukọsilẹ NiFi ni aaye ti ifijiṣẹ ṣiṣan tabi iṣakoso ilana. Lati bẹrẹ, o nilo lati ṣe igbasilẹ ohun elo yii. lati ibi.

Lọlẹ awọn IwUlO

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

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

Ni ibere fun wa lati fifuye sisan ti a beere lati iforukọsilẹ, a nilo lati mọ awọn idamọ ti garawa (idamo garawa) ati sisan funrararẹ (idamo sisan). O le gba data yii boya nipasẹ cli tabi ni wiwo oju opo wẹẹbu iforukọsilẹ NiFi. Ni wiwo oju opo wẹẹbu o dabi eyi:

Adaṣiṣẹ ti ifijiṣẹ sisan ni Apache NiFi

Lilo CLI eyi ni a ṣe:

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

A bẹrẹ gbigbe wọle ẹgbẹ ilana lati iforukọsilẹ:

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

Koko pataki kan ni pe eyikeyi apẹẹrẹ nifi le jẹ asọye bi agbalejo eyiti a yipo ẹgbẹ ilana naa.

Ẹgbẹ ilana ti a ṣafikun pẹlu awọn ilana ti o da duro, wọn nilo lati bẹrẹ

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

O dara, awọn olupilẹṣẹ ti bẹrẹ. Sibẹsibẹ, ni ibamu si awọn ofin iṣẹ-ṣiṣe, a nilo awọn iṣẹlẹ NiFi lati fi data ranṣẹ si awọn iṣẹlẹ miiran. Jẹ ki a ro pe o ti yan ọna Titari lati gbe data lọ si olupin naa. Lati ṣeto gbigbe data, o nilo lati mu gbigbe data ṣiṣẹ lori Ẹgbẹ Ilana Latọna jijin ti a ṣafikun (RPG), eyiti o wa tẹlẹ ninu ṣiṣan wa.

Adaṣiṣẹ ti ifijiṣẹ sisan ni Apache NiFi

Ninu iwe ti o wa ninu CLI ati awọn orisun miiran, Emi ko wa ọna lati mu gbigbe data ṣiṣẹ. Ti o ba mọ bi o ṣe le ṣe eyi, jọwọ kọ sinu awọn asọye.

Niwon a ni bash ati pe a ti ṣetan lati lọ si opin, a yoo wa ọna kan jade! O le lo NiFi API lati yanju iṣoro yii. Jẹ ki a lo ọna atẹle, mu ID lati awọn apẹẹrẹ loke (ninu ọran wa o jẹ 7f522a13-016e-1000-e504-d5b15587f2f3). Apejuwe awọn ọna NiFi API nibi.

Adaṣiṣẹ ti ifijiṣẹ sisan ni Apache NiFi
Ninu ara o nilo lati kọja JSON, bii eyi:

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

Awọn paramita ti o nilo lati kun fun lati ṣiṣẹ:
ipinle - data gbigbe ipo. Wa: Gbigbe lati mu ki gbigbe data ṣiṣẹ, STOPED lati mu ṣiṣẹ
version - isise version

Ẹya yoo jẹ aiyipada si 0 nigbati o ṣẹda, ṣugbọn awọn paramita wọnyi le ṣee gba nipa lilo ọna naa

Adaṣiṣẹ ti ifijiṣẹ sisan ni Apache NiFi

Fun awọn onijakidijagan ti awọn iwe afọwọkọ bash, ọna yii le dabi pe o dara, ṣugbọn o nira diẹ fun mi - awọn iwe afọwọkọ bash kii ṣe ayanfẹ mi. Ọna ti o tẹle jẹ diẹ ti o nifẹ ati irọrun ni ero mi.

NiPyAPI

NiPyAPI jẹ ile-ikawe Python fun ibaraṣepọ pẹlu awọn iṣẹlẹ NiFi. Oju-iwe iwe ni awọn pataki alaye fun ṣiṣẹ pẹlu awọn ìkàwé. Awọn ọna ibere ti wa ni apejuwe ninu ise agbese lori github.

Iwe afọwọkọ wa fun yiyi iṣeto ni eto ni Python. Jẹ ki a lọ siwaju si ifaminsi.
A ṣeto awọn atunto fun iṣẹ siwaju. A yoo nilo awọn paramita wọnyi:

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

Nigbamii Emi yoo fi awọn orukọ ti awọn ọna ti ile-ikawe yii sii, eyiti a ṣalaye nibi.

So iforukọsilẹ pọ si apẹẹrẹ nifi nipa lilo

nipyapi.versioning.create_registry_client

Ni igbesẹ yii, o tun le ṣafikun ṣayẹwo pe a ti ṣafikun iforukọsilẹ si apẹẹrẹ fun eyi o le lo ọna naa

nipyapi.versioning.list_registry_clients

A ri garawa fun wiwa siwaju fun sisan ninu agbọn

nipyapi.versioning.get_registry_bucket

Lilo garawa ri, a wa fun sisan

nipyapi.versioning.get_flow_in_bucket

Nigbamii ti, o ṣe pataki lati ni oye boya ẹgbẹ ilana yii ti ni afikun tẹlẹ. Ẹgbẹ ilana naa ni a gbe ni ibamu si awọn ipoidojuko ati pe ipo kan le dide nigbati paati keji ba wa lori oke ọkan. Mo ṣayẹwo, eyi le ṣẹlẹ :) Lati gba gbogbo awọn ẹgbẹ ilana ti a fi kun a lo ọna naa

nipyapi.canvas.list_all_process_groups

A le wa siwaju sii, fun apẹẹrẹ, nipasẹ orukọ.

Emi kii yoo ṣe apejuwe ilana ti imudojuiwọn awoṣe, Emi yoo sọ pe ti awọn ilana ba ṣafikun ni ẹya tuntun ti awoṣe, lẹhinna ko si awọn iṣoro pẹlu wiwa awọn ifiranṣẹ ninu awọn ila. Ṣugbọn ti awọn ilana ba yọkuro, lẹhinna awọn iṣoro le dide (nifi ko gba ọ laaye lati yọ ero isise kan kuro ti isinyi ifiranṣẹ ba ti ṣajọpọ ni iwaju rẹ). Ti o ba nifẹ si bawo ni MO ṣe yanju iṣoro yii, jọwọ kọ si mi ati pe a yoo jiroro lori ọran yii. Awọn olubasọrọ ni opin nkan naa. Jẹ ki a lọ si igbesẹ ti fifi ẹgbẹ ilana kan kun.

Nigbati o n ṣatunṣe iwe afọwọkọ naa, Mo wa iyatọ kan pe ẹya tuntun ti ṣiṣan ko nigbagbogbo fa soke, nitorinaa Mo ṣeduro iṣayẹwo ẹya yii ni akọkọ:

nipyapi.versioning.get_latest_flow_ver

Mu ẹgbẹ ilana ṣiṣẹ:

nipyapi.versioning.deploy_flow_version

A bẹrẹ awọn isise:

nipyapi.canvas.schedule_process_group

Ninu bulọki nipa CLI o ti kọ pe gbigbe data ko ṣiṣẹ laifọwọyi ni ẹgbẹ ilana isakoṣo latọna jijin? Nigbati imuse iwe afọwọkọ, Mo tun pade iṣoro yii. Ni akoko yẹn, Emi ko le bẹrẹ gbigbe data nipa lilo API ati pe Mo pinnu lati kọwe si oluṣe idagbasoke ile-ikawe NiPyAPI ati beere fun imọran / iranlọwọ. Olùgbéejáde naa dahun si mi, a jiroro iṣoro naa ati pe o kọwe pe o nilo akoko lati "ṣayẹwo nkan". Ati lẹhinna, awọn ọjọ meji lẹhinna, lẹta kan de ninu eyiti a kọ iṣẹ kan ni Python ti o yanju iṣoro ifilọlẹ mi !!! Ni akoko yẹn, ẹya NiPyAPI jẹ 0.13.3 ati, dajudaju, ko si nkankan bi iyẹn. Ṣugbọn ni ẹya 0.14.0, eyiti o ti tu silẹ laipẹ, iṣẹ yii ti wa tẹlẹ ninu ile-ikawe naa. Pade,

nipyapi.canvas.set_remote_process_group_transmission

Nitorinaa, ni lilo ile-ikawe NiPyAPI, a so iforukọsilẹ pọ, yiyi ṣiṣan jade, ati paapaa bẹrẹ awọn iṣelọpọ ati gbigbe data. Lẹhinna o le fọ koodu naa, ṣafikun gbogbo iru awọn sọwedowo, gedu, ati pe gbogbo rẹ ni. Ṣugbọn iyẹn jẹ itan ti o yatọ patapata.

Ninu awọn aṣayan adaṣe ti Mo gbero, eyi ti o kẹhin dabi ẹni pe o munadoko julọ si mi. Ni akọkọ, eyi tun jẹ koodu Python, sinu eyiti o le fi sabe koodu eto iranlọwọ ati lo anfani gbogbo awọn anfani ti ede siseto. Ni ẹẹkeji, iṣẹ akanṣe NiPyAPI n dagbasoke ni itara ati ni ọran awọn iṣoro o le kọ si olupilẹṣẹ. Ni ẹkẹta, NiPyAPI tun jẹ ohun elo to rọ diẹ sii fun ibaraṣepọ pẹlu NiFi ni yiyanju awọn iṣoro idiju. Fun apẹẹrẹ, ni ṣiṣe ipinnu boya awọn ila ifiranṣẹ ti ṣofo ni bayi ati boya ẹgbẹ ilana le ṣe imudojuiwọn.

Gbogbo ẹ niyẹn. Mo ṣe apejuwe awọn ọna 3 si adaṣe adaṣe adaṣe ni NiFi, awọn ọfin ti olupilẹṣẹ le ba pade, ati pese koodu iṣẹ fun adaṣe adaṣe. Ti o ba nifẹ si koko-ọrọ yii bii Emi - kọ!

orisun: www.habr.com

Fi ọrọìwòye kun