በ Apache NiFi ውስጥ የፍሰት አቅርቦትን በራስ-ሰር ማድረግ

ሁሉም ሰው ሰላም!

በ Apache NiFi ውስጥ የፍሰት አቅርቦትን በራስ-ሰር ማድረግ

ስራው እንደሚከተለው ነው - ከላይ በስዕሉ ላይ የሚታየው ፍሰት አለ, ወደ N አገልጋዮች መልቀቅ ያስፈልገዋል. Apache NiFi. የፍሰት ሙከራ - ፋይል እየተፈጠረ እና ወደ ሌላ የNiFi ምሳሌ እየተላከ ነው። የውሂብ ማስተላለፍ የኒፋይ ሳይት ወደ ጣቢያ ፕሮቶኮል በመጠቀም ይከሰታል።

የኒፋይ ሳይት ወደ ሳይት (S2S) በNiFi አጋጣሚዎች መካከል ውሂብን ለማስተላለፍ ደህንነቱ የተጠበቀ፣ በቀላሉ የሚዋቀር መንገድ ነው። S2S እንዴት እንደሚሰራ፣ ይመልከቱ ሰነድ እና S2S ለመፍቀድ የ NiFi ምሳሌን ማዋቀርን መርሳት የለብዎትም, ይመልከቱ እዚህ.

S2S በመጠቀም ስለ ዳታ ማስተላለፍ እየተነጋገርን ባለንበት ሁኔታ፣ አንድ ምሳሌ ደንበኛ፣ ሁለተኛው አገልጋይ ይባላል። ደንበኛው ውሂብ ይልካል, አገልጋዩ ይቀበላል. በመካከላቸው የውሂብ ማስተላለፍን ለማዋቀር ሁለት መንገዶች

  1. ይግፉ. ከደንበኛው ምሳሌ፣ ውሂብ የርቀት ሂደት ቡድን (RPG) በመጠቀም ይላካል። በአገልጋዩ ምሳሌ ላይ መረጃ የሚገኘው የግቤት ወደብ በመጠቀም ነው።
  2. ጐተተ. አገልጋዩ RPGን በመጠቀም ውሂብ ይቀበላል, ደንበኛው የውጤት ወደብ በመጠቀም ይልካል.


ለመልቀቅ ፍሰት በ Apache Registry ውስጥ ተከማችቷል።

Apache NiFi Registry ለወራጅ ማከማቻ እና ለስሪት መቆጣጠሪያ መሳሪያ የሚያቀርብ የApache NiFi ንዑስ ፕሮጀክት ነው። የጂአይቲ አይነት። ከመዝገቡ ጋር ስለመጫን፣ ስለማዋቀር እና ስለመስራት መረጃ በ ውስጥ ይገኛል። ኦፊሴላዊ ሰነዶች. የማጠራቀሚያ ፍሰት በሂደት ቡድን ውስጥ ይጣመራል እና በዚህ ቅጽ ውስጥ በመዝገቡ ውስጥ ይከማቻል። ይህንን በኋላ በጽሁፉ ውስጥ እንመለሳለን.

በጅምር ላይ N ትንሽ ቁጥር ሲሆን, ፍሰት ተቀባይነት ባለው ጊዜ ውስጥ ይደርሳል እና በእጅ ይሻሻላል.

ነገር ግን N ሲያድግ ችግሮቹ እየበዙ ይሄዳሉ፡-

  1. ፍሰቱን ለማዘመን ተጨማሪ ጊዜ ይወስዳል. ወደ ሁሉም አገልጋዮች መግባት አለብህ
  2. የአብነት ማዘመን ስህተቶች ተከስተዋል። እዚህ አዘምነውታል፣ እዚህ ግን ረሱት።
  3. ብዙ ቁጥር ያላቸው ተመሳሳይ ስራዎችን ሲያከናውን የሰዎች ስህተቶች

