Apache NiFi ۾ فلو پهچائڻ آٽوميشن

سلام هر!

Apache NiFi ۾ فلو پهچائڻ آٽوميشن

ڪم هن ريت آهي - مٿي ڏنل تصوير ۾ ڏيکاريل هڪ وهڪري آهي، جنهن کي اين سرورز سان گڏ ڪرڻ جي ضرورت آهي. Apache NiFi. فلو ٽيسٽ - هڪ فائل ٺاهي وڃي ٿي ۽ ٻي ني فائي مثال ڏانهن موڪليو وڃي. ڊيٽا جي منتقلي ٿئي ٿي NiFi سائيٽ کان سائيٽ پروٽوڪول استعمال ڪندي.

NiFi سائيٽ ٽو سائٽ (S2S) ھڪڙو محفوظ، انتهائي حسب ضرورت طريقو آھي جيڪو NiFi مثالن جي وچ ۾ ڊيٽا جي منتقلي لاءِ. ڏسو ڪيئن S2S ڪم ڪري ٿو دستاويز ۽ S2S ڏسڻ جي اجازت ڏيڻ لاءِ توهان جي NiFi مثال قائم ڪرڻ لاءِ ياد رکڻ ضروري آهي هتي.

جڏهن اهو S2S استعمال ڪندي ڊيٽا جي منتقلي تي اچي ٿو، هڪ مثال کي ڪلائنٽ سڏيو ويندو آهي، ٻيو هڪ سرور آهي. ڪلائنٽ ڊيٽا موڪلي ٿو، سرور ان کي وصول ڪري ٿو. انهن جي وچ ۾ ڊيٽا جي منتقلي کي ترتيب ڏيڻ لاء ٻه طريقا:

  1. پڪو. ڊيٽا ڪلائنٽ مثال مان موڪليو ويو آهي ريموٽ پروسيس گروپ (RPG) استعمال ڪندي. سرور جي مثال تي، ڊيٽا ان پٽ پورٽ استعمال ڪندي ملي ٿي
  2. پل. سرور آر پي جي استعمال ڪندي ڊيٽا وصول ڪري ٿو، ڪلائنٽ موڪلي ٿو ٻاھرين پورٽ استعمال ڪندي.


رولنگ لاء فلو Apache رجسٽري ۾ ذخيرو ٿيل آهي.

Apache NiFi رجسٽري Apache NiFi جو هڪ ذيلي منصوبو آهي جيڪو هڪ فلو اسٽوريج ۽ ورزننگ ٽول مهيا ڪري ٿو. GIT جو هڪ قسم. انسٽال ڪرڻ، ترتيب ڏيڻ ۽ رجسٽري سان ڪم ڪرڻ بابت معلومات ملي سگھن ٿا سرڪاري دستاويز. اسٽوريج لاء فلو هڪ پروسيس گروپ ۾ گڏ ڪيو ويو آهي ۽ هن فارم ۾ رجسٽري ۾ ذخيرو ٿيل آهي. اسان هن مضمون ۾ بعد ۾ واپس ڪنداسين.

شروعات ۾، جڏهن N هڪ ننڍڙو نمبر آهي، وهڪري پهچايو ويندو آهي ۽ هٿ سان هڪ مناسب وقت ۾ اپڊيٽ ڪيو ويندو آهي.

پر جيئن ن وڌندو آهي، اتي وڌيڪ مسئلا آهن:

  1. وهڪري کي اپڊيٽ ڪرڻ ۾ وڌيڪ وقت لڳندو آهي. توھان کي سڀني سرورن ڏانھن وڃڻ گھرجي
  2. ٽيمپليٽ کي اپڊيٽ ڪرڻ ۾ غلطيون آهن. هتي انهن کي اپڊيٽ ڪيو، پر هتي اهي وساري ويا
  3. انساني غلطي جڏهن هڪجهڙائي واري عمل جي وڏي تعداد کي انجام ڏئي ٿي

هي سڀ اسان کي حقيقت ڏانهن آڻيندو آهي ته اهو عمل کي خودڪار ڪرڻ ضروري آهي. مون هن مسئلي کي حل ڪرڻ لاء هيٺين طريقن جي ڪوشش ڪئي آهي:

  1. NiFi جي بدران MiNiFi استعمال ڪريو
  2. NiFi CLI
  3. NiPyAPI

MiNiFi استعمال ڪندي

