SlideShare una empresa de Scribd logo
1 de 75
Pravega: Rethinking
storage for streams
Stephan Ewen, Data Artisans
Flavio Junqueira, Pravega
Flink Forward – Berlin 2017
Outline
• Intro to Pravega
• Flink + Pravega
Pravega
http://pravega.io
Streams
• Process bits
• Store bits
• Transmit bits
Flavio Junqueira,
Lives in Barcelona
01000110
01101100
01100001
01110110
01101001
01101111
01001010
01110101
01101110
01110001
01110101
01100101
01101001
01110010
01100001
00101100
01000010
01100001
01110010
01100011
01100101
01101100
01101111
01101110
01100001
Flavio Junqueira,
is in Barcelona
Sep. 10 - noon
01000110
01101100
01100001
01110110
01101001
01101111
01001010
01110101
01101110
01110001
01110101
01100101
01101001
01110010
01100001
00101100
01000010
01100001
01110010
01100011
01100101
01101100
01101111
01101110
01100001
01000110
01101100
01100001
01110110
01101001
01101111
01001010
01110101
01101110
01110001
01110101
01100101
01101001
01110010
01100001
00101100
01000010
01100001
01110010
01100011
01100101
01101100
01101111
01101110
01100001
01000110
01101100
01100001
01110110
01101001
01101111
01001010
01110101
01101110
01110001
01110101
01100101
01101001
01110010
01100001
00101100
01000010
01100001
01110010
01100011
01100101
01101100
01101111
01101110
01100001
Flavio Junqueira,
is in Berlin
Sep. 11 – noon
Flavio Junqueira,
is back in Barcelona
Sep. 15 - noon
• Order matters
• Correlation between events
• Causality maybe?
Time
CPU usage: 10%
Temperature: 20C
• Number of devices potentially
much larger
• Volume per device potentially
much higher
CPU usage: 50%
Temperature: 20C
CPU usage: 60%
Temperature: 20C
01000110
01101100
01100001
01110110
01101001
01101111
01001010
01110101
01101110
01110001
01110101
01100101
01101001
01110010
01100001
00101100
01000010
01100001
01110010
01100011
01100101
01101100
01101111
01101110
01100001
01000110
01101100
01100001
01110110
01101001
01101111
01001010
01110101
01101110
01110001
01110101
01100101
01101001
01110010
01100001
00101100
01000010
01100001
01110010
01100011
01100101
01101100
01101111
01101110
01100001
01000110
01101100
01100001
01110110
01101001
01101111
01001010
01110101
01101110
01110001
01110101
01100101
01101001
01110010
01100001
00101100
01000010
01100001
01110010
01100011
01100101
01101100
01101111
01101110
01100001
Time
Processing data streams
….. 01110110 01100001 01101100 01000110
… 01001010 01101111 01101001 01110110
Stream processing
pipeline
….. 01110110 01100001 01101100 01000110
… 01001010 01101111 01101001 01110110
….. 01110110 01100001 01101100 01000110
… 01001010 01101111 01101001 01110110
Processing streams
A typical architecture
….. 01110110 01100001 01101100 01000110
… 01001010 01101111 01101001 01110110
Source
Messaging
substrate
• Ingests and buffers data
• Decouples source from the
engine processing the data
….. 01110110 01100001 01101100
… 01001010 01101111 01101001
Stream data
processor
Messaging
substrate
One or more stages
Stream data
processor
A typical architecture
….. 01110110 01100001 01101100 01000110
… 01001010 01101111 01101001 01110110
Source
Messaging
substrate
….. 01110110 01100001 01101100
… 01001010 01101111 01101001
Messaging
substrate
Limitations:
• Data stored temporarily
• Not able to store an unbounded
amount of stream data
Multiple stages
Stream data
processor
Stream data
processor
• Ingests and buffers data
• Decouples source from the
engine processing the data
A typical architecture
….. 01110110 01100001 01101100 01000110
… 01001010 01101111 01101001 01110110
Source
Messaging
substrate
….. 01110110 01100001 01101100
Messaging
substrate
Multiple stages
Limitations:
• Data stored temporarily
• Not able to store an unbounded
amount of stream data
• Separate bulk store for historical
reads
Some bulk data store
Stream data
processor
Stream data
processor
• Ingests and buffers data
• Decouples source from the
engine processing the data
Target of Pravega is a stream store able to:
• Store stream data permanently
• Preserve order
• Accommodate unbounded streams
Streams in Pravega
Pravega and Streams
….. 01110110 01100001 01101100
….. 01001010 01101111 01101001
Pravega
01000110
01110110
Append Read
01000110
01110110
What about parallelism?
Pravega and Streams
….. 01110110 01100001 01101100
….. 01101001 01110110 01001010
Pravega
01000110
01110110
Append Read
01000110
01110110
01101111
01101001 01101001
01101111
Segments in Pravega
….. 01110110 01100001 01101100
….. 01101001 01110110 01001010
Pravega
01000110
01110110
Segments
Append Read
01000110
01110110
01101111
01101001 01101001
01101111
Segments
• Segments are sequences of bytes
Segments in Pravega
….. 01110110 01100001 01101100
….. 01101001 01110110 01001010
Pravega
01000110
01110110
Segments
Append Read
01000110
01110110
01101111
01101001 01101001
01101111
Segments
• Segments are sequences of bytes
• Use routing keys to determine segment
Segments can be sealed
Segments in Pravega
….. 01110110 01100001 01101100
….. 01101001 01110110 01001010
Pravega
01000110
01110110
Segments
Append Read
01000110
01110110
01101111
01101001 01101001
01101111
Segments
Once sealed, a segment can’t be
appended to any longer.
Segments in Pravega
Pravega
01000110
Segments
Segments
01101111
01000110
01000110
01000110
01101111
01101111
01101111
01101111
01000110
01000110
Pravega is primarily:
• A segment store
• Segments sealed or open
How is sealing segments useful?
Segments in Pravega
Pravega
01000110
Segments
Segments
01101111
01000110
01000110
01000110
01101111
01101111
01101111
01101111
01000110
01000110
0110111101101111
01000110
01101111
Stream
Compose to form a stream
• Each segment can live in a different server
• Not limited to the capacity of a single server
Segments in Pravega
Pravega
01000110
Segments
Segments
01101111
01000110
01000110
01000110
01101111
01101111
01101111
01101111
01000110
01000110
01101111
01000110
01101111
Stream
Compose to form a stream
01101111
Some useful ways to compose segments
01000110
Scaling a stream
….. 01110110 01100001 01101100 01000110
Stream has one
segment
1
….. 01110110 01100001 01101100
• Seal current
segment
• Create new ones
2
01000110
01000110
• Say input load has
increased
• Need more parallelism
Routing
key space
0.0
1.0
Time
Split Split Merge
0.5
0.75
Segment 1 Segment 2
Segment 3
Segment 4
Segment 5
Segment 6
t0 t1
t2
Routing
key space
0.0
1.0
Time
Split Split Merge
0.5
0.75
Segment 1 Segment 2
Segment 3
Segment 4
Segment 5
Segment 6
t0 t1
t2
Key ranges are not statically
assigned to segments
Source: Virtual cluster - Nautilus Platform
Source: Virtual cluster - Nautilus PlatformScale up
Scale down
Transactions
01100001
01000110
Stream has two
segments
1
Begin txn
2
Txn segments
Write to txn
3
01100001
Upon commit
5
Seal txn segment
01000110
6
01100001
Merge txn segment
into stream segment
01110110 01110110
01000110
Txn segments01110110
01000110
01100000
Write to txn
4
01100001
Txn segments01110110
01000110
01100000
01110110
01000110
01100000
s1
s2
s1
s2
s1
s2
s1
s2
s1
s2
01100001
Upon commit
s10111011001100000
s2
Transactions
01100001
01000110
Stream has two
segments
1
Begin txn
2
Txn segments
Write to txn
3
01100001
Upon abort
5
Eliminate
segments
01110110 01110110
01000110
Txn segments01110110
01000110
01100000
Write to txn
4
01100001
Txn segments01110110
01000110
01100000
01110110
01000110
s1
s2
s1
s2
s1
s2
s1
s2
s1
s2
01100001
01100000
Wait, how are segments manipulated?
Controller
• Control plane
• A few of the controller tasks
• Stream lifecycle
• Create
• Delete
• Scale
• Txn management
• Create
• Commit/Abort
Segments
01101111
01000110
01000110
01000110
01000110
01101111 01101111
01101111
Segment store – Data plane
Streams Scaling Txns
Controller – Control plane
Pravega
API – Writer and Reader
Events
• Internally
• Pravega is all about bytes
• Current API focused on
events
• Some encapsulation of
application bytes
• Serializer interface
public interface Serializer<T> {
/**
* Serializes the given event.
*
* @param value The event to be serialized.
* @return The serialized form of the event.
* NOTE: buffers returned should not exceed {@link #MAX_EVENT_SIZE}.
*/
ByteBuffer serialize(T value);
/**
* Deserializes the given ByteBuffer into an event.
*
* @param serializedValue A event that has been previously serialized.
* @return The event object.
*/
T deserialize(ByteBuffer serializedValue);
}
EventStreamWriter API
String scope = “myScope”;
WriterConfig config = new WriterConfig();
String streamName = “myStream”;
ClientFactory factory = ClientFactory.withScope(scope, new URI(“//demo.pravega.io:3333”));
EventStreamWriter<String> writer = factory.createEventWriter(streamName, serializer, config);
while(!worldEnd) {
/* E.g., getNewRecord() reads the next line in a file */
String record = getNewRecord();
String key = extractKey(record);
String event = extractEvent(record);
writer.writeEvent(key, event);
}
Using the EventStreamReader API
String scope = “myScope”;
String myReaderId = “myId”;
String myReadGroup = “myGroup”;
ReaderConfig config = new ReaderConfig(props);
String streamName = “myStream”;
ClientFactory factory = ClientFactory.withScope(scope, new URI(“//127.0.0.1:3333”);
EventStreamReader<String> reader = factory.createEventReader(myReaderId,
myReadGroup,
serializer,
config);
while(!worldEnd) {
EventRead<String> event = reader.readNextEvent(long timeout);
// Application consumes event and it is supposed to persist the Position
// object to guarantee exactly once.
consumeEvent(event.getEvent(), event.getPosition());
}
reader.close();
Transactions
Txn txn = writer.beginTxn();
txn.writeEvent(getKey(“Pravega”), “Pravega”);
txn.writeEvent(getKey(“is”), “is”);
txn.writeEvent(getKey(“invading”), “invading”);
txn.commit();
Pravega semantics
Segment
store
Segment
store
The write path
Event
Stream
Writer
Controller
1
2
Apache
BookKeeper
Long-term
storage
3
4
• Synchronous write
• Temporarily stored
• Truncated once flushed to next
storage tier
• Optimized for low-latency writes
• Asynchronous write
• Permanently stored
• Options: HDFS, NFS, Extended S3
• High read/write throughput
Append bytes
Locate segment
Segment
store
Guarantees on the write path
• Order
• Writer appends in application order
• Duplicates
• Writer IDs
• Maps to last appended data on the segment store
• Writer does not persist ID to tolerate a crash
• Txns
• Atomicity at the stream level
• If anything goes wrong with the writes, either abort or let it time out
Avoiding duplicates – Reconnect
Segment
store
Writer ID = 101 10: 1
Ack
Segment
store
Writer ID = 102 10: 2
Segment
store
Writer ID = 103 10: 2
Setup 10
10: 2
Segment
store
Writer ID = 104 10: 2
Ack
Avoiding duplicates – Transactional writes
Writer ID = 101
Ack
Controller
beginTxn
Segment
store
Writer ID = 102 10: 1
Ack
Segment
store
Writer ID = 103 10: 1
4
Controller
Eventually times out and
aborts txn
Avoiding duplicates – Transactional writes
Writer ID = 265
Ack
Controller
beginTxn
Segment
store
Writer ID = 266 26: 1
Ack
Segment
store
Segment
store
The read path
Event
Stream
Reader
Controller
1
2
Apache
BookKeeper
Long-term
storage
3
• Used for recovery alone
• Not used to serve reads
• Bytes read from memory
• If not present, pull data from Tier 2
Read bytes
Locate segment
4 Bytes read
Segment
store
Reader groups
• Group of event readers
• Read events from a set of streams
• Load distributed across readers of the group
• Segments
• A given reader reads from a set of segments
• Coordination of segment assignment done via a state synchronizer
• State synchronizer
• General facility for synchronizing state across processes
• Uses a revisioned Pravega segment
• Advanced topic: not explained further in this talk
Reader groups + Scaling
Pravega
Segment 2
Segment 1
Reader
Reader
1
Pravega
Segment 2
Segment 1
Reader
Reader
2
Segment 3
Segment 4
Scale up!
Reader groups + Scaling
Pravega
Segment 2
Segment 1
Reader
Reader
3
Segment 3
Segment 4
• Hit end of segment
• Get successors from controller
• Update reader group state
Pravega
Reader
Reader
4
Segment 4
Segment 2
Segment 3
Pravega
Reader {3}
Reader {2, 4}
5
Segment 4
Segment 2
Segment 3
Checkpoint object
• Maps segments to corresponding offsets
• Opaque to the application
Getting a checkpoint
Pravega
Segment 2
Segment 1
Reader
Reader
1 2
Initiate
checkpoint C1
Pravega
Segment 2
Segment 1
Reader
Reader
3
C
C
Pravega
Segment 2
Segment 1
Reader
Reader
Pravega
Segment 2
Segment 1
Reader
Reader
4 C1: <checkpoint object>
Segment 1: 1
Segment 2: 1
Resetting to a checkpoint
1
Reset to
checkpoint C1
Pravega
Segment 1
Reader
Reader
Segment 2
2
Reinitialize
readers
Pravega
Segment 1
Reader
Reader
Segment 2
3
Pravega
Segment 1
Reader
Reader
Segment 2
Assignment can be different from
last time
Wrap up
Take-away messages
• Pravega is all about
• Unbounded stream data
• Permanently stored
• Elasticity for streams
• Scaling producers and consumers independently
• Under active development
• Looking at first use cases
Ongoing work
• Performance tuning
• Scaling support
• Event-time support
• Geo-distribution
• Security
• … and much more
http://pravega.io
E-mail: fpj@apache.org
Twitter: @fpjunqueira
Join the community!
57
Pravega
Streaming Storage and Compute
58
Pravega
(Streaming Storage / PubSub / Messaging)
Applications
Sensor
APIs
Data / Event
Producers Consuming
Applications
Streaming Applications
Pravega
Pravega
Streaming Pipelines
59
Applications
Sensor
APIs
Pravega
Pravega
Pravega
60
Pravega
Flink reading from Pravega
Reading via ReaderGroup
61
seg A
seg B
seg C
seg D
seg E
seg F
seg G
Task Manager
Task Manager
Task Manager
Task Manager
Pravega
Controller &
Reader Group
• Readers do not choose their own segments
• ReaderGroup automatically assigns and re-balances segments
• Leaving the ReaderGroup in charge is key to automatic scaling
Reader
Reader
Reading via ReaderGroup
62
• At points in time, some segments may be not assigned to any reader
• Example: New segments, re-balancing segments, …
seg A
seg B
seg C
seg D
seg F
seg G
Task Manager
Task Manager
Task Manager
Task Manager
Pravega
Reader
Reader
seg E
being re-assigned
Controller &
Reader Group
Flink + Pravega Checkpoints
63
Task Manager
Task Manager
Task Manager
Task Manager
Job Manager
Pravega
Checkpoint-
Coordinator
seg A
seg B
seg C
seg D
seg E
seg F
Checkpoint store
(HDFS, S3, NFS, …)
seg G
being assigned
read positions
Flink + Pravega Checkpoints
64
Task Manager
Task Manager
Task Manager
Task Manager
Job Manager
Pravega
Checkpoint-
Coordinator
seg A
seg B
seg C
seg D
seg E
seg F
Checkpoint store
(HDFS, S3, NFS, …)
seg G
being assigned
(1) Trigger Checkpoint
in Pravega
read positions
checkpoint
positions
(2a) Segment
Checkpoint Data
(2b) Inject Barrier
(4) Store Check-
point Metadata
(3) Operator
Snapshots
65
Flink writing to Pravega
Pravega
The FlinkPravegaWriter
• Regular Flink SinkFunction
• No partitioner, but a "routing key"
• Remember: No partitions in Pravega
• Just dynamically created segments
• Same key always goes to the same segment
• Order of elements guaranteed per key!
66
Flink Application Pravega Nodes
seg 2
seg 1
seg 3
seg 4
Exactly-once via Transactions
• Similar to a distributed 2-phase commit
• Coordinated by asynchronous checkpoints, no voting delays
• Basic algorithm:
• Between checkpoints: Produce into transaction
• On operator snapshot: Flush local transaction (vote-to-commit)
• On checkpoint complete: Commit transactions
• On recovery: check and commit any pending transactions
67
Exactly-once via Transactions
68
chk-1 chk-2
TXN-1
✔chk-1 ✔chk-2
TXN-2
✘
TXN-3
Pravega
Stream
✔ global ✔ global
Transaction fails after local snapshot
69
chk-1 chk-2
TXN-1
✔chk-1
TXN-2
✘
TXN-3
Pravega
Stream
✔ global
Transaction fails before commit…
70
chk-1 chk-2
TXN-1
✔chk-1
TXN-2
✘
TXN-3
Pravega
Stream
✔ global ✔ global
… commit on recovery
71
chk-2
TXN-2 TXN-3
Pravega
Stream
✔ global
recover
TXN handle
chk-3
72
Looking ahead…
Looking ahead…
73
Automatic Scaling
Flink follows Pravega's scaling
(at least the first stage)
High Availability through Pravega
Use synchronizers
instead of ZooKeeper
(leader election,
distributed atomic counters, …)
Questions?
http://pravega.io
http://github.com/pravega/pravega
http://github.com/pravega/flink-connectors
E-mail: sewen@apache.org, fpj@apache.org
Twitter: @StephanEwen, @fpjunqueira
Flink Forward Berlin 2017: Stephan Ewen, Flavio Junqueira - Connecting Apache Flink and the Pravega Stream Store

Más contenido relacionado

La actualidad más candente

API Trends & Use Cases
API Trends & Use CasesAPI Trends & Use Cases
API Trends & Use CasesSmartWave
 
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...Flink Forward
 
Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...Fabian Hueske
 
Flink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by Flink
Flink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by FlinkFlink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by Flink
Flink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by FlinkFlink Forward
 
Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...
Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...
Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...Flink Forward
 
Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...
Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...
Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...Flink Forward
 
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...Flink Forward
 
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...Flink Forward
 
Why and how to leverage the power and simplicity of SQL on Apache Flink
Why and how to leverage the power and simplicity of SQL on Apache FlinkWhy and how to leverage the power and simplicity of SQL on Apache Flink
Why and how to leverage the power and simplicity of SQL on Apache FlinkFabian Hueske
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...Flink Forward
 
Apache flink 1.7 and Beyond
Apache flink 1.7 and BeyondApache flink 1.7 and Beyond
Apache flink 1.7 and BeyondTill Rohrmann
 
Flink Forward San Francisco 2018 keynote: Srikanth Satya - "Stream Processin...
Flink Forward San Francisco 2018 keynote:  Srikanth Satya - "Stream Processin...Flink Forward San Francisco 2018 keynote:  Srikanth Satya - "Stream Processin...
Flink Forward San Francisco 2018 keynote: Srikanth Satya - "Stream Processin...Flink Forward
 
Big Data Analytics Platforms by KTH and RISE SICS
Big Data Analytics Platforms by KTH and RISE SICSBig Data Analytics Platforms by KTH and RISE SICS
Big Data Analytics Platforms by KTH and RISE SICSBig Data Value Association
 
Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...
Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...
Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...Flink Forward
 
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...Flink Forward
 
Tuning Flink For Robustness And Performance
Tuning Flink For Robustness And PerformanceTuning Flink For Robustness And Performance
Tuning Flink For Robustness And PerformanceStefan Richter
 
Reducing MTTR and False Escalations: Event Correlation at LinkedIn
Reducing MTTR and False Escalations: Event Correlation at LinkedInReducing MTTR and False Escalations: Event Correlation at LinkedIn
Reducing MTTR and False Escalations: Event Correlation at LinkedInMichael Kehoe
 
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...Zalando Technology
 
APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...
APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...
APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...Michael Kehoe
 
Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...
Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...
Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...Flink Forward
 

La actualidad más candente (20)

API Trends & Use Cases
API Trends & Use CasesAPI Trends & Use Cases
API Trends & Use Cases
 
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...
Flink Forward San Francisco 2018: - Jinkui Shi and Radu Tudoran "Flink real-t...
 
Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...Streaming SQL to unify batch and stream processing: Theory and practice with ...
Streaming SQL to unify batch and stream processing: Theory and practice with ...
 
Flink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by Flink
Flink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by FlinkFlink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by Flink
Flink Forward Berlin 2017: Hao Wu - Large Scale User Behavior Analytics by Flink
 
Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...
Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...
Flink Forward San Francisco 2018: Andrew Torson - "Extending Flink metrics: R...
 
Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...
Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...
Virtual Flink Forward 2020: Everything is connected: How watermarking, scalin...
 
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...
 
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...
Flink Forward Berlin 2018: Aljoscha Krettek & Till Rohrmann - Keynote: "A Yea...
 
Why and how to leverage the power and simplicity of SQL on Apache Flink
Why and how to leverage the power and simplicity of SQL on Apache FlinkWhy and how to leverage the power and simplicity of SQL on Apache Flink
Why and how to leverage the power and simplicity of SQL on Apache Flink
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
 
Apache flink 1.7 and Beyond
Apache flink 1.7 and BeyondApache flink 1.7 and Beyond
Apache flink 1.7 and Beyond
 
Flink Forward San Francisco 2018 keynote: Srikanth Satya - "Stream Processin...
Flink Forward San Francisco 2018 keynote:  Srikanth Satya - "Stream Processin...Flink Forward San Francisco 2018 keynote:  Srikanth Satya - "Stream Processin...
Flink Forward San Francisco 2018 keynote: Srikanth Satya - "Stream Processin...
 
Big Data Analytics Platforms by KTH and RISE SICS
Big Data Analytics Platforms by KTH and RISE SICSBig Data Analytics Platforms by KTH and RISE SICS
Big Data Analytics Platforms by KTH and RISE SICS
 
Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...
Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...
Flink Forward Berlin 2018: Xiaowei Jiang - Keynote: "Unified Engine for Data ...
 
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...
 
Tuning Flink For Robustness And Performance
Tuning Flink For Robustness And PerformanceTuning Flink For Robustness And Performance
Tuning Flink For Robustness And Performance
 
Reducing MTTR and False Escalations: Event Correlation at LinkedIn
Reducing MTTR and False Escalations: Event Correlation at LinkedInReducing MTTR and False Escalations: Event Correlation at LinkedIn
Reducing MTTR and False Escalations: Event Correlation at LinkedIn
 
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
Stream Processing using Apache Flink in Zalando's World of Microservices - Re...
 
APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...
APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...
APRICOT 2017: Trafficshifting: Avoiding Disasters & Improving Performance at ...
 
Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...
Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...
Flink Forward Berlin 2018: Krzysztof Zarzycki & Alexey Brodovshuk - "Assistin...
 

Más de Flink Forward

Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Flink Forward
 
Evening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkEvening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkFlink Forward
 
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...Flink Forward
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Flink Forward
 
Introducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorIntroducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorFlink Forward
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeFlink Forward
 
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Flink Forward
 
One sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkOne sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkFlink Forward
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxFlink Forward
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink Forward
 
Apache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraApache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraFlink Forward
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkFlink Forward
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentFlink Forward
 
The Current State of Table API in 2022
The Current State of Table API in 2022The Current State of Table API in 2022
The Current State of Table API in 2022Flink Forward
 
Flink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink Forward
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsFlink Forward
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotFlink Forward
 
Processing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesProcessing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesFlink Forward
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Flink Forward
 
Batch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergBatch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergFlink Forward
 

Más de Flink Forward (20)

Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...Building a fully managed stream processing platform on Flink at scale for Lin...
Building a fully managed stream processing platform on Flink at scale for Lin...
 
Evening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in FlinkEvening out the uneven: dealing with skew in Flink
Evening out the uneven: dealing with skew in Flink
 
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
 
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
 
Introducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes OperatorIntroducing the Apache Flink Kubernetes Operator
Introducing the Apache Flink Kubernetes Operator
 
Autoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive ModeAutoscaling Flink with Reactive Mode
Autoscaling Flink with Reactive Mode
 
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
 
One sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async SinkOne sink to rule them all: Introducing the new Async Sink
One sink to rule them all: Introducing the new Async Sink
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
 
Flink powered stream processing platform at Pinterest
Flink powered stream processing platform at PinterestFlink powered stream processing platform at Pinterest
Flink powered stream processing platform at Pinterest
 
Apache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native EraApache Flink in the Cloud-Native Era
Apache Flink in the Cloud-Native Era
 
Where is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in FlinkWhere is my bottleneck? Performance troubleshooting in Flink
Where is my bottleneck? Performance troubleshooting in Flink
 
Using the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production DeploymentUsing the New Apache Flink Kubernetes Operator in a Production Deployment
Using the New Apache Flink Kubernetes Operator in a Production Deployment
 
The Current State of Table API in 2022
The Current State of Table API in 2022The Current State of Table API in 2022
The Current State of Table API in 2022
 
Flink SQL on Pulsar made easy
Flink SQL on Pulsar made easyFlink SQL on Pulsar made easy
Flink SQL on Pulsar made easy
 
Dynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data AlertsDynamic Rule-based Real-time Market Data Alerts
Dynamic Rule-based Real-time Market Data Alerts
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
 
Processing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial ServicesProcessing Semantically-Ordered Streams in Financial Services
Processing Semantically-Ordered Streams in Financial Services
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...
 
Batch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & IcebergBatch Processing at Scale with Flink & Iceberg
Batch Processing at Scale with Flink & Iceberg
 

Último

Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...amitlee9823
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxolyaivanovalion
 
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteedamy56318795
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Delhi Call girls
 
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightCheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightDelhi Call girls
 
Probability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter LessonsProbability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter LessonsJoseMangaJr1
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...amitlee9823
 
Call me @ 9892124323 Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
Call me @ 9892124323  Cheap Rate Call Girls in Vashi with Real Photo 100% SecureCall me @ 9892124323  Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
Call me @ 9892124323 Cheap Rate Call Girls in Vashi with Real Photo 100% SecurePooja Nehwal
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionfulawalesam
 
CebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxCebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxolyaivanovalion
 
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night StandCall Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysismanisha194592
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfadriantubila
 
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...SUHANI PANDEY
 
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Valters Lauzums
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusTimothy Spann
 

Último (20)

Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFx
 
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
5CL-ADBA,5cladba, Chinese supplier, safety is guaranteed
 
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
Call Girls in Sarai Kale Khan Delhi 💯 Call Us 🔝9205541914 🔝( Delhi) Escorts S...
 
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 nightCheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
Cheap Rate Call girls Sarita Vihar Delhi 9205541914 shot 1500 night
 
Probability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter LessonsProbability Grade 10 Third Quarter Lessons
Probability Grade 10 Third Quarter Lessons
 
Anomaly detection and data imputation within time series
Anomaly detection and data imputation within time seriesAnomaly detection and data imputation within time series
Anomaly detection and data imputation within time series
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
 
Call me @ 9892124323 Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
Call me @ 9892124323  Cheap Rate Call Girls in Vashi with Real Photo 100% SecureCall me @ 9892124323  Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
Call me @ 9892124323 Cheap Rate Call Girls in Vashi with Real Photo 100% Secure
 
Week-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interactionWeek-01-2.ppt BBB human Computer interaction
Week-01-2.ppt BBB human Computer interaction
 
CebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxCebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptx
 
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night StandCall Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Doddaballapur Road ☎ 7737669865 🥵 Book Your One night Stand
 
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Surabaya ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
April 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's AnalysisApril 2024 - Crypto Market Report's Analysis
April 2024 - Crypto Market Report's Analysis
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
 
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts ServiceCall Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
 
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
 
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
Digital Advertising Lecture for Advanced Digital & Social Media Strategy at U...
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and Milvus
 

Flink Forward Berlin 2017: Stephan Ewen, Flavio Junqueira - Connecting Apache Flink and the Pravega Stream Store

  • 1. Pravega: Rethinking storage for streams Stephan Ewen, Data Artisans Flavio Junqueira, Pravega Flink Forward – Berlin 2017
  • 2. Outline • Intro to Pravega • Flink + Pravega
  • 5. • Process bits • Store bits • Transmit bits Flavio Junqueira, Lives in Barcelona 01000110 01101100 01100001 01110110 01101001 01101111 01001010 01110101 01101110 01110001 01110101 01100101 01101001 01110010 01100001 00101100 01000010 01100001 01110010 01100011 01100101 01101100 01101111 01101110 01100001
  • 6. Flavio Junqueira, is in Barcelona Sep. 10 - noon 01000110 01101100 01100001 01110110 01101001 01101111 01001010 01110101 01101110 01110001 01110101 01100101 01101001 01110010 01100001 00101100 01000010 01100001 01110010 01100011 01100101 01101100 01101111 01101110 01100001 01000110 01101100 01100001 01110110 01101001 01101111 01001010 01110101 01101110 01110001 01110101 01100101 01101001 01110010 01100001 00101100 01000010 01100001 01110010 01100011 01100101 01101100 01101111 01101110 01100001 01000110 01101100 01100001 01110110 01101001 01101111 01001010 01110101 01101110 01110001 01110101 01100101 01101001 01110010 01100001 00101100 01000010 01100001 01110010 01100011 01100101 01101100 01101111 01101110 01100001 Flavio Junqueira, is in Berlin Sep. 11 – noon Flavio Junqueira, is back in Barcelona Sep. 15 - noon • Order matters • Correlation between events • Causality maybe? Time
  • 7. CPU usage: 10% Temperature: 20C • Number of devices potentially much larger • Volume per device potentially much higher CPU usage: 50% Temperature: 20C CPU usage: 60% Temperature: 20C 01000110 01101100 01100001 01110110 01101001 01101111 01001010 01110101 01101110 01110001 01110101 01100101 01101001 01110010 01100001 00101100 01000010 01100001 01110010 01100011 01100101 01101100 01101111 01101110 01100001 01000110 01101100 01100001 01110110 01101001 01101111 01001010 01110101 01101110 01110001 01110101 01100101 01101001 01110010 01100001 00101100 01000010 01100001 01110010 01100011 01100101 01101100 01101111 01101110 01100001 01000110 01101100 01100001 01110110 01101001 01101111 01001010 01110101 01101110 01110001 01110101 01100101 01101001 01110010 01100001 00101100 01000010 01100001 01110010 01100011 01100101 01101100 01101111 01101110 01100001 Time
  • 9. ….. 01110110 01100001 01101100 01000110 … 01001010 01101111 01101001 01110110 Stream processing pipeline ….. 01110110 01100001 01101100 01000110 … 01001010 01101111 01101001 01110110 ….. 01110110 01100001 01101100 01000110 … 01001010 01101111 01101001 01110110 Processing streams
  • 10. A typical architecture ….. 01110110 01100001 01101100 01000110 … 01001010 01101111 01101001 01110110 Source Messaging substrate • Ingests and buffers data • Decouples source from the engine processing the data ….. 01110110 01100001 01101100 … 01001010 01101111 01101001 Stream data processor Messaging substrate One or more stages Stream data processor
  • 11. A typical architecture ….. 01110110 01100001 01101100 01000110 … 01001010 01101111 01101001 01110110 Source Messaging substrate ….. 01110110 01100001 01101100 … 01001010 01101111 01101001 Messaging substrate Limitations: • Data stored temporarily • Not able to store an unbounded amount of stream data Multiple stages Stream data processor Stream data processor • Ingests and buffers data • Decouples source from the engine processing the data
  • 12. A typical architecture ….. 01110110 01100001 01101100 01000110 … 01001010 01101111 01101001 01110110 Source Messaging substrate ….. 01110110 01100001 01101100 Messaging substrate Multiple stages Limitations: • Data stored temporarily • Not able to store an unbounded amount of stream data • Separate bulk store for historical reads Some bulk data store Stream data processor Stream data processor • Ingests and buffers data • Decouples source from the engine processing the data
  • 13. Target of Pravega is a stream store able to: • Store stream data permanently • Preserve order • Accommodate unbounded streams
  • 15. Pravega and Streams ….. 01110110 01100001 01101100 ….. 01001010 01101111 01101001 Pravega 01000110 01110110 Append Read 01000110 01110110
  • 17. Pravega and Streams ….. 01110110 01100001 01101100 ….. 01101001 01110110 01001010 Pravega 01000110 01110110 Append Read 01000110 01110110 01101111 01101001 01101001 01101111
  • 18. Segments in Pravega ….. 01110110 01100001 01101100 ….. 01101001 01110110 01001010 Pravega 01000110 01110110 Segments Append Read 01000110 01110110 01101111 01101001 01101001 01101111 Segments • Segments are sequences of bytes
  • 19. Segments in Pravega ….. 01110110 01100001 01101100 ….. 01101001 01110110 01001010 Pravega 01000110 01110110 Segments Append Read 01000110 01110110 01101111 01101001 01101001 01101111 Segments • Segments are sequences of bytes • Use routing keys to determine segment
  • 20. Segments can be sealed
  • 21. Segments in Pravega ….. 01110110 01100001 01101100 ….. 01101001 01110110 01001010 Pravega 01000110 01110110 Segments Append Read 01000110 01110110 01101111 01101001 01101001 01101111 Segments Once sealed, a segment can’t be appended to any longer.
  • 23. How is sealing segments useful?
  • 26. Some useful ways to compose segments
  • 27. 01000110 Scaling a stream ….. 01110110 01100001 01101100 01000110 Stream has one segment 1 ….. 01110110 01100001 01101100 • Seal current segment • Create new ones 2 01000110 01000110 • Say input load has increased • Need more parallelism
  • 28. Routing key space 0.0 1.0 Time Split Split Merge 0.5 0.75 Segment 1 Segment 2 Segment 3 Segment 4 Segment 5 Segment 6 t0 t1 t2
  • 29. Routing key space 0.0 1.0 Time Split Split Merge 0.5 0.75 Segment 1 Segment 2 Segment 3 Segment 4 Segment 5 Segment 6 t0 t1 t2 Key ranges are not statically assigned to segments
  • 30. Source: Virtual cluster - Nautilus Platform
  • 31. Source: Virtual cluster - Nautilus PlatformScale up Scale down
  • 32. Transactions 01100001 01000110 Stream has two segments 1 Begin txn 2 Txn segments Write to txn 3 01100001 Upon commit 5 Seal txn segment 01000110 6 01100001 Merge txn segment into stream segment 01110110 01110110 01000110 Txn segments01110110 01000110 01100000 Write to txn 4 01100001 Txn segments01110110 01000110 01100000 01110110 01000110 01100000 s1 s2 s1 s2 s1 s2 s1 s2 s1 s2 01100001 Upon commit s10111011001100000 s2
  • 33. Transactions 01100001 01000110 Stream has two segments 1 Begin txn 2 Txn segments Write to txn 3 01100001 Upon abort 5 Eliminate segments 01110110 01110110 01000110 Txn segments01110110 01000110 01100000 Write to txn 4 01100001 Txn segments01110110 01000110 01100000 01110110 01000110 s1 s2 s1 s2 s1 s2 s1 s2 s1 s2 01100001 01100000
  • 34. Wait, how are segments manipulated?
  • 35. Controller • Control plane • A few of the controller tasks • Stream lifecycle • Create • Delete • Scale • Txn management • Create • Commit/Abort Segments 01101111 01000110 01000110 01000110 01000110 01101111 01101111 01101111 Segment store – Data plane Streams Scaling Txns Controller – Control plane Pravega
  • 36. API – Writer and Reader
  • 37. Events • Internally • Pravega is all about bytes • Current API focused on events • Some encapsulation of application bytes • Serializer interface public interface Serializer<T> { /** * Serializes the given event. * * @param value The event to be serialized. * @return The serialized form of the event. * NOTE: buffers returned should not exceed {@link #MAX_EVENT_SIZE}. */ ByteBuffer serialize(T value); /** * Deserializes the given ByteBuffer into an event. * * @param serializedValue A event that has been previously serialized. * @return The event object. */ T deserialize(ByteBuffer serializedValue); }
  • 38. EventStreamWriter API String scope = “myScope”; WriterConfig config = new WriterConfig(); String streamName = “myStream”; ClientFactory factory = ClientFactory.withScope(scope, new URI(“//demo.pravega.io:3333”)); EventStreamWriter<String> writer = factory.createEventWriter(streamName, serializer, config); while(!worldEnd) { /* E.g., getNewRecord() reads the next line in a file */ String record = getNewRecord(); String key = extractKey(record); String event = extractEvent(record); writer.writeEvent(key, event); }
  • 39. Using the EventStreamReader API String scope = “myScope”; String myReaderId = “myId”; String myReadGroup = “myGroup”; ReaderConfig config = new ReaderConfig(props); String streamName = “myStream”; ClientFactory factory = ClientFactory.withScope(scope, new URI(“//127.0.0.1:3333”); EventStreamReader<String> reader = factory.createEventReader(myReaderId, myReadGroup, serializer, config); while(!worldEnd) { EventRead<String> event = reader.readNextEvent(long timeout); // Application consumes event and it is supposed to persist the Position // object to guarantee exactly once. consumeEvent(event.getEvent(), event.getPosition()); } reader.close();
  • 40. Transactions Txn txn = writer.beginTxn(); txn.writeEvent(getKey(“Pravega”), “Pravega”); txn.writeEvent(getKey(“is”), “is”); txn.writeEvent(getKey(“invading”), “invading”); txn.commit();
  • 42. Segment store Segment store The write path Event Stream Writer Controller 1 2 Apache BookKeeper Long-term storage 3 4 • Synchronous write • Temporarily stored • Truncated once flushed to next storage tier • Optimized for low-latency writes • Asynchronous write • Permanently stored • Options: HDFS, NFS, Extended S3 • High read/write throughput Append bytes Locate segment Segment store
  • 43. Guarantees on the write path • Order • Writer appends in application order • Duplicates • Writer IDs • Maps to last appended data on the segment store • Writer does not persist ID to tolerate a crash • Txns • Atomicity at the stream level • If anything goes wrong with the writes, either abort or let it time out
  • 44. Avoiding duplicates – Reconnect Segment store Writer ID = 101 10: 1 Ack Segment store Writer ID = 102 10: 2 Segment store Writer ID = 103 10: 2 Setup 10 10: 2 Segment store Writer ID = 104 10: 2 Ack
  • 45. Avoiding duplicates – Transactional writes Writer ID = 101 Ack Controller beginTxn Segment store Writer ID = 102 10: 1 Ack Segment store Writer ID = 103 10: 1 4 Controller Eventually times out and aborts txn
  • 46. Avoiding duplicates – Transactional writes Writer ID = 265 Ack Controller beginTxn Segment store Writer ID = 266 26: 1 Ack
  • 47. Segment store Segment store The read path Event Stream Reader Controller 1 2 Apache BookKeeper Long-term storage 3 • Used for recovery alone • Not used to serve reads • Bytes read from memory • If not present, pull data from Tier 2 Read bytes Locate segment 4 Bytes read Segment store
  • 48. Reader groups • Group of event readers • Read events from a set of streams • Load distributed across readers of the group • Segments • A given reader reads from a set of segments • Coordination of segment assignment done via a state synchronizer • State synchronizer • General facility for synchronizing state across processes • Uses a revisioned Pravega segment • Advanced topic: not explained further in this talk
  • 49. Reader groups + Scaling Pravega Segment 2 Segment 1 Reader Reader 1 Pravega Segment 2 Segment 1 Reader Reader 2 Segment 3 Segment 4 Scale up!
  • 50. Reader groups + Scaling Pravega Segment 2 Segment 1 Reader Reader 3 Segment 3 Segment 4 • Hit end of segment • Get successors from controller • Update reader group state Pravega Reader Reader 4 Segment 4 Segment 2 Segment 3 Pravega Reader {3} Reader {2, 4} 5 Segment 4 Segment 2 Segment 3
  • 51. Checkpoint object • Maps segments to corresponding offsets • Opaque to the application
  • 52. Getting a checkpoint Pravega Segment 2 Segment 1 Reader Reader 1 2 Initiate checkpoint C1 Pravega Segment 2 Segment 1 Reader Reader 3 C C Pravega Segment 2 Segment 1 Reader Reader Pravega Segment 2 Segment 1 Reader Reader 4 C1: <checkpoint object> Segment 1: 1 Segment 2: 1
  • 53. Resetting to a checkpoint 1 Reset to checkpoint C1 Pravega Segment 1 Reader Reader Segment 2 2 Reinitialize readers Pravega Segment 1 Reader Reader Segment 2 3 Pravega Segment 1 Reader Reader Segment 2 Assignment can be different from last time
  • 55. Take-away messages • Pravega is all about • Unbounded stream data • Permanently stored • Elasticity for streams • Scaling producers and consumers independently • Under active development • Looking at first use cases
  • 56. Ongoing work • Performance tuning • Scaling support • Event-time support • Geo-distribution • Security • … and much more http://pravega.io E-mail: fpj@apache.org Twitter: @fpjunqueira Join the community!
  • 58. Streaming Storage and Compute 58 Pravega (Streaming Storage / PubSub / Messaging) Applications Sensor APIs Data / Event Producers Consuming Applications Streaming Applications
  • 61. Reading via ReaderGroup 61 seg A seg B seg C seg D seg E seg F seg G Task Manager Task Manager Task Manager Task Manager Pravega Controller & Reader Group • Readers do not choose their own segments • ReaderGroup automatically assigns and re-balances segments • Leaving the ReaderGroup in charge is key to automatic scaling Reader Reader
  • 62. Reading via ReaderGroup 62 • At points in time, some segments may be not assigned to any reader • Example: New segments, re-balancing segments, … seg A seg B seg C seg D seg F seg G Task Manager Task Manager Task Manager Task Manager Pravega Reader Reader seg E being re-assigned Controller & Reader Group
  • 63. Flink + Pravega Checkpoints 63 Task Manager Task Manager Task Manager Task Manager Job Manager Pravega Checkpoint- Coordinator seg A seg B seg C seg D seg E seg F Checkpoint store (HDFS, S3, NFS, …) seg G being assigned read positions
  • 64. Flink + Pravega Checkpoints 64 Task Manager Task Manager Task Manager Task Manager Job Manager Pravega Checkpoint- Coordinator seg A seg B seg C seg D seg E seg F Checkpoint store (HDFS, S3, NFS, …) seg G being assigned (1) Trigger Checkpoint in Pravega read positions checkpoint positions (2a) Segment Checkpoint Data (2b) Inject Barrier (4) Store Check- point Metadata (3) Operator Snapshots
  • 65. 65 Flink writing to Pravega Pravega
  • 66. The FlinkPravegaWriter • Regular Flink SinkFunction • No partitioner, but a "routing key" • Remember: No partitions in Pravega • Just dynamically created segments • Same key always goes to the same segment • Order of elements guaranteed per key! 66 Flink Application Pravega Nodes seg 2 seg 1 seg 3 seg 4
  • 67. Exactly-once via Transactions • Similar to a distributed 2-phase commit • Coordinated by asynchronous checkpoints, no voting delays • Basic algorithm: • Between checkpoints: Produce into transaction • On operator snapshot: Flush local transaction (vote-to-commit) • On checkpoint complete: Commit transactions • On recovery: check and commit any pending transactions 67
  • 68. Exactly-once via Transactions 68 chk-1 chk-2 TXN-1 ✔chk-1 ✔chk-2 TXN-2 ✘ TXN-3 Pravega Stream ✔ global ✔ global
  • 69. Transaction fails after local snapshot 69 chk-1 chk-2 TXN-1 ✔chk-1 TXN-2 ✘ TXN-3 Pravega Stream ✔ global
  • 70. Transaction fails before commit… 70 chk-1 chk-2 TXN-1 ✔chk-1 TXN-2 ✘ TXN-3 Pravega Stream ✔ global ✔ global
  • 71. … commit on recovery 71 chk-2 TXN-2 TXN-3 Pravega Stream ✔ global recover TXN handle chk-3
  • 73. Looking ahead… 73 Automatic Scaling Flink follows Pravega's scaling (at least the first stage) High Availability through Pravega Use synchronizers instead of ZooKeeper (leader election, distributed atomic counters, …)