SlideShare a Scribd company logo
Page1 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Integrating Apache NiFi and Apache Flink
Feb 4th 2016
Bryan Bende – Member of Technical Staff
Page2 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Outline
• Introduction to NiFi
• NiFi Site-To-Site
• Flink + NiFi Integration
• Use Case Discussion
Page3 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
About Me
• Member of Technical Staff at Hortonworks
• Apache NiFi Committer & PMC Member since June 2015
• Contributed NiFi + Flink Streaming Integration
• Twitter: @bbende / Blog: bryanbende.com
Page4 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Introduction to Apache NiFi
Page5 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Apache NiFi
• Powerful and reliable system to process and
distribute data
• Directed graphs of data routing and transformation
• Web-based User Interface for creating, monitoring,
& controlling data flows
• Highly configurable - modify data flow at runtime,
dynamically prioritize data
• Data Provenance tracks data through entire
system
• Easily extensible through development of custom
components
[1] https://nifi.apache.org/
Page6 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi - Terminology
FlowFile
• Unit of data moving through the system
• Content + Attributes (key/value pairs)
Processor
• Performs the work, can access FlowFiles
Connection
• Links between processors
• Queues that can be dynamically prioritized
Process Group
• Set of processors and their connections
• Receive data via input ports, send data via output ports
Page7 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi - User Interface
• Drag and drop processors to build a flow
• Start, stop, and configure components in real time
• View errors and corresponding error messages
• View statistics and health of data flow
• Create templates of common processor & connections
Page8 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi - Provenance
• Tracks data at each point as it flows
through the system
• Records, indexes, and makes
events available for display
• Handles fan-in/fan-out, i.e. merging
and splitting data
• View attributes and content at given
points in time
Page9 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi - Queue Prioritization
• Configure a prioritizer per
connection
• Determine what is important for your
data – time based, arrival order,
importance of a data set
• Funnel many connections down to a
single connection to prioritize across
data sets
• Develop your own prioritizer if
needed
Page10 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi - Extensibility
Built from the ground up with extensions in mind
Service-loader pattern for…
• Processors
• Controller Services
• Reporting Tasks
• Prioritizers
Extensions packaged as NiFi Archives (NARs)
• Deploy NiFi lib directory and restart
• Provides ClassLoader isolation
• Same model as standard components
Page11 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi - Architecture
OS/Host
JVM
Flow Controller
Web Server
Processor 1 Extension N
FlowFile
Repository
Content
Repository
Provenance
Repository
Local Storage
OS/Host
JVM
Flow Controller
Web Server
Processor 1 Extension N
FlowFile
Repository
Content
Repository
Provenance
Repository
Local Storage
OS/Host
JVM
NiFi Cluster Manager – Request Replicator
Web Server
Master
NiFi Cluster
Manager (NCM)
OS/Host
JVM
Flow Controller
Web Server
Processor 1 Extension N
FlowFile
Repository
Content
Repository
Provenance
Repository
Local Storage
Slaves
NiFi Nodes
Page12 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi Site-To-Site
Page13 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi Site-To-Site
• Direct communication between two NiFi instances
• Push to Input Port on receiver, or Pull from Output Port on source
• Communicate between clusters, standalone instances, or both
• Handles load balancing and reliable delivery
• Secure connections using certificates (optional)
Page14 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Site-To-Site Push
• Source connects Remote Process Group to Input Port on destination
• Site-To-Site takes care of load balancing across the nodes in the cluster
NCM
Node 1
Input Port
Node 2
Input Port
Standalone NiFi
RPG
Page15 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Site-To-Site Pull
• Destination connects Remote Process Group to Output Port on the source
• If source was a cluster, each node would pull from each node in cluster
NCM
Node 1
RPG
Node 2
RPG
Standalone NiFi
Output Port
Page16 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Site-To-Site Client
• Code for Site-To-Site broken out into reusable module
• https://github.com/apache/nifi/tree/master/nifi-commons/nifi-site-to-site-client
• Can be used from any Java program to push/pull from NiFi
Java Program
Site-To-Site Client
Node 1
Output Port
NCM
Node 2
Output Port
Page17 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Flink + NiFi Integration
Page18 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Flink + NiFi Integration
• Use Site-To-Site Client in Flink Streaming
• NiFiSource to pull data from NiFi Output Port
• NiFiSink to push data to NiFi Input Port
• NiFiDataPacket to represent data to/from NiFi (think FlowFile)
public interface NiFiDataPacket {
byte[] getContent();
Map<String, String> getAttributes();
}
Page19 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi Source Example
StreamExecutionEnvironment env =
StreamExecutionEnvironment.getExecutionEnvironment();
SiteToSiteClientConfig clientConfig = new
SiteToSiteClient.Builder()
.url("http://localhost:8080/nifi")
.portName("Data for Flink")
.requestBatchCount(…)
.buildConfig();
SourceFunction<NiFiDataPacket> nifiSource = new
NiFiSource(clientConfig);
DataStream<NiFiDataPacket> streamSource =
env.addSource(nifiSource);
Page20 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
NiFi Sink Example
StreamExecutionEnvironment env =
StreamExecutionEnvironment.getExecutionEnvironment();
SiteToSiteClientConfig clientConfig = new
SiteToSiteClient.Builder()
.url("http://localhost:8080/nifi")
.portName("Data from Flink")
.buildConfig();
// Creates a NiFiDataPacket from incoming data of a given type
// Here we are creating NiFiDataPackets for each String
NiFiDataPacketBuilder<String> dpb = ...
DataStreamSink<String> dataStream = ...
.addSink(new NiFiSink<>(clientConfig, dpb));
Page21 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Use Case Discussion
Page22 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Drive Data to Flink for Analysis
NiFi Flink
NiFi
NiFi
• Drive data from sources to central data center for analysis
• Tiered collection approach at various locations, think regional data centers
Edge
Edge
Core
Page23 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Dynamically Adjusting Data Flow
• Push analytic results from Flink back to NiFi
• Push results back to edge locations/devices to change behavior
NiFi Flink
NiFi
NiFi
Edge
Edge
Core
Page24 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
1. Logs filtered by level and sent from Edge -> Core
2. Flink produces new filter levels based on rate & sends back to core
3. Edge polls core for new filter levels & updates filtering
Example: Dynamic Log Collection
Core NiFi
Flink
Edge NiFi
Logs Logs
New Filters
Logs Output Log Input Log Output
Result Input Store Result
Service Fetch ResultPoll Service
Filter
New Filters
New
Filters
Poll
Analytic
Page25 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Dynamic Log Collection – Edge NiFi
Page26 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Dynamic Log Collection – Core NiFi
Page27 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Dynamic Log Collection – Flink Streaming
StreamExecutionEnvironment env = ...
SiteToSiteClientConfig clientConfig = getSourceConfig(props);
DataStream<NiFiDataPacket> streamSource =
env.addSource(new NiFiSource(clientConfig));
int windowMs = ...
LogLevelFlatMap logLevelFlatMap = new LogLevelFlatMap(...);
DataStream<LogLevels> counts =
streamSource.flatMap(logLevelFlatMap)
.timeWindowAll(Time.of(windowSize, TimeUnit.MILLISECONDS))
.apply(new LogLevelWindowCounter());
double rate = ...
SiteToSiteClientConfig sinkConfig = getSinkConfig(props);
NiFiDataPacketBuilder<LogLevels> builder = new DictionaryBuilder(window, rate);
counts.addSink(new NiFiSink<>(sinkConfig, builder));
Page28 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Dynamic Log Collection – Full Flow
NiFi Flink
NiFi
NiFi
Edge
Edge
Core
Logs
Logs
Logs
New Filters
New Filters
New Filters
Page29 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Summary
• Use NiFi to drive data from sources to Flink
• Leverage Flink results to adjust your dataflows
Sources
• [1] https://nifi.apache.org/
Resources
• https://github.com/bbende/nifi-streaming-examples
• https://github.com/apache/flink/tree/master/flink-examples/flink-examples-streaming
• https://flink.apache.org/news/2015/02/09/streaming-example.html
Contact Info:
• Email: bbende@hortonworks.com
• Twitter: @bbende
Page30 © Hortonworks Inc. 2011 – 2015. All Rights Reserved
Thank you