ይህ ሁሉ ሂደቱን በራስ-ሰር ማድረግ እንዳለብን ያመጣናል. ይህንን ችግር ለመፍታት የሚከተሉትን መንገዶች ሞከርኩ:

  1. ከNiFi ይልቅ MiNiFiን ይጠቀሙ
  2. NiFi CLI
  3. ኒፒኤፒአይ

MiNiFi ን በመጠቀም

Apache MiNiFy - የ Apache NiFi ርዕሰ ጉዳይ። MiNiFy ልክ እንደ NiFi ተመሳሳይ ፕሮሰሰሮችን የሚጠቀም የታመቀ ወኪል ነው፣ ይህም በNiFi ውስጥ እንዳሉት ተመሳሳይ ፍሰቶችን እንዲፈጥሩ ያስችልዎታል። የወኪሉ ቀላል ክብደት ተፈጥሮ ከሌሎች ነገሮች በተጨማሪ, MiNiFy ለወራጅ ውቅር ስዕላዊ በይነገጽ የለውም. በMiNiFy ውስጥ የግራፊክ በይነገጽ አለመኖር ማለት ፍሰት ወደ ሚኒፊ የማድረስ ችግር መፍታት አስፈላጊ ነው ማለት ነው። MiNiFy በአይኦቲ ውስጥ በንቃት ጥቅም ላይ የሚውል በመሆኑ ብዙ አካላት አሉ እና ፍሰትን ወደ የመጨረሻዎቹ ሚኒፊ አጋጣሚዎች የማድረስ ሂደት በራስ-ሰር መደረግ አለበት። የታወቀ ተግባር ፣ አይደል?

ሌላ ንዑስ ፕሮጀክት ይህንን ችግር ለመፍታት ይረዳል - MiNiFi C2 Server. ይህ ምርት በማዋቀሪያ ልቀት አርክቴክቸር ውስጥ ማዕከላዊ ነጥብ እንዲሆን የታሰበ ነው። አካባቢን እንዴት ማዋቀር እንደሚቻል - በ ውስጥ ተገልጿል ይህ ጽሑፍ ችግሩን ለመፍታት በሀበሬ ላይ በቂ መረጃ አለ። MiNiFi ከC2 አገልጋይ ጋር በመተባበር አወቃቀሩን በራስ ሰር ያዘምናል። የዚህ አቀራረብ ብቸኛው ችግር በC2 አገልጋይ ላይ አብነቶችን መፍጠር አለብዎት ፣ ለመዝገቡ ቀላል ቁርጠኝነት በቂ አይደለም።

ከላይ ባለው ጽሑፍ ውስጥ የተገለጸው አማራጭ እየሰራ ነው እና ለመተግበር አስቸጋሪ አይደለም, ነገር ግን የሚከተሉትን መርሳት የለብንም.

  1. ሚኒፊ ሁሉም ፕሮሰሰሮች ከኒፊ የሉትም።
  2. የሚኒፊ ፕሮሰሰር ስሪቶች ከNiFi ፕሮሰሰር ስሪቶች ኋላ ቀርተዋል።

በሚጽፉበት ጊዜ የቅርብ ጊዜው የ NiFi ስሪት 1.9.2 ነው። የቅርብ ጊዜው የMiNiFi ፕሮሰሰር ስሪት 1.7.0 ነው። ማቀነባበሪያዎች ወደ MiNiFi ሊጨመሩ ይችላሉ፣ነገር ግን በNiFi እና MiNiFi ፕሮሰሰር መካከል ባለው የስሪት ልዩነት ምክንያት ይሄ ላይሰራ ይችላል።

NiFi CLI

መፍረድ በ መግለጫ በኦፊሴላዊው ድህረ ገጽ ላይ ያለው መሳሪያ ይህ በNiFI እና NiFi መዝገብ ቤት ፍሰት ማቅረቢያ ወይም በሂደት አስተዳደር መካከል ያለውን መስተጋብር በራስ ሰር የሚሰራ መሳሪያ ነው። ለመጀመር ይህንን መሳሪያ ማውረድ ያስፈልግዎታል. እዚህ.

መገልገያውን ያስጀምሩ

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

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

