Learning Stream Processing with Apache Storm
-
Upload
eugene-dvorkin -
Category
Engineering
-
view
554 -
download
2
description
Transcript of Learning Stream Processing with Apache Storm
![Page 1: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/1.jpg)
![Page 2: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/2.jpg)
a
[
b
K
Z
![Page 3: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/3.jpg)
•
•
•
CONTACT ME @edvorkin
![Page 4: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/4.jpg)
•
•
•
•
•
•
•
•
•
•
![Page 5: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/5.jpg)
[
![Page 6: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/6.jpg)
real-time medical news from curated Twitter feed
![Page 7: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/7.jpg)
![Page 8: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/8.jpg)
Every second, on average, around 6,000 tweets are tweeted on Twitter, which corresponds to over 350,000 tweets sent per minute, 500 million tweets per day
350,000 ^
1 % = 3500 ^
![Page 9: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/9.jpg)
• How to scale
• How to deal with failures
• What to do with failed messages
• A lot of infrastructure concerns
• Complexity
• Tedious coding
DB
t
*Image credit:Nathanmarz: slideshare: storm
![Page 10: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/10.jpg)
Inherently BATCH-Oriented System
![Page 11: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/11.jpg)
• Exponential rise in real-time data
• New business opportunity
• Economics of OSS and commodity hardware
Stream processing has emerged as a key use case*
*Source: Discover HDP2.1: Apache Storm for Stream Data Processing. Hortonworks. 2014
![Page 12: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/12.jpg)
• Detecting fraud while someone swiping credit card
• Place ad on website while someone is reading a specific article
• Alerts on application and machine failures
• Use stream-processing in batch oriented fashion
![Page 13: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/13.jpg)
4
![Page 14: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/14.jpg)
%
å å
![Page 15: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/15.jpg)
Created by Nathan Martz
Acquired by Twitter
Apache Incubator Project
Open sourced
Part of Hortonworks HDP2 platform
U
a
x
Top Level Apache Project
![Page 16: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/16.jpg)
![Page 17: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/17.jpg)
Most mature, widely adopted framework
Source: http://storm.incubator.apache.org/
![Page 18: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/18.jpg)
Process endless stream
of data.
1M+ messages / sec on a 10-15 node cluster
/
4
![Page 19: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/19.jpg)
Guaranteed message
processing
Û
![Page 20: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/20.jpg)
Tuples, Streams, Spouts, Bolts and Topologies
Z
å å å
![Page 21: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/21.jpg)
TUPLE
Storm data type: Immutable List of Key/Value pair of any data type
word: “Hello” Count: 25 Frequency: 0.25
![Page 22: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/22.jpg)
Unbounded Sequence of Tuples between nodes
STREAM
![Page 23: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/23.jpg)
SPOUT
The Source of the Stream
![Page 24: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/24.jpg)
Read from stream of data – queues, web logs, API calls, databases
Spout responsibilities
![Page 25: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/25.jpg)
BOLT
⚡
![Page 26: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/26.jpg)
• Process tuples and perform actions: calculations, API calls, DB calls
• Produce new output stream based on computations
Bolt
⚡
F(x)
![Page 27: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/27.jpg)
• A topology is a network of spouts and bolts
• Defines data flow
4
![Page 28: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/28.jpg)
• May have multiple spouts
4
![Page 29: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/29.jpg)
• Each spout and bolt may have many instances that perform all the processing in parallel
4
•
•
•
•
•
![Page 30: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/30.jpg)
How tuples are send between instances of spouts and bolts
Random Distribution.
Routes tuples to bolt based on the value of the field.
Same values always route to the same bolt
Replicates the tuple stream across all the
bolt tasks. Each task receive a copy of tuple.
Routes all tuple in the stream to
single task. Should be used
with caution.
4
![Page 31: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/31.jpg)
å å å å
![Page 32: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/32.jpg)
compile 'org.apache.storm:storm-core:0.9.2’
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-core</artifactId>
<version>0.9.2</version>
</dependency>
![Page 33: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/33.jpg)
Two 1 Households 1 Both 1 Alike 1 In 1 Dignity 1
sentence word
Word
⚡
⚡ ⚡
3 final count: Two 20 Households 24 Both 22 Alike 1 In 1 Dignity 10
"Two households, both alike in dignity" Two Households Both alike in dignity
![Page 34: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/34.jpg)
Data Source
![Page 35: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/35.jpg)
![Page 36: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/36.jpg)
SplitSentenceBolt
Resource initialization
![Page 37: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/37.jpg)
WordCountBolt
![Page 38: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/38.jpg)
PrinterBolt
![Page 39: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/39.jpg)
Linking it all together
![Page 40: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/40.jpg)
How to scale stream processing
q
å å å å å
![Page 41: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/41.jpg)
storm main components
Machines in a storm cluster
JVM processes
running on a node. One or
more per node.
Java thread
running within worker JVM
process.
Instances of spouts and
bolts.
![Page 42: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/42.jpg)
q
![Page 43: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/43.jpg)
q
![Page 44: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/44.jpg)
How tuples are send between instances of spouts and bolts
![Page 45: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/45.jpg)
![Page 46: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/46.jpg)
a
å å å å å å
![Page 47: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/47.jpg)
Tuple tree
Reliable vs unreliable topologies
![Page 48: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/48.jpg)
Methods from ISpout interface
![Page 49: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/49.jpg)
Reliability in Bolts
Anchoring Ack Fail
![Page 50: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/50.jpg)
Unit testing Storm components
a
![Page 51: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/51.jpg)
![Page 52: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/52.jpg)
BDD style of testing
![Page 53: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/53.jpg)
Extending OutputCollector
![Page 54: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/54.jpg)
Extending OutputCollector
![Page 55: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/55.jpg)
Z
å å å å å å å
![Page 56: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/56.jpg)
Physical View
4
![Page 57: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/57.jpg)
deploying topology to a cluster
storm jar wordcount-1.0.jar com.demo.storm.WordCountTopology word-count-topology
![Page 58: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/58.jpg)
Monitoring and performance tuning
![Page 59: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/59.jpg)
x
å å å å å å å å
![Page 60: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/60.jpg)
![Page 61: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/61.jpg)
Run under supervision: Monit, supervisord
![Page 62: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/62.jpg)
Nimbus move work to another node
![Page 63: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/63.jpg)
![Page 64: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/64.jpg)
Supervisor will restart worker
![Page 65: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/65.jpg)
Micro-Batch Stream Processing
K
å å å å å å å å å
![Page 66: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/66.jpg)
Functions, Filters, aggregations, joins, grouping
Ordered batches of tuples. Batches can be partitioned.
Similar to Pig or Cascading
Transactional spouts
Trident has first class abstraction for reading and writing to stateful sources
Ü
4
![Page 67: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/67.jpg)
Stream processed in small batches
• Each batch has a unique ID which is always the same on each replay • If one tuple failed, the whole batch is reprocessed • Higher throutput than storm but higher latency as well
![Page 68: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/68.jpg)
How trident provides exactly –one semantics?
![Page 69: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/69.jpg)
Store the count along with BatchID COUNT 100
BATCHID 1
COUNT 110
BATCHID 2
10 more tuples with batchId 2
Failure: Batch 2 replayed The same batchId (2)
• Spout should replay a batch exactly as it was played before
• Trident API hide dealing with batchID complexity
![Page 70: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/70.jpg)
Word count with trident
![Page 71: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/71.jpg)
Word count with Trident
![Page 72: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/72.jpg)
Word count with Trident
![Page 73: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/73.jpg)
![Page 74: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/74.jpg)
Style of computation
4
![Page 75: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/75.jpg)
By styles of computation
4
![Page 76: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/76.jpg)
å å å å å å å å å å
![Page 77: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/77.jpg)
![Page 78: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/78.jpg)
![Page 79: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/79.jpg)
Enhancing Twitter feed with lead Image and Title
• Readability enhancements • Image Scaling • Remove duplicates • Custom Business Logic
![Page 80: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/80.jpg)
![Page 81: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/81.jpg)
Writing twitter spout
![Page 82: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/82.jpg)
Status
![Page 83: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/83.jpg)
use Twitter4J java library
![Page 84: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/84.jpg)
use existing Spout from Storm contrib project on GitHub
Spouts exists for: Twitter, Kafka,
JMS, RabbitMQ, Amazon SQS, Kinesis, MongoDB….
![Page 85: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/85.jpg)
• Storm takes care of scalability and fault-tolerance • What happens if there is burst in traffic?
![Page 86: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/86.jpg)
Introducing Queuing Layer with Kafka
Ñ
![Page 87: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/87.jpg)
4
![Page 88: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/88.jpg)
![Page 89: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/89.jpg)
Solr Indexing
![Page 90: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/90.jpg)
Processing Groovy Rules (DSL) on a scale in real-time
![Page 91: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/91.jpg)
å å å å å å å å å å å
![Page 92: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/92.jpg)
![Page 93: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/93.jpg)
Statsd and Storm Metrics API
http://www.michael-noll.com/blog/2013/11/06/sending-metrics-from-storm-to-graphite/
![Page 94: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/94.jpg)
• Use cache if you can: for example Google Guava caching utilities
• In memory DB
• Tick tuples (for batch updates)
![Page 95: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/95.jpg)
• Linear classification (Perceptron, Passive-Aggresive, Winnow, AROW)
• Linear regression (Perceptron, Passive-Aggresive)
• Clustering (KMeans)
• Feature scaling (standardization, normalization)
• Text feature extraction
• Stream statistics (mean, variance)
• Pre-Trained Twitter sentiment classifier
Trident-ML
![Page 96: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/96.jpg)
![Page 97: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/97.jpg)
http://www.michael-noll.com http://www.bigdata-cookbook.com/post/72320512609/storm-metrics-how-to http://svendvanderveken.wordpress.com/
![Page 98: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/98.jpg)
edvorkin/Storm_Demo_Spring2GX
![Page 99: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/99.jpg)
![Page 100: Learning Stream Processing with Apache Storm](https://reader033.fdocuments.in/reader033/viewer/2022052907/559220e21a28abd5598b46c5/html5/thumbnails/100.jpg)
Go ahead. Ask away.