More Related Content

PDF
Apache Nifi Crash Course
PDF
Introduction to Apache NiFi 1.11.4
PPTX
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
PDF
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
PDF
Dataflow with Apache NiFi
PPTX
Apache NiFi Crash Course Intro
PPTX
Apache Atlas: Governance for your Data
PDF
Data ingestion and distribution with apache NiFi
Apache Nifi Crash Course
Introduction to Apache NiFi 1.11.4
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Apache Spark Data Source V2 with Wenchen Fan and Gengliang Wang
Dataflow with Apache NiFi
Apache NiFi Crash Course Intro
Apache Atlas: Governance for your Data
Data ingestion and distribution with apache NiFi

What's hot (20)

PDF
Real-time Twitter Sentiment Analysis and Image Recognition with Apache NiFi
PPTX
Securing Hadoop with Apache Ranger
PPTX
Apache NiFi in the Hadoop Ecosystem
PDF
A Thorough Comparison of Delta Lake, Iceberg and Hudi
PDF
Architect’s Open-Source Guide for a Data Mesh Architecture
PDF
NiFi Developer Guide
PPTX
Best practices and lessons learnt from Running Apache NiFi at Renault
PDF
PDF
Introduction to data flow management using apache nifi
PPTX
Real-Time Data Flows with Apache NiFi
PDF
Building robust CDC pipeline with Apache Hudi and Debezium
PPTX
Reshape Data Lake (as of 2020.07)
PDF
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
PPTX
Dataflow with Apache NiFi - Apache NiFi Meetup - 2016 Hadoop Summit - San Jose
PDF
The Apache Spark File Format Ecosystem
PPTX
Free Training: How to Build a Lakehouse
PDF
Iceberg: a fast table format for S3
PDF
Building large scale transactional data lake using apache hudi
PDF
Introduction to Apache NiFi dws19 DWS - DC 2019
PDF
Apache Airflow
Real-time Twitter Sentiment Analysis and Image Recognition with Apache NiFi
Securing Hadoop with Apache Ranger
Apache NiFi in the Hadoop Ecosystem
A Thorough Comparison of Delta Lake, Iceberg and Hudi
Architect’s Open-Source Guide for a Data Mesh Architecture
NiFi Developer Guide
Best practices and lessons learnt from Running Apache NiFi at Renault
Introduction to data flow management using apache nifi
Real-Time Data Flows with Apache NiFi
Building robust CDC pipeline with Apache Hudi and Debezium
Reshape Data Lake (as of 2020.07)
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
Dataflow with Apache NiFi - Apache NiFi Meetup - 2016 Hadoop Summit - San Jose
The Apache Spark File Format Ecosystem
Free Training: How to Build a Lakehouse
Iceberg: a fast table format for S3
Building large scale transactional data lake using apache hudi
Introduction to Apache NiFi dws19 DWS - DC 2019
Apache Airflow
Ad

