一、Flink开发IDEA环境搭建与测试

1、IDEA开发环境

先虚拟机联网,然后执行yum -y install nc
nc是用来打开端口的工具
然后nc -l 9000

1.pom文件设置

2、flink开发流程

Flink具有特殊类DataSet并DataStream在程序中表示数据。您可以将它们视为可以包含重复项的不可变数据集合。在DataSet数据有限的情况下,对于一个DataStream元素的数量可以是无界的

这些集合在某些关键方面与常规Java集合不同。首先,它们是不可变的,这意味着一旦创建它们就无法添加或删除元素。你也不能简单地检查里面的元素

集合最初通过在弗林克程序添加源创建和新的集合从这些通过将它们使用API方法如衍生map,filter等等

Flink程序看起来像是转换数据集合的常规程序。每个程序包含相同的基本部分:

1)获取execution environment, 
 final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();2)加载/创建初始化数据 
 DataStream<String> text = env.readTextFile(“file:///path/to/file”);3)指定此数据的转换 
 val mapped = input.map { x => x.toInt }

4)指定放置计算结果的位置
writeAsText(String path)
print()

5)触发程序执行
在local模式下执行程序
execute()
将程序达成jar运行在线上

./bin/flink run \ 
 -m hsiehchou121:8081 \ 
 ./examples/batch/WordCount.jar \ 
 –input hdfs:///user/root/input/wc.txt \ 
 –output hdfs:///user/root/output2 \
3、Wordcount案例

1)Scala代码

2)Java代码

3)运行测试

首先,使用nc命令启动一个本地监听,命令是:
[root@hsiehchou121 ~]$ nc -l 9000

通过netstat命令观察9000端口。 netstat -anlp | grep 9000,启动监听如果报错:-bash: nc: command not found,请先安装nc,在线安装命令:yum -y install nc。
然后,IDEA上运行flink官方案例程序

hsiehchou121上输入 
 [root@hsiehchou121 ~] nc -l 9000 
 learn flink 
 hadoop storm flink 
 flink flink hsiehchou

4)集群测试

这里单机测试官方案例

[root@hsiehchou121 flink-1.6.1]$ pwd 
 /opt/flink-1.6.1[root@hsiehchou121 flink-1.6.1]$ ./bin/start-cluster.sh 
 Starting cluster. 
 Starting standalonesession daemon on host hsiehchou121. 
 Starting taskexecutor daemon on host hsiehchou121.[root@hsiehchou121 flink-1.6.1]$ jps 
 StandaloneSessionClusterEntrypoint 
 TaskManagerRunner 
 Jps[root@hsiehchou121 flink-1.6.1]$ ./bin/flink run examples/streaming/SocketWindowWordCount.jar –port 9000


单词在5秒的时间窗口(处理时间,翻滚窗口)中计算并打印到stdout。监视TaskManager的输出文件并写入一些文本nc(输入在点击后逐行发送到Flink):

4、使用IDEA开发离线程序

Dataset是flink的常用程序,数据集通过source进行初始化,例如读取文件或者序列化集合,然后通过transformation(filtering、mapping、joining、grouping)将数据集转成,然后通过sink进行存储,既可以写入hdfs这种分布式文件系统,也可以打印控制台,flink可以有很多种运行方式,如local、flink集群、yarn等.
1)scala程序

2) java程序

3)运行