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
########## 今天的苦逼是为了不这样一直苦逼下去!##########