Similar to Integrating NiFi and Flink (20)

PPTX
Apache NiFi in the Hadoop Ecosystem
PPTX
NJ Hadoop Meetup - Apache NiFi Deep Dive
PDF
Integrating Apache NiFi and Apache Apex
PPTX
Big Data Day LA 2016/ Big Data Track - Building scalable enterprise data flow...
PPTX
Integrating NiFi and Apex
PDF
Nifi workshop
PPTX
State of the Apache NiFi Ecosystem & Community
PDF
Apache Nifi Crash Course
PPTX
Hortonworks Data in Motion Webinar Series - Part 1
PPTX
Harnessing Data-in-Motion with HDF 2.0, introduction to Apache NIFI/MINIFI
PDF
Dataflow Management From Edge to Core with Apache NiFi
PPTX
Data at Scales and the Values of Starting Small with Apache NiFi & MiNiFi
PDF
HDF: Hortonworks DataFlow: Technical Workshop
PPTX
Connecting the Drops with Apache NiFi & Apache MiNiFi
PPTX
Apache NiFi 1.0 in Nutshell
PPTX
HDF Powered by Apache NiFi Introduction
PPTX
Introduction to Apache NiFi - Seattle Scalability Meetup
PDF
Devnexus 2018 - Let Your Data Flow with Apache NiFi
PPTX
Data Con LA 2018 - Streaming and IoT by Pat Alwell
PDF
Enterprise IIoT Edge Processing with Apache NiFi
Apache NiFi in the Hadoop Ecosystem
NJ Hadoop Meetup - Apache NiFi Deep Dive
Integrating Apache NiFi and Apache Apex
Big Data Day LA 2016/ Big Data Track - Building scalable enterprise data flow...
Integrating NiFi and Apex
Nifi workshop
State of the Apache NiFi Ecosystem & Community
Apache Nifi Crash Course
Hortonworks Data in Motion Webinar Series - Part 1
Harnessing Data-in-Motion with HDF 2.0, introduction to Apache NIFI/MINIFI
Dataflow Management From Edge to Core with Apache NiFi
Data at Scales and the Values of Starting Small with Apache NiFi & MiNiFi
HDF: Hortonworks DataFlow: Technical Workshop
Connecting the Drops with Apache NiFi & Apache MiNiFi
Apache NiFi 1.0 in Nutshell
HDF Powered by Apache NiFi Introduction
Introduction to Apache NiFi - Seattle Scalability Meetup
Devnexus 2018 - Let Your Data Flow with Apache NiFi
Data Con LA 2018 - Streaming and IoT by Pat Alwell
Enterprise IIoT Edge Processing with Apache NiFi
Ad

