1. flink入门学习可以首先看官网文档,官网文档链接:Apache Flink 1.11 Documentation: Apache Flink Documentation (目前项目使用的版本是1.11,所以主要依照该版本文档提供下面的总结资料,如果有升级,请学习相应的新版本文档)
2. 首先尝试本地安装并启动flink,然后运行官网的示例,此处请参照:Apache Flink 1.11 Documentation: Local Installation 来一步步进行。
如果是在windows上操作该流程,请注意以下几点:
A. 请在本机安装Cygwin,执行 ./bin/start-cluster.sh 这类flink shell脚本,必须用linux环境,用git bash也会失败。
B. 请在bin目录下的flink-daemon.sh文件开头添加如下参数:
JVM_ARGS="-Xms256M -Xmx512M -XX:PermSize=64M -XX:MaxNewSize=64m -XX:MaxPermSize=128m"
不添加,可能会启动失败,遇到关于JVM的metaspace相关异常。
C. 启动是否成功,需要查看log文件夹下的日志,看日志中是否有报错。
3. 之后就可以关闭Cygwin中启动的flink了,后续的学习都是采用local模式,在IDE中跑program。
4. 参照 Apache Flink 1.11 Documentation: Fraud Detection with the DataStream API 中所讲,一步步搭建一个可运行的project。(后面的自己练习可以在该工程基础上去做)
5. 开始 Learn Flink 章节,通过阅读形成对flink的认知。链接如下:Apache Flink 1.11 Documentation: Learn Flink: Hands-on Training
6. 开始Concepts章节,通过阅读了解flink中流计算的概念。
7. 开始Application Development章节的学习,链接:Apache Flink 1.11 Documentation: Flink DataStream API Programming Guide
其中该链接下的Example Program建议跟着做一遍,要注意本机安装netcat,另外官网提供的开启nc的socket命令为 nc -lk 9999,可能会运行失败,这时可以运行命令 nc -lp 9999,可起到一样的效果。
(这个需要netcat的示例,其实非常好的提供了一个模拟无界数据流的方式,而且依赖简单,启动和使用都很方笔,相比本机搭建一个kafka,再写producer,netcat是更快的选择。另外可以通过两个netcat进程,开启两个端口来模拟两个无界输入流的场景。)
8. Watermarks、connect、window、keyBy、process、aggregate、filter、flatmap需要重点理解并掌握。