{"id":37567,"date":"2019-10-31T22:18:22","date_gmt":"2019-10-31T19:18:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\/"},"modified":"2019-10-31T22:18:22","modified_gmt":"2019-10-31T19:18:22","slug":"apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","title":{"rendered":"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Sissejuhatus<\/h3>\n<p><\/p>\n<p>Minu praeguses t\u00f6\u00f6kohas olen pidanud tutvuma selle tehnoloogiaga. Alustan v\u00e4ikese taustaga. \u00dches j\u00e4rgmisel kohtumisel \u00f6eldi meie meeskonnale, et peame looma integreerimise <em>tuntud s\u00fcsteemiga<\/em>. \u041f\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u0430 \u043c\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0441\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u044b \u0432 \u0432\u0438\u0434\u0435 SOAP \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f. \u0412\u0440\u043e\u0434\u0435 \u0432\u0441\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u043e. \u0418\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e&#8230;<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3>\u00dclesanne<\/h3>\n<p><\/p>\n<p>Luuakse 3 teenust. Esimene neist on Andmebaasi uuendamise teenus. See teenus, kui saabub uusi andmeid kolmandalt s\u00fcsteemilt, uuendab andmeid andmebaasis ja genereerib mingi CSV formaadis faili, et edastada see j\u00e4rgmisele s\u00fcsteemile. Kutsutakse esile teise teenuse, Faili transportimise teenuse, l\u00f5pp-punkt, mis saab saadetud faili, valideerib selle ja laadib FTP kaudu failide s\u00e4ilitamisesse. Kolmas teenus, Andmete edastamise teenus tarbijale, t\u00f6\u00f6tab as\u00fcnkroonselt kahe esimese teenusega. See v\u00f5tab vastu p\u00e4ringu v\u00e4liselt s\u00fcsteemilt, et saada varem mainitud faili, v\u00f5tab valmis vastuse faili, muudab seda (uuendab id, description, linkToFile v\u00e4ljad) ja edastab vastuse SOAP s\u00f5numina. Kokkuv\u00f5ttes on olukord j\u00e4rgmine: esimesed kaks teenust alustavad oma t\u00f6\u00f6d ainult siis, kui saabuvad andmed uuendamiseks. Kolmas teenus t\u00f6\u00f6tab pidevalt, kuna teabe tarbijaid on palju, ligikaudu 1000 p\u00e4ringut andmete saamiseks minutis. Teenused on pidevalt k\u00e4ttesaadavad ja nende instantsid asuvad erinevates keskkondades, nagu test, demo, ettevalmistus ja tootmine. Allpool on toodud nende teenuste t\u00f6\u00f6 skeem. M\u00e4rgin kohe, et m\u00f5ned detailid on lihtsustatud, et v\u00e4ltida liigset keerukust.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/1edca5d5e917d8ac55ac96e892e816dd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"tehnicheskoe-uglublenie\">Tehniline s\u00fcvenemine<\/h3>\n<p><\/p>\n<p>Probleemi lahendamiseks otsustasime esmalt v\u00e4lja arendada rakendusi Java keeles, kasutades Spring Framework'i, Nginx'i koormuse tasakaalustajana, Postgres'i andmebaasi ning muid tehnilisi ja v\u00e4hem tehnilisi lahendusi. Kuna tehnilise lahenduse s\u00fcvendamine v\u00f5imaldas arvesse v\u00f5tta ka teisi l\u00e4henemisviise, suunati pilk uuenduslikule Apache NIFI tehnoloogiale, mis on \u00fcha populaarsem teatud ringkondades. Pean kohe \u00fctlema, et see tehnoloogia aitas meil avastada need 3 teenust. Selles artiklis k\u00e4sitletakse faili transportimise teenuse ja andmete edastamise teenuse v\u00e4ljat\u00f6\u00f6tamist, kuid kui artikkel osutub huvitavaks, kirjutan ka andmete v\u00e4rskendamise teenusest andmebaasis.<\/p>\n<p><\/p>\n<h3 id=\"chto-eto-takoe\">Mis see on<\/h3>\n<p><\/p>\n<p>NIFI esindab enda all jaotatud arhitektuuri kiireks paralleelseks andmete laadimiseks ja t\u00f6\u00f6tlemiseks, seal on suur hulk pistikprogramme allikatele ja teisendustele, konfigureerimise versioonimine ja palju muud. Meeldiv boonus on see, et see on v\u00e4ga lihtne kasutada. Triviaalset protsessi, n\u00e4iteks getFile, sendHttpRequest ja teised, saab kujutada ruutudena. Iga ruut esindab mingit protsessi, mille vahelisi seoseid saab n\u00e4ha alloleval joonisel. \u00dcksikasjalikum dokumentatsioon protsesside seadistamisest ja koostamisest on kirjutatud <noindex><a rel=\"nofollow\" href=\"https:\/\/nifi.apache.org\/docs.html\">siin<\/a><\/noindex> , nende jaoks, kes r\u00e4\u00e4givad vene keelt \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.arenadata.io\/ads\/UserNIFI\/index.html\">siin<\/a><\/noindex>. Dokumentatsioonis on suurep\u00e4raselt selgitatud, kuidas NIFI lahti pakkida ja k\u00e4ivitada ning samuti, kuidas luua protsesse, mida nimetatakse ruutudeks.<br \/>\nArtikli kirjutamise idee tekkis p\u00e4rast pikaajalisi otsinguid ja saadud teabe struktureerimist millekski m\u00f5istetavaks, samuti soovist natuke kergendada tulevaste arendajate elu.<\/p>\n<p><\/p>\n<h3 id=\"primer\">N\u00e4ide<\/h3>\n<p><\/p>\n<p>Vaatame, kuidas ruudud omavahel suhtlevad. \u00dcldine skeem on \u00fcsna lihtne: saame HTTP p\u00e4ringu (teoreetiliselt failiga p\u00e4ringu kehas. NIFI v\u00f5imaluste demonstreerimiseks algab k\u00e4esolevas n\u00e4ites p\u00e4ring faili saamise protsessi kohalikust failihaldusest), seej\u00e4rel saadame vastuse tagasi, et p\u00e4ring on saadud, samal ajal k\u00e4ivitub faili saamise protsess failihalduses ja seej\u00e4rel tuleb faili edastamine FTP kaudu. On oluline m\u00e4rkida, et protsessid suhtlevad omavahel nn flowFile'i kaudu. See on NIFI p\u00f5hielement, mis salvestab atribuute ja sisu. Sisu t\u00e4hendab andmeid, mis esindavad voofaili. Teisis\u00f5nu, kui saad faili \u00fchest ruudust ja edastad selle teise, on sisu see fail.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/2649a29dcc9155ae7734db44fc6d3f9a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nagu n\u00e4ete \u2014 sellel joonisel on kujutatud \u00fcldine protsess. HandleHttpRequest \u2014 t\u00f6\u00f6tab p\u00e4ringute vastuv\u00f5tjana, ReplaceText \u2014 genereerib vastuse keha, HandleHttpResponse \u2014 saadab vastuse. FetchFile \u2014 saadab faili failihaldusest ja edastab selle ruudule PutSftp \u2014 asetab selle faili FTP-sse, m\u00e4\u00e4ratud aadressile. N\u00fc\u00fcd vaatame seda protsessi p\u00f5hjalikumalt. <\/p>\n<p><\/p>\n<p>Antud juhul on k\u00f5ik algus p\u00e4ringust. Vaatame selle konfiguratsiooniparameetreid. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/cf93a09a10ed9aebaae2c10b93619658.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nSiin on k\u00f5ik \u00fcsna triviaalne, v\u00e4lja arvatud StandartHttpContextMap \u2014 see on teenus, mis v\u00f5imaldab p\u00e4ringute saatmist ja vastuv\u00f5ttu. T\u00e4iendavaid \u00fcksikasju ja n\u00e4iteid saab vaadata \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/ddewaele.github.io\/http-communication-with-apache-nifi\/\">siin<\/a><\/noindex><\/p>\n<p>J\u00e4rgmisena vaatame ReplaceText ruudu konfiguratsiooniparameetreid. Siin tasub t\u00e4helepanu p\u00f6\u00f6rata ReplacementValue'le \u2014 see on see, mis naaseb kasutajale vastusena. Seadetest saab reguleerida logimise taset, logisid saab vaadata {kuhu pakkisite nifi}\/nifi-1.9.2\/logs seal on ka failure\/success parameetrid \u2014 nende p\u00f5hjal saad reguleerida protsessi \u00fcldiselt. St juhul, kui teksti s\u00e4ilitamine on \u00f5nnestunud \u2014 k\u00e4ivitatakse protsess kasutajale vastuse saatmiseks, vastasel juhul lihtsalt logime eba\u00f5nnestunud protsessi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/97341fd7f6ea34a219a16c2c732a8062.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>HandleHttpResponse omadustes pole erilist huvitavat, v\u00e4lja arvatud staatus, kui vastus on edukalt loodud. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/6082c84f81274927fdfbd20378cc252c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oleme aru saanud p\u00e4ringu ja vastuse osast \u2014 liikume edasi faili saamise ja selle paigaldamise juurde FTP-serverisse. FetchFile \u2014 saadab faili m\u00e4\u00e4ratud tee j\u00e4rgi ja edastab selle j\u00e4rgmisele protsessile. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/d1368879e13a223404a53ab623ae4079.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ja j\u00e4rgmine ruut PutSftp - paigutab faili failihoidlasse. Konfiguratsiooni m\u00e4\u00e4rangud on allpool n\u00e4htavad.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/c22648f39bb0ad4e7209911e614d3edf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tasub p\u00f6\u00f6rata t\u00e4helepanu sellele, et iga ruut on eraldi protsess, mis peab olema k\u00e4ivitatud. Vaatasime \u00fcle k\u00f5ige lihtsama n\u00e4ite, mis ei vaja mingit keerulist kohandamist. J\u00e4rgmine on veidi keerulisem protsess, kus kirjutame natuke groovi. <\/p>\n<p><\/p>\n<h3 id=\"bolee-slozhnyy-primer\">T\u00e4psem n\u00e4ide<\/h3>\n<p><\/p>\n<p>Andmete edastamise teenus osutus veidi keerulisemaks kuna see h\u00f5lmas SOAP-s\u00f5numi muutmise protsessi. \u00dcldine protsess on kujutatud alloleval joonisel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/c48aa08c030cc252f9e53ce877329701.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Siin pole idee eriti keeruline: saime tarbijalt p\u00e4ringu, et tal on andmeid vaja, saatsime vastuse, et oleme s\u00f5numi k\u00e4tte saanud, k\u00e4ivitasime faili vastuse saamise protsessi, seej\u00e4rel redigeerisime seda teatud loogika kohaselt, p\u00e4rast mida edastatud fail tarbijale SOAP-s\u00f5numina serverisse. <\/p>\n<p><\/p>\n<p>Ma arvan, et ei ole vaja uuesti kirjeldada neid ruute, mida me n\u00e4gime eespool - liigume kohe uute juurde. Kui teil on vaja redigeerida m\u00f5nda faili ja tavalised ruudud nagu ReplaceText ei sobi, peate kirjutama enda skripti. Seda saab teha ExecuteGroogyScript ruudu abil. Selle seadistused on allpool esitatud.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/42d6691cf608b1620774426eae7b7027.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>On this square, there are two options for uploading a script. The first is by uploading a file with the script. The second is by inserting the script into scriptBody. As far as I know, the executeScript square supports multiple programming languages \u2014 one of them being Groovy. I must disappoint Java developers \u2014 scripts cannot be written in such squares using Java. For those who are very eager \u2014 you need to create your custom square and integrate it into the NIFI system. This entire operation is accompanied by quite lengthy sacrifices, which we won't cover in this article. I chose the Groovy language. Below is a test script that simply increments the ID in the SOAP message. It is important to note that you take the file from flowFile, update it, and do not forget to place it back there, updated. Also, it is worth noting that not all libraries are connected. It may turn out that you have to import one of the libs. Another downside is that debugging the script in this square is quite difficult. There is a way to connect to the NIFI JVM and start the debugging process. Personally, I ran a local application and mimicked receiving a file from a session. I also debugged locally. The errors that pop up during the script upload can be easily googled and are logged by NIFI itself.<\/p>\n<p><\/p>\n<pre><code class=\"java\">import org.apache.commons.io.IOUtils\nimport groovy.xml.XmlUtil\nimport java.nio.charset.*\nimport groovy.xml.StreamingMarkupBuilder\n\ndef flowFile = session.get()\nif (!flowFile) return\ntry {\n    flowFile = session.write(flowFile, { inputStream, outputStream -&gt;\n        String result = IOUtils.toString(inputStream, \"UTF-8\");\n        def recordIn = new XmlSlurper().parseText(result)\n        def element = recordIn.depthFirst().find {\n            it.name() == 'id'\n        }\n\n        def newId = Integer.parseInt(element.toString()) + 1\n        def recordOut = new XmlSlurper().parseText(result)\n        recordOut.Body.ClientMessage.RequestMessage.RequestContent.content.MessagePrimaryContent.ResponseBody.id = newId\n\n        def res = new StreamingMarkupBuilder().bind { mkp.yield recordOut }.toString()\n        outputStream.write(res.getBytes(StandardCharsets.UTF_8))\n} as StreamCallback)\n     session.transfer(flowFile, REL_SUCCESS)\n}\ncatch(Exception e) {\n    log.error(\"Error during processing of validate.groovy\", e)\n    session.transfer(flowFile, REL_FAILURE)\n}<\/code><\/pre>\n<p><\/p>\n<p>This is where the customization of the square ends. The updated file is then sent to the square that handles sending the file to the server. Below are the settings for this square.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/706c53d8deaf3d1ef47bd337e639197a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>We describe the method that will be used to send the SOAP message. We specify where. Next, we need to indicate that this is specifically SOAP.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 L\u00fchike \u00fclevaade v\u00f5imalustest praktikas\" src=\"\/wp-content\/uploads\/2019\/08\/7206bc2a1c66a0204c0589daf35fd328.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lisame m\u00f5ned omadused, nagu host ja tegevus(soapAction). Salvestame ja kontrollime. Soodsamate SOAP-p\u00e4ringute saatmise kohta saab l\u00e4hemalt lugeda. <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/49457764\/nifi-how-to-use-invokehttp-processor-with-soap\/49565048\">siit<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Oleme uurinud mitmeid viise NIFI protsesside kasutamiseks. Kuidas need omavahel suhtlevad ja milline on nende tegelik kasu. Uuritud n\u00e4ited on katse olemuselt ja veidi erinevad sellest, mis tegelikult tootmises toimub. Loodan, et see artikkel on arendajatele m\u00f5nev\u00f5rra kasulik. Ait\u00e4h t\u00e4helepanu eest. Kui teil on k\u00fcsimusi, kirjutage julgelt. Proovin vastata.<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465299\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043c\u0438\u0442\u0438\u043d\u0433\u0435, \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041f\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u0430 \u043c\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0441\u043b\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28196,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-37567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Apache NIFI \u2014 \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:18:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Apache NIFI \u2014 Praktikas v\u00f5imaluste l\u00fchike \u00fclevaade | ProHoster","description":"Sissejuhatus. Juhuslikult olen oma praeguses t\u00f6\u00f6koht, pidanud tutvuma selle tehnoloogiaga. Alustan v\u00e4ikese eelajaloo jutustamisega.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Apache NIFI \u2014 \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster","og:description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438.","og:url":"https:\/\/prohoster.info\/et\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:18:22+00:00","article:modified_time":"2019-10-31T19:18:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37567","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:24:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:24:24","updated":"2026-01-23 18:24:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/37567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=37567"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/37567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/28196"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=37567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=37567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=37567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}