More from Bryan Bende (8)

PDF
Apache NiFi SDLC Improvements
PDF
Apache NiFi Meetup - Introduction to NiFi Registry
PDF
You Can't Search Without Data
PDF
Apache NiFi Record Processing
PDF
Taking DataFlow Management to the Edge with Apache NiFi/MiNiFi
PPTX
Building Data Pipelines for Solr with Apache NiFi
PDF
Document Similarity with Cloud Computing
PPTX
Real-Time Inverted Search NYC ASLUG Oct 2014
Apache NiFi SDLC Improvements
Apache NiFi Meetup - Introduction to NiFi Registry
You Can't Search Without Data
Apache NiFi Record Processing
Taking DataFlow Management to the Edge with Apache NiFi/MiNiFi
Building Data Pipelines for Solr with Apache NiFi
Document Similarity with Cloud Computing
Real-Time Inverted Search NYC ASLUG Oct 2014

Recently uploaded (20)

PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Empathic Computing: Creating Shared Understanding
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPT
Teaching material agriculture food technology
PDF
Encapsulation theory and applications.pdf
PDF
Approach and Philosophy of On baking technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
KodekX | Application Modernization Development
PDF
cuic standard and advanced reporting.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Machine learning based COVID-19 study performance prediction
“AI and Expert System Decision Support & Business Intelligence Systems”
Empathic Computing: Creating Shared Understanding
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Review of recent advances in non-invasive hemoglobin estimation
Understanding_Digital_Forensics_Presentation.pptx
Teaching material agriculture food technology
Encapsulation theory and applications.pdf
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Programs and apps: productivity, graphics, security and other tools
KodekX | Application Modernization Development
cuic standard and advanced reporting.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
NewMind AI Weekly Chronicles - August'25 Week I
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Machine learning based COVID-19 study performance prediction

