The Settings tab provides the ability to configure the Connection's Name, FlowFile Expiration, Back Pressure Thresholds, Load Balance Strategy and Prioritization:
The Connection name is optional. If not specified, the name shown for the Connection will be names of the Relationships that are active for the Connection.
FlowFile expiration is a concept by which data that cannot be processed in a timely
fashion can be automatically removed from the flow. This is useful, for example, when
the volume of data is expected to exceed the volume that can be sent to a remote site.
In this case, the expiration can be used in conjunction with Prioritizers to ensure that
the highest priority data is processed first and then anything that cannot be processed
within a certain time period (one hour, for example) can be dropped. The expiration
period is based on the time that the data entered the NiFi instance. In other words, if
the file expiration on a given connection is set to '1 hour', and a file that has been
in the NiFi instance for one hour reaches that connection, it will expire. The default
0 sec indicates that the data will never expire. When a file
expiration other than '0 sec' is set, a small clock icon appears on the connection
label, so the DFM can see it at-a-glance when looking at a flow on the canvas.
NiFi provides two configuration elements for Back Pressure. These thresholds indicate
how much data should be allowed to exist in the queue before the component that is the
source of the Connection is no longer scheduled to run. This allows the system to avoid
being overrun with data. The first option provided is the "Back pressure object
threshold." This is the number of FlowFiles that can be in the queue before back
pressure is applied. The second configuration option is the "Back pressure data size
threshold." This specifies the maximum amount of data (in size) that should be queued up
before applying back pressure. This value is configured by entering a number followed by
a data size (
B for bytes,
KB for kilobytes,
MB for megabytes,
GB for gigabytes, or
TB for terabytes).
When back pressure is enabled, small progress bars appear on the connection label, so the DFM can see it at-a-glance when looking at a flow on the canvas. The progress bars change color based on the queue percentage: Green (0-60%), Yellow (61-85%) and Red (86-100%).
Hovering your mouse over a bar displays the exact percentage.
When the queue is completely full, the Connection is highlighted in red.
- Load Balance Strategy
To distribute the data in a flow across the nodes in the cluster, NiFi offers the following load balance strategies:
Do not load balance: Do not load balance FlowFiles between nodes in the cluster. This is the default.
Partition by attribute: Determines which node to send a given FlowFile to based on the value of a user-specified FlowFile Attribute. All FlowFiles that have the same value for the Attribute will be sent to the same node in the cluster. If the destination node is disconnected from the cluster or if unable to communicate, the data does not fail over to another node. The data will queue, waiting for the node to be available again. Additionally, if a node joins or leaves the cluster necessitating a rebalance of the data, consistent hashing is applied to avoid having to redistribute all of the data.
Round robin: FlowFiles will be distributed to nodes in the cluster in a round-robin fashion. If a node is disconnected from the cluster or if unable to communicate with a node, the data that is queued for that node will be automatically redistributed to another node(s). If a node is not able to receive the data as fast other nodes in the cluster, the node may also be skipped for one or more iterations in order to maximize throughput of data distribution across the cluster.
Single node: All FlowFiles will be sent to a single node in the cluster. Which node they are sent to is not configurable. If the node is disconnected from the cluster or if unable to communicate with the node, the data that is queued for that node will remain queued until the node is available again.
- Load Balance Compression
After selecting the load balance strategy, the user can configure whether or not data should be compressed when being transferred between nodes in the cluster.
The following compression options are available:
Do not compress: FlowFiles will not be compressed. This is the default.
Compress attributes only: FlowFile attributes will be compressed, but FlowFile contents will not.
Compress attributes and content: FlowFile attributes and contents will be compressed.
- Load Balance Indicator
When a load balance strategy has been implemented for a connection, a load balance indicator () will appear on the connection:
Hovering over the icon will display the connection's load balance strategy and compression configuration. The icon in this state also indicates that all data in the connection has been distributed across the cluster.
When data is actively being transferred between the nodes in the cluster, the load balance indicator will change orientation and color:
- Cluster Connection Summary
To see where data has been distributed among the cluster nodes, select Summary from the Global Menu. Then select the "Connections" tab and the "View Connection Details" icon for a source:
This will open the Cluster Connection Summary dialog, which shows the data on each node in the cluster:
The right-hand side of the tab provides the ability to prioritize the data in the queue so that higher priority data is processed first. Prioritizers can be dragged from the top ('Available prioritizers') to the bottom ('Selected prioritizers'). Multiple prioritizers can be selected. The prioritizer that is at the top of the 'Selected prioritizers' list is the highest priority. If two FlowFiles have the same value according to this prioritizer, the second prioritizer will determine which FlowFile to process first, and so on. If a prioritizer is no longer desired, it can then be dragged from the 'Selected prioritizers' list to the 'Available prioritizers' list.
The following prioritizers are available:
FirstInFirstOutPrioritizer: Given two FlowFiles, the one that reached the connection first will be processed first.
NewestFlowFileFirstPrioritizer: Given two FlowFiles, the one that is newest in the dataflow will be processed first.
OldestFlowFileFirstPrioritizer: Given two FlowFiles, the one that is oldest in the dataflow will be processed first. 'This is the default scheme that is used if no prioritizers are selected'.
PriorityAttributePrioritizer: Given two FlowFiles, an attribute called "priority" will be extracted. The one that has the lowest priority value will be processed first.
Note that an UpdateAttribute processor should be used to add the "priority" attribute to the FlowFiles before they reach a connection that has this prioritizer set.
If only one has that attribute it will go first.
Values for the "priority" attribute can be alphanumeric, where "a" will come before "z" and "1" before "9"
If "priority" attribute cannot be parsed as a long, unicode string ordering will be used. For example: "99" and "100" will be ordered so the flowfile with "99" comes first, but "A-99" and "A-100" will sort so the flowfile with "A-100" comes first.