{"id":56980,"date":"2023-03-27T09:18:40","date_gmt":"2023-03-27T03:48:40","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=56980"},"modified":"2023-04-05T09:21:43","modified_gmt":"2023-04-05T03:51:43","slug":"no-code-data-ingestion-framework-using-nifi","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/no-code-data-ingestion-framework-using-nifi\/","title":{"rendered":"No Code Data Ingestion Framework using NiFi"},"content":{"rendered":"<h2><b>Data Ingestion:<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Data ingestion is the transportation of data from assorted sources to a storage medium where it can be accessed, used, and analyzed by an organization. The destination is typically a data warehouse, data mart, database, or a document store.Sources can be from\u00a0 RDBMS like MySql, Oracle, Postgres, File based like FTP,SFTP,Rest api\u2019s,Streaming .The data ingestion layer is the backbone of any data engineering architecture.<\/span><\/p>\n<p style=\"text-align: center;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <img decoding=\"async\" loading=\"lazy\" class=\"wp-image-56966 alignnone\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-300x176.png\" alt=\"\" width=\"464\" height=\"272\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-300x176.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-624x367.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image.png 665w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/p>\n<h1><b>APACHE NIFI<\/b><\/h1>\n<h3><span style=\"font-weight: 400;\"><strong>What is Apache Nifi?<br \/>\n<\/strong>\u00a0<\/span><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56967\" style=\"font-weight: 400; font-size: 16px;\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-1-2-300x150.png\" alt=\"\" width=\"80\" height=\"40\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-1-2-300x150.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-1-2.png 512w\" sizes=\"(max-width: 80px) 100vw, 80px\" \/><\/h3>\n<p><span style=\"font-weight: 400;\">Apache NiFi is one of the key tools in the area of Data Engineering and Big Data. It is primarily used for Data Ingestion and Orchestration. It is a real-time data ingestion platform, which can transfer and manage data transfer between different sources and destination systems. This supports a wide variety of data sources and protocols making this platform popular in many IT organizations.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\"><strong>What are NiFi Rest Api&#8217;s?<\/strong><br \/>\n<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">One of the key features of NiFi is its REST API, which allows developers to interact with the platform programmatically. The API provides a range of endpoints that can be used to manage NiFi&#8217;s configuration, data flows, and monitoring. <\/span><span style=\"font-weight: 400;\">One of the key benefits of the REST API is its ability to automate common tasks, such as creating data flows, starting and stopping processors, and retrieving data flow metrics. Developers can use the API to create custom scripts and applications that interact with NiFi, enabling them to automate their data integration processes.<\/span><\/p>\n<p><b>How are we Using Nifi?<\/p>\n<p><\/b><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-56972 aligncenter\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-1-300x82.png\" alt=\"\" width=\"417\" height=\"114\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-1-300x82.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-1-1024x279.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-1-768x209.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-1-1536x418.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-1-624x170.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-1.png 1924w\" sizes=\"(max-width: 417px) 100vw, 417px\" \/>We have automated the ingestion process using the NiFi framework by calling the nifi restapi&#8217;s. We have written a wrapper on NiPyApi to call the NiFi rest API. Through this, we are able to create data flows, start and stop the processors, retrieve the data from the processors and run end-to-end ingestion while monitoring every step of the process. The information is passed to the api\u2019s using json files.<\/p>\n<h3><b>Processor Group Flow<\/b><\/h3>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-56976 aligncenter\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-42-10.png\" alt=\"\" width=\"995\" height=\"504\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-42-10.png 1549w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-42-10-300x152.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-42-10-1024x518.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-42-10-768x389.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-42-10-1536x777.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-42-10-624x316.png 624w\" sizes=\"(max-width: 995px) 100vw, 995px\" \/><\/p>\n<h3><b>Basic Features of NIMBUS NiFi:\u00a0<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nimbus-NiFi enables users to ingest data from multiple sources into different destinations.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">\u00a0No need to write any script or code.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The user doesn\u2019t need to worry about the configurations.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Users must provide the source and destination details in easily configurable json files, and Nimbus-NiFi will handle the rest.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Support for both SSL and NON SSL.<\/span><\/li>\n<\/ul>\n<h3><b>Support for Multiple Sources And Destination<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\"><b>Supported Sources<\/b><span style=\"font-weight: 400;\">:<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">RDBMS<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Mysql<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Oracle<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">PostgreSQL<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">SFTP\/FTP<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><b>Supported Destinations<\/b><span style=\"font-weight: 400;\">:<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">S3<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">HDFS<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56973\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-2-273x300.png\" alt=\"\" width=\"284\" height=\"312\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-2-273x300.png 273w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/image-2.png 416w\" sizes=\"(max-width: 284px) 100vw, 284px\" \/><\/p>\n<h2><strong>How to use Nimbus-NiFi?\u00a0<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-56970\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-5-300x105.png\" alt=\"\" width=\"269\" height=\"94\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-5-300x105.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-5-1024x358.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-5-768x268.png 768w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-5-1536x536.png 1536w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-5-624x218.png 624w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/unnamed-5.png 1844w\" sizes=\"(max-width: 269px) 100vw, 269px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create the config.json file.<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-56979\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-48-27-300x135.png\" alt=\"\" width=\"300\" height=\"135\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-48-27-300x135.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-48-27.png 519w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create the setup.json file according to your source and destination.<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-56978\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-48-52-300x155.png\" alt=\"\" width=\"300\" height=\"155\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-48-52-300x155.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-48-52.png 561w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Make a ingestion.json file according to your source and destination.<\/span><\/li>\n<\/ul>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-56977\" src=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-49-43-300x266.png\" alt=\"\" width=\"300\" height=\"266\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-49-43-300x266.png 300w, \/blog\/wp-ttn-blog\/uploads\/2023\/03\/Screenshot-from-2023-03-28-14-49-43.png 492w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Run these command on terminal\u00a0<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">python setup.py install<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">nimbus_env &#8211;f {path to your setup.json file} &#8211;c {path to your config.json file} to set up the NiFi environment.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">run_ingestion &#8211;f {path to your ingestion.json file} &#8211;c {path to your config.json file} to run the ingestion.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">You can also refer to our open-source project: <\/span><b>https:\/\/github.com\/tothenew\/nimbus-nifi<\/b><\/p>\n<div class=\"ap-custom-wrapper\"><\/div><!--ap-custom-wrapper-->","protected":false},"excerpt":{"rendered":"<p>Data Ingestion: Data ingestion is the transportation of data from assorted sources to a storage medium where it can be accessed, used, and analyzed by an organization. The destination is typically a data warehouse, data mart, database, or a document store.Sources can be from\u00a0 RDBMS like MySql, Oracle, Postgres, File based like FTP,SFTP,Rest api\u2019s,Streaming .The [&hellip;]<\/p>\n","protected":false},"author":1566,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":84},"categories":[1395],"tags":[5150],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/56980"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1566"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=56980"}],"version-history":[{"count":2,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/56980\/revisions"}],"predecessor-version":[{"id":57043,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/56980\/revisions\/57043"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=56980"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=56980"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=56980"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}