አስፈላጊውን ፍሰት ከመዝገቡ ላይ ለመጫን, የባልዲውን (ባልዲ ለዪ) እና ፍሰቱን እራሱ (ፍሰት መለያ) ለይቶ ማወቅ አለብን. ይህ ውሂብ በክሊ ወይም በ NiFi መዝገብ ድር በይነገጽ ውስጥ ሊገኝ ይችላል። በድር በይነገጽ ውስጥ ይህ ይመስላል።

በ Apache NiFi ውስጥ የፍሰት አቅርቦትን በራስ-ሰር ማድረግ

CLI ን በመጠቀም ይህ ይከናወናል-

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

የሂደቱን ቡድን ከመዝገቡ ማስመጣት እንጀምራለን፡-

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

አንድ አስፈላጊ ነጥብ ማንኛውም የኒፊ ምሳሌ የሂደቱን ቡድን የምንጠቀልልበት እንደ አስተናጋጅ ሊገለጽ ይችላል።

የሂደቱ ቡድን ከቆሙ ፕሮሰሰሮች ጋር ተጨምሯል ፣ መጀመር አለባቸው

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

በጣም ጥሩ, ማቀነባበሪያዎች ተጀምረዋል. ነገር ግን፣ በስራው ውል መሰረት፣ መረጃን ወደ ሌሎች ሁኔታዎች ለመላክ የNiFi ምሳሌዎችን እንፈልጋለን። መረጃን ወደ አገልጋዩ ለማስተላለፍ የፑሽ ዘዴን እንደመረጡ እናስብ። የውሂብ ማስተላለፍን ለማደራጀት ቀደም ሲል በእኛ ፍሰት ውስጥ በተካተተ በተጨመረው የርቀት ሂደት ቡድን (RPG) ላይ የውሂብ ማስተላለፍን ማንቃት ያስፈልግዎታል።

በ Apache NiFi ውስጥ የፍሰት አቅርቦትን በራስ-ሰር ማድረግ

በ CLI እና በሌሎች ምንጮች ውስጥ ባሉ ሰነዶች ውስጥ የውሂብ ማስተላለፍን ለማንቃት የሚያስችል መንገድ አላገኘሁም። ይህንን እንዴት ማድረግ እንደሚችሉ ካወቁ እባክዎን በአስተያየቶቹ ውስጥ ይፃፉ.

ባሽ ስላለን እና ወደ መጨረሻው ለመሄድ ዝግጁ ስለሆንን መውጫ መንገድ እናገኛለን! ይህንን ችግር ለመፍታት NiFi API መጠቀም ይችላሉ። የሚከተለውን ዘዴ እንጠቀም, ከላይ ከተጠቀሱት ምሳሌዎች መታወቂያውን እንውሰድ (በእኛ ሁኔታ 7f522a13-016e-1000-e504-d5b15587f2f3 ነው). የNiFi ኤፒአይ ዘዴዎች መግለጫ እዚህ.

በ Apache NiFi ውስጥ የፍሰት አቅርቦትን በራስ-ሰር ማድረግ
በሰውነት ውስጥ JSON ን ማለፍ ያስፈልግዎታል፣ እንደዚህ፡-

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

እንዲሠራ መሞላት ያለባቸው መለኪያዎች፡-
ግዛት - የውሂብ ማስተላለፍ ሁኔታ. ይገኛል፡ የውሂብ ማስተላለፍን ለማንቃት ማስተላለፍ፣ ለማሰናከል ቆመ
ትርጉም - ፕሮሰሰር ስሪት

ስሪቱ ሲፈጠር ነባሪ ወደ 0 ይሆናል፣ ነገር ግን እነዚህ መለኪያዎች ዘዴውን በመጠቀም ማግኘት ይችላሉ።

በ Apache NiFi ውስጥ የፍሰት አቅርቦትን በራስ-ሰር ማድረግ

