Member since
07-30-2019
3472
Posts
1642
Kudos Received
1020
Solutions
My Accepted Solutions
| Title | Views | Posted |
|---|---|---|
| 206 | 06-03-2026 06:06 PM | |
| 499 | 05-06-2026 09:16 AM | |
| 952 | 05-04-2026 05:20 AM | |
| 565 | 05-01-2026 10:15 AM | |
| 673 | 03-23-2026 05:44 AM |
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-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
05-03-2021
06:09 AM
1 Kudo
@hkh The appender you shared is not valid. You have configured your appender rolling policy to use: SizeAndTimeBasedRollingPolicy However, your file naming patten only supports time based pattern ${org.apache.nifi.bootstrap.config.log.dir}/nifi-app_%d.log This leaves you will two options: Option1: - Keep using the "SizeAndTimeBasedRollingPolicy", but change your file naming pattern - A pattern like "${org.apache.nifi.bootstrap.config.log.dir}/nifi-app_%d{yyyy-MM-dd}.%i.log" The "{yyyy-MM-dd}" is option but allows you to specify the date format. - With above pattern logback will retain 1 day of log history, but may or may not have more then 1 log in a given day depending on volume of logging that is occurring. If a daily log reaches the configured "maxFileSize" the log with roll. This allows you to keep you logs at manageable sizes. When the log rolls it will get a one up number applied per this new file naming pattern. For example: nifi.app_2021-04-28.1.log nifi.app_2021-04-28.2.log - While this can still result in an unbounded number fo incremental logs files created in a single day, you can control overall disk usage by adding another property within the "rollingPolicy" section that will start purging incremental rolled logs if max amount of space consumed by these rolled logs exceeds this set value. Add this line below your "<maxHistory>1</maxHistory>" line: <totalSizeCap>3GB</totalSizeCap> Note: Will only remove rolled/archive logs and will not remove active log. Option 2: - Change the rolling policy you are using to "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" - With this policy you can keep the file name pattern you already have "${org.apache.nifi.bootstrap.config.log.dir}/nifi-app_%d.log" - You will need to comment out remove the following line: <maxFileSize>1GB</maxFileSize> it is only valid for size based rolling policies. - The downside of this setup is that a single daily log file can grow unbounded. As far as your other question goes.... The logback.xml is the only configuration file in NiFi that you can edit and its changes will take affect without needing a NiFi restart. Some caveats... NiFi did not write logback and it certainly has its quirks. For example... If you enter a bad configuration, it may simply just stop logging. The way maxHistory works in logback prevents the cleanup from looking at older rolled logs outside the maxHistory window, so you will need to cleanup the older rolled logs manually initially and not expect logback to do that clean-up for you after editing the logback.xml. Since you are making big changes to file naming pattern and potentially the rolling policy, i'd encourage you to restart NiFi anyway so it cleanly starts writing to the new log format on startup. Hope you found this helpful. If so take a moment to login and click accept on this solution, Matt
... View more
04-16-2021
06:06 AM
@Vickey The file filter property of the unpackContent processor takes a java regular expression and can be used when unpacking tar or zip file. In your unpackContent processor, set the "Packaging format" to either "ZIP" or "TAR" based on what package format is used by your source file. The set a java regular expression such as below to extract only files within that package where the filename ends with the .csv, .txt, or .xml extensions: .*\.(txt|xml|csv) Hope this helps, Matt
... View more
04-12-2021
06:35 AM
1 Kudo
@ram_g With all 100 FlowFiles committed to the success relationship of your custom processor at the same time, how do we want NiFi to determine their priority order? If you can out put some attributes on each FlowFile that your custom processor is creating, those attribute values could be used set processing order downstream. Hope this helps, Matt
... View more
04-12-2021
06:16 AM
1 Kudo
@Former Member I have a HDF 3.4.1.1 cluster (Based off NiFi 1.11.4) setup and with PGs version controlled and can change processors from started to stopped to disabled without it triggering a local change. However, HDF 3.4.1.1 ships with NiFi-Registry 0.3 and not 0.8. I have another HDF 3.5.2 cluster (based off NiFi 1.12.1) and ships with NiFi-Registry 0.8. In that cluster, I can also change a processor from start to stop to disabled and it does trigger a local change. I see someone filled a Jira about this change in behavior: https://issues.apache.org/jira/browse/NIFI-8160 The tracking of Enabled and Disabled State in NiFi-Registry was added as part of: https://issues.apache.org/jira/browse/NIFI-6025 Hope this helps, Matt
... View more
04-12-2021
05:49 AM
@AnkushKoul Since the 30 seconds since last execution has past, the processor is available to be immediately scheduled once a thread becomes available. So second thread would not wait till 60 seconds. This setting is minimum wait between executions. Other factors come int play that can affect component execution scheduling. NiFi hands out threads to processors from the Max Timer Driven Thread Count resource pool set via Controller Settings under the global menu in the upper right corner. Naturally you will have more components on your canvas then the size of this resource pool (which should be set initially to only 2-4 times the number fo cores you have on a single node since setting applies per node). NiFi will hand these available threads out to processors requesting CPU time to execute. Most component threads are in the range of milliseconds of execution, bit some can be more resource intensive and take longer to complete. Before increasing this resource pool, you should monitor the CPU impact/usage with all your dataflows running. Then make small increments if resource exist. Hope this answers your questions. If, so please take. moment to accept the answer(s) that helped. Matt
... View more
04-08-2021
08:51 AM
@John_Wise @TimA Let me make sure I understand exactly what change you are making. I have Process Groups (PG) that are version controlled in my NiFi Registry. I have both a NiFi 1.11.4 and NiFi 1.12.1 clusters setup. If I import a flow from registry and then modify the state (start, stop, disable, enable) of any processor, my PGs do not change to say local changes exist. The state of a processor does not track as a local change. I suspect some other local change is being made in addition to state change. If you right click on the PG and under "Version" from displayed context menu select "show local changes" what are the tracked changes being reported? Hope this helps, Matt
... View more