Flink学习笔记

Flink

Flink提供了不同抽象级别的API供流式或批处理应用开发使用

核心API:DataStream API(有界+无界)、DataSet API(有界)

为数据处理提供通用构建模块:

多种形式的Transformation

连接(join)

聚合(aggregation)

窗口操作(window)

状态(state)

  

./bin/start-scala-shell.sh yarn -n 2 

sink组件

storm 延迟低倒是吞吐量小

spark streaming 吞吐量大但是延迟高

flink 高吞吐,低延迟

python scikit-learn 机器学习库最多的一个包

 

scala> val path="/home/simon"
path: String = /home/simon

scala> val dataSet = benv.readTextFile(s"$path/orders.csv")
dataSet: org.apache.flink.api.scala.DataSet[String] = org.apache.flink.api.scala.DataSet@6f4f2cc0

scala> dataSet.flatMap(_.split(",")(1)).map((_,1L)).groupBy(0).sum(1).print()

 

scala> dataSet.flatMap(_.split(",")(1)).map((_,1L)).groupBy(0).sum(1).print()
Submitting job with JobID: 260e853db426149567354ee0379b1d05. Waiting for job completion.
Connected to JobManager at Actor[akka.tcp://flink@localhost:51150/user/jobmanager#1338506879] with leader session id 00000000-0000-0000-0000-000000000000.
04/06/2020 20:09:22     Job execution switched to status RUNNING.
04/06/2020 20:09:22     CHAIN DataSource (at $line9.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$i) -> FlatMap (FlatMap at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Map (Map at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Combine(SUM(1))(1/1) switched to SCHEDULED 
04/06/2020 20:09:22     CHAIN DataSource (at $line9.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$i) -> FlatMap (FlatMap at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Map (Map at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Combine(SUM(1))(1/1) switched to DEPLOYING 
04/06/2020 20:09:22     CHAIN DataSource (at $line9.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$i) -> FlatMap (FlatMap at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Map (Map at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Combine(SUM(1))(1/1) switched to RUNNING 
04/06/2020 20:09:36     Reduce (SUM(1))(1/1) switched to SCHEDULED 
04/06/2020 20:09:36     Reduce (SUM(1))(1/1) switched to DEPLOYING 
04/06/2020 20:09:36     CHAIN DataSource (at $line9.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$i) -> FlatMap (FlatMap at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Map (Map at $line11.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:65)) -> Combine(SUM(1))(1/1) switched to FINISHED 
04/06/2020 20:09:37     Reduce (SUM(1))(1/1) switched to RUNNING 
04/06/2020 20:09:37     DataSink (collect())(1/1) switched to SCHEDULED 
04/06/2020 20:09:37     DataSink (collect())(1/1) switched to DEPLOYING 
04/06/2020 20:09:37     Reduce (SUM(1))(1/1) switched to FINISHED 
04/06/2020 20:09:37     DataSink (collect())(1/1) switched to RUNNING 
04/06/2020 20:09:37     DataSink (collect())(1/1) switched to FINISHED 
04/06/2020 20:09:37     Job execution switched to status FINISHED.
(0,1629244)
(1,3355566)
(2,1810689)
(3,1706910)
(4,1710869)
(5,1709182)
(6,1686699)
(7,1681790)
(8,1693036)
(9,1693446)
(_,1)
(d,1)
(e,1)
(i,1)
(r,1)
(s,1)
(u,1)

scala> val text = senv.socketTextStream("192.168.0.110", 9999, '\n')
text: org.apache.flink.streaming.api.scala.DataStream[String] = org.apache.flink.streaming.api.scala.DataStream@32e0b990

scala> dataSet.flatMap(_.split("//s+")).map((_,1L)).keyBy(0).sum(1).print()
<console>:65: error: value keyBy is not a member of org.apache.flink.api.scala.DataSet[(String, Long)]
       dataSet.flatMap(_.split("//s+")).map((_,1L)).keyBy(0).sum(1).print()
                                                    ^

scala> text.flatMap(_.split("//s+")).map((_,1L)).keyBy(0).sum(1).print()
res3: org.apache.flink.streaming.api.datastream.DataStreamSink[(String, Long)] = org.apache.flink.streaming.api.datastream.DataStreamSink@77459635

scala> senv.execute("My streaming program")
Submitting job with JobID: c87a183f418031726973be051e3240bd. Waiting for job completion.
Connected to JobManager at Actor[akka.tcp://flink@localhost:51150/user/jobmanager#1338506879] with leader session id 00000000-0000-0000-0000-000000000000.
04/06/2020 20:17:50     Job execution switched to status RUNNING.
04/06/2020 20:17:50     Source: Socket Stream(1/1) switched to SCHEDULED 
04/06/2020 20:17:50     Flat Map -> Map(1/1) switched to SCHEDULED 
04/06/2020 20:17:50     aggregation -> Sink: Unnamed(1/1) switched to SCHEDULED 
04/06/2020 20:17:50     Source: Socket Stream(1/1) switched to DEPLOYING 
04/06/2020 20:17:50     Flat Map -> Map(1/1) switched to DEPLOYING 
04/06/2020 20:17:50     aggregation -> Sink: Unnamed(1/1) switched to DEPLOYING 
04/06/2020 20:17:50     Source: Socket Stream(1/1) switched to RUNNING 
04/06/2020 20:17:50     Flat Map -> Map(1/1) switched to RUNNING 
04/06/2020 20:17:50     aggregation -> Sink: Unnamed(1/1) switched to RUNNING 

Flink容错

storm:在record level级别处理数据,数据延迟低,吞吐有限

Spark Streaming:将源头数据流分成了微批,吞吐大,但数量延迟增加了

Flink:核心分布式数据流和状态快照(即分布式快照,是轻量的)

 

watermakr水位线:

process time翻滚窗口:

基于event time的滑动窗口:

撤回:

反压机制:

./bin/flink run -h

./bin/yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024

 

posted @ 2020-04-06 17:17  Simon92  阅读(20)  评论(0编辑  收藏  举报