ለባሽ ስክሪፕቶች አድናቂዎች ይህ ዘዴ ተስማሚ ሊመስል ይችላል ፣ ግን ለእኔ ትንሽ ከባድ ነው - የባሽ ስክሪፕቶች የእኔ ተወዳጅ አይደሉም። የሚቀጥለው ዘዴ በእኔ አስተያየት የበለጠ አስደሳች እና ምቹ ነው.

ኒፒኤፒአይ

NiPyAPI ከNiFi አጋጣሚዎች ጋር መስተጋብር ለመፍጠር የፓይዘን ቤተ-መጽሐፍት ነው። የሰነድ ገጽ ከቤተ-መጽሐፍት ጋር ለመስራት አስፈላጊውን መረጃ ይዟል. ፈጣን ጅምር በ ውስጥ ተገልጿል ፕሮጀክት በ github ላይ።

አወቃቀሩን ለመልቀቅ የእኛ ስክሪፕት በፓይዘን ውስጥ ያለ ፕሮግራም ነው። ወደ ኮድ ማውጣት እንሂድ።
ለቀጣይ ሥራ ውቅሮችን አዘጋጅተናል. የሚከተሉትን መለኪያዎች ያስፈልጉናል:

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

በመቀጠል የተገለጹትን የዚህን ቤተ-መጽሐፍት ዘዴዎች ስሞች አስገባለሁ እዚህ.

በመጠቀም መዝገቡን ከኒፊ ምሳሌ ጋር ያገናኙት።

nipyapi.versioning.create_registry_client

በዚህ ደረጃ ፣ መዝገቡ ቀድሞውኑ ወደ ምሳሌው መጨመሩን ቼክ ማከል ይችላሉ ፣ ለዚህም ዘዴውን መጠቀም ይችላሉ ።

nipyapi.versioning.list_registry_clients

በቅርጫት ውስጥ ፍሰትን ለመፈለግ ባልዲውን እናገኛለን

nipyapi.versioning.get_registry_bucket

የተገኘውን ባልዲ በመጠቀም, ፍሰትን እንፈልጋለን

nipyapi.versioning.get_flow_in_bucket

በመቀጠል, ይህ የሂደት ቡድን አስቀድሞ መጨመሩን መረዳት አስፈላጊ ነው. የሂደቱ ቡድኑ እንደ መጋጠሚያዎች ተቀምጧል እና ሁለተኛው አካል በአንዱ ላይ ሲደራረብ ሁኔታ ሊፈጠር ይችላል. አረጋግጫለሁ፣ ይሄ ሊከሰት ይችላል :) ሁሉንም የተጨመሩ የሂደት ቡድኖች ለማግኘት ዘዴውን እንጠቀማለን።

nipyapi.canvas.list_all_process_groups

ተጨማሪ ለምሳሌ በስም መፈለግ እንችላለን።

አብነቱን የማዘመን ሂደቱን አልገልጽም, እኔ እላለሁ በአቀነባባሪዎች በአዲሱ የአብነት ስሪት ውስጥ ከተጨመሩ, በወረፋው ውስጥ የመልእክት መኖር ምንም ችግሮች የሉም. ግን ፕሮሰሰሮች ከተወገዱ ችግሮች ሊፈጠሩ ይችላሉ (የመልእክት ወረፋ ከፊት ለፊት ከተከማቸ ኒፊ ፕሮሰሰር እንዲያስወግዱ አይፈቅድልዎትም)። ይህንን ችግር እንዴት እንደፈታሁት ፍላጎት ካሎት እባክዎን ይፃፉልኝ እና ስለዚህ ጉዳይ እንነጋገራለን ። በአንቀጹ መጨረሻ ላይ ያሉ እውቂያዎች። የሂደቱን ቡድን ወደ መጨመር ደረጃ እንሂድ።

ስክሪፕቱን በምፈታበት ጊዜ የቅርቡ የፍሰት ስሪት ሁል ጊዜ እንደማይጎተት ልዩ ሁኔታ አጋጥሞኛል፣ ስለዚህ ይህን ስሪት መጀመሪያ እንዲመለከቱ እመክራለሁ፡

