Member since
07-30-2019
3406
Posts
1622
Kudos Received
1008
Solutions
My Accepted Solutions
| Title | Views | Posted |
|---|---|---|
| 188 | 12-17-2025 05:55 AM | |
| 249 | 12-15-2025 01:29 PM | |
| 183 | 12-15-2025 06:50 AM | |
| 278 | 12-05-2025 08:25 AM | |
| 467 | 12-03-2025 10:21 AM |
05-06-2021
01:21 PM
@Dmitry Trying to fully understand your use case here... You have 1 to many FlowFile where you want to merge the content of each of those FlowFiles in to a single FlowFile if all those FlowFile have an attribute "manager_name" with the same value? If so, the MergeContent [1] or MergeRecord [2] processors could do that for you. You would set the "Correlation Attribute Name" property in those processors the place incoming FlowFiles in to bins based on unique values set for "manager_name" on each incoming FlowFile. Those bins are then merged based on criteria set in other properties on the processor. The merged output FlowFile will have several new attribute written to it. One of those new attributes is "merge.count" which will contain the count of the number fo input FlowFiles that were merged. You could use an UpdateAttribute processor to read the value from "merge.count" and "manager_name", then assign those to other attribute named "total" and "general key" is those attribute names are specifically needed. [1] http://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.MergeContent/index.html [2] http://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.13.2/org.apache.nifi.processors.standard.MergeRecord/index.html If you found this information helped with you question, please take a moment to login and click accept on this solution. Matt
... View more
05-06-2021
11:23 AM
@Justee Sharing the configuration of both your listSFTP and FetchSFTP processor, as well as a listing of the target SFTP directory would be helpful to those who could assist you here. The listSFTP processor should be configured with only the base path where all the files you want to list exist in the "Remote Path" property. If the files you want to list reside within sub-directories of that base directory, make sure you also se "Search Recursively" to true. The ListSFTP processor will output a NiFi FlowFile for each file that is listed. Also those produced FlowFiles will have FlowFile attributes set on them with: So you might want to list those FlowFiles in the NiFi connection queue an inspect what values were set on these properties. Are they correct? These attributes can then be used in the FetchSFTP processor to facilitate the fetching of the content for each FlowFile listed. Hope this helps, Matt
... View more
05-06-2021
11:11 AM
@leandrolinof The shared bulletin is being produced by the EvaluateJsonPath processor. It may be helpful if you share your current ReplaceText processor configuration, sample input file (prior to ReplaceText), desired output file (post ReplaceText), and the configuration of your EvaluateJsonPath processor. Use case details are also very helpful to understand what your end-to-end goal is here. Thanks, Matt
... View more
05-06-2021
10:56 AM
@hkh Did you happen to restart your NiFi instance at any time? Can you share a versbose (ls -latrh) listing of your log directory? I do recommend you compress on rollover. nifi-app.logs can get very large especially if you are only creating one log file per day. To compress on rollover, you would add a ".gz" to the end of your <fileNamePattern>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app_%d.log.gz</fileNamePattern> Thanks, Matt
... View more
05-05-2021
08:01 AM
@dragfly There are a number of ports that can be set via the nifi.properties file that you would need to make sure are open/reachable. Some of those you already identified in your question. The other ports may vary depending on the version of NiFi you are using since new capabilities/features get introduced from time to time. This list includes below properties that would exist in nifi.properties file (depending on NiFi version): Web properties: nifi.web.http.port
nifi.web.http.port.forwarding
nifi.web.https.port
nifi.web.https.port.forwarding Cluster Node properties: nifi.cluster.node.protocol.port
nifi.cluster.load.balance.port Site-To-Site properties: nifi.remote.input.socket.port NiFi clusters also have a dependency on zookeeper, so you'll need to make sure your NiFi nodes can reach your ZK hosts over the configured ZK ports configured in your ZK. Then once you start building your dataflows, you may add components to the canvas the introduce additional ports you may need to open. For example, any processor or controller service that creates a listener for incoming request like ListenHTTP, ListenTCP, DistributedMapCacheServer, etc. For egress the same applies for any external service(s) your NiFi dataflows will need to connect with. If you found that this solution help you, please take a moment to login and click accept on this solution. Thanks, Matt
... View more
05-05-2021
06:21 AM
@Justee So with NiFi, there is a UI, but you need to make sure there is a route to the host (where you are laughing your browser) and target: <hostname/IP>:<port> If your NiFi in startup is binding to private network interface or only the loopback IP address, you would most likely be unable to reach those IPs from your client machine on a public network. From your client machine, can you ping that "<hostname/IP>"? Does the server where your NiFi is running have multiple network interfaces for perhaps a public and a private network? Did you try changing the IP that NiFi binds to in nifi.properties file: nifi.web.http.host= Did you try to tell your NiFi to bind to multiple network interfaces in the nifi.properties file if they exist in that server? For example: nifi.web.http.network.interface.eth0=eth0
nifi.web.http.network.interface.eth1=eth1 Your servers network interfaces may be different then above example. If you found this solution helpful, please take a moment to login in and click accept on all solutions that helped you. Thanks, Matt
... View more
05-05-2021
06:10 AM
@AnkushKoul You may consider having two dataflows here because you would need to store this password somewhere that your putSFTP processor dataflow would need have access to. One dataflow that acquires the password from the rest endpoint and another that is actually performs your putSFTP. Flow to get password would consist of a GenerateFlowFile (configure to generate a FlowFIle on each NiFi node using a run schedule to control how often password will be refreshed)--> invoketHTTP --> putDistributedMapCache (Configured to use DistributedMapCacheClient that uses "localhost" as server hostname. Will need to also add a DistributedMapCacheServer Controller service that above client will talk to. This will make sure each node grabs password and stores it locally on that nodes's DMCServer) Then in your flow using putSFTP, you would replace the invokeHTTP processor a fetchDistributedMapCache processor just before the putSftp processor (suggest looping failure relationship from putSFTP back to fetchDistributedMapCache processor just in case password changes or there was no password stored when fetch was attempted first time). Keep in mind that flows like this are not idea. The retrieved password that you are placing in to a FlowFile attribute is stored in plaintext. If you found this solution helpful, please take a moment to login and click accept on this solution. Good luck, Matt
... View more
05-03-2021
08:41 AM
@pherschmann The "nifi is running but not responding to ping requests" is not referring to ability to ping the host. When NiFi is started, you are starting the NiFi bootstrap process. This bootstrap process then starts a child NiFi process which is what runs the main NiFi that you interact with. When you run the status command, it us asking the bootstrap process to return the status of that child process. It is telling you that it sees that the PID for that child process still exists so reports it is running, but when it tries to get a response from that child process it fails and logs that the status ping got no response. This almost always is the result of some resource contention within NiFi. The NiFi process may have been going through Java Garbage Collection (GC) at the time you ran the status command. (all GC is stop-the-world event, so JVM will not respond to anything else), or thread usage (CPU consumption) was high at the time, etc... If you see this allot or are seeing node disconnection or UI stability issues, you may want to start monitoring resources on the host, or maybe enable GC logging in your NiFi to see if the service is spending a lot of time doing GC. Increasing heap allocated to NiFi or making dataflow design changes to reduce the heap memory footprint of your current dataflow(s) design would help there. Hope you found this information helpful. If so, please take a moment to login and click accept on this solution, Matt
... View more
05-03-2021
07:48 AM
@Justee MiNiFi has not web interface like NiFi has. MiNiFi is meant to be lightweight and simply execute dataflows you build in NiFi. When you run "tail -F nifi-app.log" immediately after startup (./nifi.sh start) of the NiFi, you will see the NiFi process starting up. The NiFi web interface will not be accessible until you see these log lines output to that nifi-app.log file: 2021-05-03 13:23:17,031 INFO [main] org.apache.nifi.web.server.JettyServer NiFi has started. The UI is available at the following URLs:
2021-05-03 13:23:17,031 INFO [main] org.apache.nifi.web.server.JettyServer https://<hostname/IP>:<port>/nifi Until you see these lines you will not be able to load the interface. You should also verify that the URL you are trying to use maps to one from the list and you are using the correct port. Looking at your attachments, I see it looks like your NiFi bound to your loopback address 127.0.0.1 which would only be reachable via a browser running on that same host and to 10.0.2.15. You would need to make sure that the host where you have your browser is able to reach this IP (can you ping it?). Hope this helps, Matt
... View more
05-03-2021
07:13 AM
@Arash A FlowFile consists of to parts: - FlowFile content - Content resides on disk in the content repository and not in heap memory. Some components used may need to load content in to memory to perform the function of that component. - FlowFile Attributes/metadata - FlowFiles actively queued in a connection will have their attributes/metadata held in heap memory. Swapping is the only mechanism that can move this FlowFile metadata/attribute data out of heap to swap on disk. It is important to remember that MiNiFi will only start swapping FlowFiles to disk once the swap threshold per connection reaches the configured value(default 20,000). Swap files are created in batches of 10,000. So in a smoothly running flow there should be very little, if any, swapping of FlowFile attributes/metadata happening. This should only be happening at times of data bursts. To keep heap usage down, limit the size of your connection queue backpressure object threshold. The default is 10000 which means a connection would never accumulate enough FlowFiles to trigger a swap file anyway normally (backpressure is a soft limit, so if a source processor is allowed to execute because the downstream connection is not applying backpressure yet and that source processor execution results in 30,000 FlowFiles being created, then all 30,000 are placed on downstream connection which would result in swap files being created). When you are building your dataflow via NiFi that you will use on your MiNiFi agent, be mindful of above and and look at the embedded documentation for the components you will be using in that dataflow. The embedded docs include resource consideration section under each component if there are known impacts on heap memory or cpu. Processors that merge or split FlowFiles commonly used can have an impact on heap memory if not configured wisely. Hope this helps remove some concern and provide useful insight. If you found this helpful, please take a moment to login and click accept on this solution. Matt
... View more