Integrating NiFi and Flink

  • 1. Page1 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Integrating Apache NiFi and Apache Flink Feb 4th 2016 Bryan Bende – Member of Technical Staff
  • 2. Page2 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Outline • Introduction to NiFi • NiFi Site-To-Site • Flink + NiFi Integration • Use Case Discussion
  • 3. Page3 © Hortonworks Inc. 2011 – 2015. All Rights Reserved About Me • Member of Technical Staff at Hortonworks • Apache NiFi Committer & PMC Member since June 2015 • Contributed NiFi + Flink Streaming Integration • Twitter: @bbende / Blog: bryanbende.com
  • 4. Page4 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Introduction to Apache NiFi
  • 5. Page5 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Apache NiFi • Powerful and reliable system to process and distribute data • Directed graphs of data routing and transformation • Web-based User Interface for creating, monitoring, & controlling data flows • Highly configurable - modify data flow at runtime, dynamically prioritize data • Data Provenance tracks data through entire system • Easily extensible through development of custom components [1] https://nifi.apache.org/
  • 6. Page6 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi - Terminology FlowFile • Unit of data moving through the system • Content + Attributes (key/value pairs) Processor • Performs the work, can access FlowFiles Connection • Links between processors • Queues that can be dynamically prioritized Process Group • Set of processors and their connections • Receive data via input ports, send data via output ports
  • 7. Page7 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi - User Interface • Drag and drop processors to build a flow • Start, stop, and configure components in real time • View errors and corresponding error messages • View statistics and health of data flow • Create templates of common processor & connections
  • 8. Page8 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi - Provenance • Tracks data at each point as it flows through the system • Records, indexes, and makes events available for display • Handles fan-in/fan-out, i.e. merging and splitting data • View attributes and content at given points in time
  • 9. Page9 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi - Queue Prioritization • Configure a prioritizer per connection • Determine what is important for your data – time based, arrival order, importance of a data set • Funnel many connections down to a single connection to prioritize across data sets • Develop your own prioritizer if needed
  • 10. Page10 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi - Extensibility Built from the ground up with extensions in mind Service-loader pattern for… • Processors • Controller Services • Reporting Tasks • Prioritizers Extensions packaged as NiFi Archives (NARs) • Deploy NiFi lib directory and restart • Provides ClassLoader isolation • Same model as standard components
  • 11. Page11 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi - Architecture OS/Host JVM Flow Controller Web Server Processor 1 Extension N FlowFile Repository Content Repository Provenance Repository Local Storage OS/Host JVM Flow Controller Web Server Processor 1 Extension N FlowFile Repository Content Repository Provenance Repository Local Storage OS/Host JVM NiFi Cluster Manager – Request Replicator Web Server Master NiFi Cluster Manager (NCM) OS/Host JVM Flow Controller Web Server Processor 1 Extension N FlowFile Repository Content Repository Provenance Repository Local Storage Slaves NiFi Nodes
  • 12. Page12 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi Site-To-Site
  • 13. Page13 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi Site-To-Site • Direct communication between two NiFi instances • Push to Input Port on receiver, or Pull from Output Port on source • Communicate between clusters, standalone instances, or both • Handles load balancing and reliable delivery • Secure connections using certificates (optional)
  • 14. Page14 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Site-To-Site Push • Source connects Remote Process Group to Input Port on destination • Site-To-Site takes care of load balancing across the nodes in the cluster NCM Node 1 Input Port Node 2 Input Port Standalone NiFi RPG
  • 15. Page15 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Site-To-Site Pull • Destination connects Remote Process Group to Output Port on the source • If source was a cluster, each node would pull from each node in cluster NCM Node 1 RPG Node 2 RPG Standalone NiFi Output Port
  • 16. Page16 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Site-To-Site Client • Code for Site-To-Site broken out into reusable module • https://github.com/apache/nifi/tree/master/nifi-commons/nifi-site-to-site-client • Can be used from any Java program to push/pull from NiFi Java Program Site-To-Site Client Node 1 Output Port NCM Node 2 Output Port
  • 17. Page17 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Flink + NiFi Integration
  • 18. Page18 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Flink + NiFi Integration • Use Site-To-Site Client in Flink Streaming • NiFiSource to pull data from NiFi Output Port • NiFiSink to push data to NiFi Input Port • NiFiDataPacket to represent data to/from NiFi (think FlowFile) public interface NiFiDataPacket { byte[] getContent(); Map<String, String> getAttributes(); }
  • 19. Page19 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi Source Example StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder() .url("http://localhost:8080/nifi") .portName("Data for Flink") .requestBatchCount(…) .buildConfig(); SourceFunction<NiFiDataPacket> nifiSource = new NiFiSource(clientConfig); DataStream<NiFiDataPacket> streamSource = env.addSource(nifiSource);
  • 20. Page20 © Hortonworks Inc. 2011 – 2015. All Rights Reserved NiFi Sink Example StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder() .url("http://localhost:8080/nifi") .portName("Data from Flink") .buildConfig(); // Creates a NiFiDataPacket from incoming data of a given type // Here we are creating NiFiDataPackets for each String NiFiDataPacketBuilder<String> dpb = ... DataStreamSink<String> dataStream = ... .addSink(new NiFiSink<>(clientConfig, dpb));
  • 21. Page21 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Use Case Discussion
  • 22. Page22 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Drive Data to Flink for Analysis NiFi Flink NiFi NiFi • Drive data from sources to central data center for analysis • Tiered collection approach at various locations, think regional data centers Edge Edge Core
  • 23. Page23 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Dynamically Adjusting Data Flow • Push analytic results from Flink back to NiFi • Push results back to edge locations/devices to change behavior NiFi Flink NiFi NiFi Edge Edge Core
  • 24. Page24 © Hortonworks Inc. 2011 – 2015. All Rights Reserved 1. Logs filtered by level and sent from Edge -> Core 2. Flink produces new filter levels based on rate & sends back to core 3. Edge polls core for new filter levels & updates filtering Example: Dynamic Log Collection Core NiFi Flink Edge NiFi Logs Logs New Filters Logs Output Log Input Log Output Result Input Store Result Service Fetch ResultPoll Service Filter New Filters New Filters Poll Analytic
  • 25. Page25 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Dynamic Log Collection – Edge NiFi
  • 26. Page26 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Dynamic Log Collection – Core NiFi
  • 27. Page27 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Dynamic Log Collection – Flink Streaming StreamExecutionEnvironment env = ... SiteToSiteClientConfig clientConfig = getSourceConfig(props); DataStream<NiFiDataPacket> streamSource = env.addSource(new NiFiSource(clientConfig)); int windowMs = ... LogLevelFlatMap logLevelFlatMap = new LogLevelFlatMap(...); DataStream<LogLevels> counts = streamSource.flatMap(logLevelFlatMap) .timeWindowAll(Time.of(windowSize, TimeUnit.MILLISECONDS)) .apply(new LogLevelWindowCounter()); double rate = ... SiteToSiteClientConfig sinkConfig = getSinkConfig(props); NiFiDataPacketBuilder<LogLevels> builder = new DictionaryBuilder(window, rate); counts.addSink(new NiFiSink<>(sinkConfig, builder));
  • 28. Page28 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Dynamic Log Collection – Full Flow NiFi Flink NiFi NiFi Edge Edge Core Logs Logs Logs New Filters New Filters New Filters
  • 29. Page29 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Summary • Use NiFi to drive data from sources to Flink • Leverage Flink results to adjust your dataflows Sources • [1] https://nifi.apache.org/ Resources • https://github.com/bbende/nifi-streaming-examples • https://github.com/apache/flink/tree/master/flink-examples/flink-examples-streaming • https://flink.apache.org/news/2015/02/09/streaming-example.html Contact Info: • Email: bbende@hortonworks.com • Twitter: @bbende
  • 30. Page30 © Hortonworks Inc. 2011 – 2015. All Rights Reserved Thank you