ApacheMiNify Apache NiFi جو هڪ ذيلي منصوبو آهي. MiNiFy ھڪڙو ڪمپيڪٽ ايجنٽ آھي جيڪو ساڳيو پروسيسرز استعمال ڪري ٿو NiFi، توھان کي اجازت ڏئي ٿو اھو ساڳيو وهڪرو ٺاھيو جيئن NiFi ۾. ايجنٽ جي روشني حاصل ڪئي وئي آهي، ٻين شين جي وچ ۾، حقيقت اها آهي ته MiNiFy وٽ فلو جي ترتيب لاء گرافڪ انٽرفيس نه آهي. MiNiFy جي گرافيڪل انٽرفيس جي کوٽ جو مطلب اهو آهي ته اهو ضروري آهي ته minifi ۾ وهڪري جي ترسيل جو مسئلو حل ڪيو وڃي. جيئن ته MiNiFy IOT ۾ فعال طور تي استعمال ڪيو ويو آهي، اتي ڪيترائي حصا آهن ۽ آخري minifi مثالن تائين وهڪري کي پهچائڻ جو عمل خودڪار ٿيڻ گهرجي. هڪ واقف ڪم، صحيح؟

ٻيو ذيلي پروجيڪٽ، MiNiFi C2 سرور، هن مسئلي کي حل ڪرڻ ۾ مدد ڪندو. ھن پراڊڪٽ جو مقصد آھي مرڪزي نقطو ٺاھڻ جي فن تعمير ۾. ماحول کي ڪيئن ترتيب ڏيڻ - بيان ڪيو ويو آهي اهو مضمون Habré تي ۽ معلومات مسئلو حل ڪرڻ لاء ڪافي آهي. MiNiFi C2 سرور سان گڏ پاڻمرادو ان جي ترتيب کي اپڊيٽ ڪري ٿو. هن طريقي جي صرف خرابي اها آهي ته توهان کي C2 سرور تي ٽيمپليٽ ٺاهڻو پوندو، رجسٽري لاء هڪ سادي عزم ڪافي ناهي.

مٿي ڏنل مضمون ۾ بيان ڪيل اختيار ڪم ڪري رهيو آهي ۽ لاڳو ڪرڻ ڏکيو ناهي، پر اسان کي هيٺ ڏنل نه وسارڻ گهرجي:

  1. minifi وٽ nifi کان سڀ پروسيسر نه آهن
  2. Minifi ۾ سي پي يو ورجن 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 مثالن جي ضرورت آهي. اچو ته فرض ڪريو ته Push طريقو چونڊيو ويو سرور ڏانهن ڊيٽا کي منتقل ڪرڻ لاء. ڊيٽا جي منتقلي کي منظم ڪرڻ لاء، ضروري آهي ته شامل ڪيل ريموٽ پروسيس گروپ (RPG) تي ڊيٽا جي منتقلي (ٽرانسميٽنگ کي فعال ڪريو)، جيڪو اڳ ۾ ئي اسان جي وهڪري ۾ شامل آهي.

Apache NiFi ۾ فلو پهچائڻ آٽوميشن

CLI ۽ ٻين ذريعن ۾ دستاويزن ۾، مون کي ڊيٽا جي منتقلي کي چالو ڪرڻ جو طريقو نه مليو. جيڪڏھن توھان ڄاڻو ٿا ته اھو ڪيئن ڪجي، مھرباني ڪري تبصرن ۾ لکو.

جيئن ته اسان وٽ بيش آهي ۽ اسان آخر تائين وڃڻ لاءِ تيار آهيون، اسان هڪ رستو ڳولينداسين! توھان استعمال ڪري سگھوٿا NiFi API ھن مسئلي کي حل ڪرڻ لاءِ. اچو ته هيٺ ڏنل طريقو استعمال ڪريو، اسان مٿي ڏنل مثالن مان ID وٺي سگهون ٿا (اسان جي صورت ۾ اهو آهي 7f522a13-016e-1000-e504-d5b15587f2f3). NiFi API طريقن جي وضاحت هتي.

Apache NiFi ۾ فلو پهچائڻ آٽوميشن
جسم ۾، توھان کي ھيٺ ڏنل فارم جي JSON پاس ڪرڻ جي ضرورت آھي:

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

پيرا ميٽرس جيڪي ڀرڻ گهرجن "ڪم" ڪرڻ لاءِ:
رياست - ڊيٽا جي منتقلي جي صورتحال. دستياب TRANSMITTING ڊيٽا جي منتقلي کي فعال ڪرڻ لاءِ، بند ڪرڻ لاءِ بند ڪيو ويو
نسخو - پروسيسر ورزن

ورزن ڊفالٽ ٿيندو 0 تي جڏھن ٺاھيو ويو، پر اھي پيٽرول حاصل ڪري سگھجن ٿا طريقا استعمال ڪندي

Apache NiFi ۾ فلو پهچائڻ آٽوميشن

