Flink预览
我们来看下Flink在不断迭代之后,较新的流处理引擎,具有的特性
首先,对于处理顺序,由于同时支持事件时间和处理时间语义,如果使用事件时间,能够针对无序事件提供一致,精准的结果.如果使用处理时间,则可以做到低延时高吞吐
而且提供了exactly-once的状态一致性保证.
层次化API在表达能力和易用性方面各有权衡,提供了通用的流处理操作原语来精准控制时间和状态接口
提供了常见存储系统的连接器,比如Kafka,Cassandra,Elasticsearch,JDBC,HDFS等
支持多种部署方式,比如Kubernetes,YARN,Apache Mesos等,从而快速回复,无需停机
可以不进行丢失应用状态的情况下更新作业的程序代码,进行跨Flink集群的作业迁移
提供了详细的,高度自定义化得metrics集合,方便监控响应问题.
运行一个Flink应用.
Flink本身支持了嵌入式执行模式,将自身连同整个Flink系统在单个JVM进程中启动,这就方便Flink作业在IDE中调试.
而本地集群的使用,也并不困难,我们一步步的启动本地集群并运行一个流式应用.
首先是下载一个支持Scala 2.12的Flink包
然后解压相关文件
tar xvfz flink.tgz
之后启动本地Flink集群
./bin/start-cluster.sh Starting cluster
然后会在本地的8081端口上开放Flink Web UI,直接访问可以查看运行状态
这时候我们尝试准备一个Jar方便提交任务
然后在集群上运行示例Jar
./bin/flink run -c io.github.streamingwithflink.chapter1.AverageSensorReading examples-scala.jar
接下来就可以在Web UI上看到Running Jobs中有一个作业了
如果希望查看内部的输出结果,也可以在WebUI上进行查看
而希望停止这个任务,则只需要点击Cancel按钮
最后别忘了停止本地Flink集群.
./bin/stop-cluster.sh