apache flink入门一
Posted 微小韦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache flink入门一相关的知识,希望对你有一定的参考价值。
Flink是什么
flink的前身是一个叫做Stratosphere的研究项目,2014年该项目更名为flink,并且在同年成为apache基金会项目,2015年成为apache顶级项目。flink是真正基于流的大数据处理框架,在数据分析、统计、监控、告警、报表等领域有广泛的应用场景。
Flink安装
当前时间点flink的最新稳定版本是1.10.1,我们先尝试本地安装[1]
•确保本地java版本8或者11,java -version•下载安装包[2]•解压 tar -zxvf flink-1.10.1-bin-scala_2.11.tgz && cd flink-1.10.1•启动服务 ./bin/start-cluster.sh
结构
进程
启动服务后,在进程层面,会多出两个进程,ps -ef | grep flink #查看进程:
•jobmanager:webui和调度器•taskmanager:任务执行单元
目录
bin:运行脚本
conf:配置文件,包含日志、集群等相关配置
example:示例代码jar包,可以直接在flink集群中运行
lib:依赖jar包
opt:flink和其他平台交互的jar包
plugin:扩展插件
log:日志目录,.out代表标准日志输出
管理页面
默认webui使用8081端口,如果是本地直接访问:http://localhost:8081
运行示例
这里我们尝试运行一个安装包里面自带的示例,也是作为demo使用频度非常高的一个例子,统计单词出现次数。
•找到示例包位置,examples/streaming/WordCount.jar•创建输入文件,比如vi /tmp/input.txt 输入一些单词•运行示例包,bin/flink run examples/streaming/WordCount.jar --input /tmp/input.txt --output /tmp/output.txt•查看/tmp/output.txt文件的输出结果
流式应用
上面的例子,更多的给人的感觉,类似于批处理的案例,批量处理一些文件,那真实的流式处理是什么样子的?在真实世界里面,为了保证输入数据的准确性、实时性、可重放性,可能会选择将数据存放在类似kafka这样的消息队列中,然后由flink消费消息,这里只是为了演示流式的效果,我们依然使用自带示例包来完成,只不过这次不是通过文件,而是服务端口的方式读取数据。
•启动一个端口模拟服务 nc -l 9010•启动任务,bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9010•在nc的命令下面不断输入字词•最后ctrl+c关闭端口•结果在log/taskexecutor.out文件查看
在上面的示例中,nc全名叫做netcat,是非常强大的网络工具包,上面的例子是使用nc创建一个监听9010的服务。
References
[1]
本地安装: https://ci.apache.org/projects/flink/flink-docs-release-1.10/getting-started/tutorials/local_setup.html[2]
安装包: https://mirror.bit.edu.cn/apache/flink/flink-1.10.1/flink-1.10.1-bin-scala_2.11.tgz
以上是关于apache flink入门一的主要内容,如果未能解决你的问题,请参考以下文章
Apache Flink 入门,了解 Apache Flink