nipyapi.versioning.get_latest_flow_ver

የሂደቱን ቡድን አሰማር

nipyapi.versioning.deploy_flow_version

ማቀነባበሪያዎችን እንጀምራለን-

nipyapi.canvas.schedule_process_group

ስለ CLI ብሎክ ውስጥ የውሂብ ማስተላለፍ በራስ-ሰር በርቀት ሂደት ቡድን ውስጥ እንደማይነቃ ተጽፏል? ስክሪፕቱን ስተገበር፣ እኔም ይህን ችግር አጋጥሞኝ ነበር። በዚያን ጊዜ፣ ኤፒአይን ተጠቅሜ የውሂብ ማስተላለፍ መጀመር አልቻልኩም እና ለNiPyAPI ቤተ-መጽሐፍት አዘጋጅ ለመጻፍ እና ምክር/እርዳታ ለመጠየቅ ወሰንኩ። ገንቢው ምላሽ ሰጠኝ, ችግሩን ተወያይተናል እና "አንድ ነገር ለመፈተሽ" ጊዜ እንደሚያስፈልገው ጻፈ. እና ከዚያ፣ ከጥቂት ቀናት በኋላ፣ የማስጀመሪያ ችግሬን የሚፈታ ተግባር በፓይዘን የተጻፈበት ደብዳቤ መጣ!!! በዚያን ጊዜ የኒፒኤፒአይ ስሪት 0.13.3 ነበር እና በእርግጥ እንደዚህ ያለ ነገር አልነበረም። ግን በቅርብ ጊዜ በተለቀቀው ስሪት 0.14.0, ይህ ተግባር ቀድሞውኑ በቤተ-መጽሐፍት ውስጥ ተካቷል. መገናኘት,

nipyapi.canvas.set_remote_process_group_transmission

ስለዚህ፣ የNiPyAPI ቤተ መፃህፍትን በመጠቀም መዝገቡን አገናኘን፣ ፍሰትን አውጥተናል፣ እና ፕሮሰሰር እና የውሂብ ማስተላለፍን እንኳን ጀመርን። ከዚያ ኮዱን ማበጠር, ሁሉንም አይነት ቼኮች ማከል, መግባት, እና ያ ብቻ ነው. ግን ያ ፈጽሞ የተለየ ታሪክ ነው።

ካሰብኳቸው አውቶሜሽን አማራጮች ውስጥ፣ የመጨረሻው በጣም ቀልጣፋ መስሎ ታየኝ። በመጀመሪያ ፣ ይህ አሁንም የፓይቶን ኮድ ነው ፣ በውስጡም ረዳት የፕሮግራም ኮድን መክተት እና ሁሉንም የፕሮግራም አወጣጥ ቋንቋ ጥቅሞች መጠቀም ይችላሉ። በሁለተኛ ደረጃ, የኒፒኤፒአይ ፕሮጀክት በንቃት እያደገ ነው እና ችግሮች ካጋጠሙ ለገንቢው መጻፍ ይችላሉ. በሶስተኛ ደረጃ፣ NiPyAPI ውስብስብ ችግሮችን ለመፍታት ከNiFi ጋር ለመገናኘት አሁንም የበለጠ ተለዋዋጭ መሳሪያ ነው። ለምሳሌ፣ የመልእክት ወረፋዎች አሁን በፍሰቱ ውስጥ ባዶ መሆናቸውን እና የሂደቱ ቡድን መዘመን ይቻል እንደሆነ በመወሰን።

ይኼው ነው. በNiFi ውስጥ የፍሰት አቅርቦትን በራስ ሰር ለመስራት 3 አቀራረቦችን፣ ገንቢ ሊያጋጥማቸው የሚችለውን ወጥመዶች እና የማድረስ ሂደትን በራስ-ሰር ለመስራት የስራ ኮድ ሰጥቻለሁ። በዚህ ርዕስ ላይ እንደ እኔ ፍላጎት ካሎት - ጻፍ!

ምንጭ: hab.com

አስተያየት ያክሉ