بيش اسڪرپٽس جي شوقينن لاءِ، ھي طريقو مناسب لڳي سگھي ٿو، پر اھو مون لاءِ مشڪل آھي - بيش اسڪرپٽ منھنجي پسنديده ناھن. ايندڙ طريقو منهنجي خيال ۾ وڌيڪ دلچسپ ۽ وڌيڪ آسان آهي.

NiPyAPI

NiPyAPI هڪ Python لائبريري آهي 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, которое подтягиваем

اڳتي هلي مان هن لائبريريءَ جي طريقن جا نالا داخل ڪندس، جيڪي بيان ڪيا ويا آهن هتي.

اسان رجسٽري کي استعمال ڪندي nifi مثال سان ڳنڍيندا آهيون

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 بابت بلاڪ ۾، اهو لکيو ويو ته ريموٽ پروسيس گروپ ۾ ڊيٽا جي منتقلي خودڪار طريقي سان فعال نه آهي؟ جڏهن اسڪرپٽ کي لاڳو ڪرڻ، مون کي پڻ هن مسئلي جو سامنا ڪيو. ان وقت، مان API کي استعمال ڪندي ڊيٽا جي منتقلي شروع نه ڪري سگهيو آهيان ۽ مون فيصلو ڪيو ته NiPyAPI لائبريري جي ڊولپر ڏانهن لکڻ ۽ صلاح / مدد لاءِ پڇو. ڊولپر مون کي جواب ڏنو، اسان مسئلي تي بحث ڪيو ۽ هن لکيو ته هن کي "ڪجهه چيڪ ڪرڻ" لاء وقت جي ضرورت آهي. ۽ هاڻي، ڪجهه ڏينهن بعد، هڪ اي ميل اچي ٿي جنهن ۾ هڪ Python فنڪشن لکيل آهي جيڪو منهنجي شروعاتي مسئلو حل ڪري ٿو !!! ان وقت، NiPyAPI نسخو 0.13.3 هو ۽، يقينا، ان ۾ قسم جو ڪجھ به نه هو. پر نسخو 0.14.0 ۾، جيڪو تازو جاري ڪيو ويو هو، هي فنڪشن اڳ ۾ ئي لائبريري ۾ شامل ڪيو ويو آهي. ملن

nipyapi.canvas.set_remote_process_group_transmission

تنهن ڪري، NiPyAPI لائبريري جي مدد سان، اسان رجسٽري کي ڳنڍيو، وهڪري کي وڌايو، ۽ اڃا تائين پروسيسرز ۽ ڊيٽا جي منتقلي کي شروع ڪيو. پوءِ توھان ڪوڊ گڏ ڪري سگھوٿا، ھر قسم جا چيڪ شامل ڪري سگھو ٿا، لاگنگ ڪري سگھو ٿا ۽ بس. پر اهو هڪ مڪمل طور تي مختلف ڪهاڻي آهي.

آٽوميشن جي اختيارن مان جن تي مون غور ڪيو، بعد ۾ مون کي سڀ کان وڌيڪ ڪارائتو لڳي. سڀ کان پهريان، اهو اڃا تائين پٿون ڪوڊ آهي، جنهن ۾ توهان معاون پروگرام ڪوڊ شامل ڪري سگهو ٿا ۽ پروگرامنگ ٻولي جو پورو فائدو وٺي سگهو ٿا. ٻيو، NiPyAPI پروجيڪٽ فعال طور تي ترقي ڪري رهيو آهي ۽ مسئلن جي صورت ۾ توهان ڊولپر ڏانهن لکي سگهو ٿا. ٽيون، NiPyAPI اڃا تائين پيچيده مسئلن کي حل ڪرڻ ۾ NiFi سان رابطي لاءِ وڌيڪ لچڪدار اوزار آهي. مثال طور، اهو طئي ڪرڻ ۾ ته ڇا پيغام جون قطارون هن وقت وهڪري ۾ خالي آهن ۽ ڇا اهو عمل گروپ کي اپڊيٽ ڪرڻ ممڪن آهي.

اهو ئي سڀ ڪجهه آهي. مون بيان ڪيو آهي 3 طريقن کي خودڪار ڪرڻ جي وهڪري جي ترسيل لاءِ NiFi ۾، اهي نقصان جيڪي هڪ ڊولپر کي منهن ڏئي سگهي ٿو ۽ خودڪار ترسيل لاءِ ڪم ڪندڙ ڪوڊ مهيا ڪيو. جيڪڏهن توهان صرف هن موضوع ۾ دلچسپي وٺندا آهيو جيئن آئون آهيان - لکو!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو