Flink初探wordCout
知识点
Flink介绍
1、无界数据-->数据不断产生
2、有界数据-->最终不再改变的数据
3、有界数据集是无界数据集的一个特例
4、有界数据集在flink内部是以一种终态数据集进行处理的
5、在flink中,有界和无界的差别非常小
6、使用同一套流计算引擎上的API操作两种数据类型 流计算:
数据不断产生,就一直处于计算状态
批处理:
完成一定时间段的计算任务后,就释放资源 Flink特性:
结果精准,即使是无序数据或者延迟到达的数据
有状态以及容错。
有状态,表示一直保存计算结果,以便往后传递计算值 实现精准一次计算的应用状态
大规模计算,几千台节点上运算,高吞吐和低延迟的特点
Flink通过检查点机制实现精准一次的计算保证,在故障时可以体现出来
flink支持流计算以及窗口化操作
flink支持灵活的基础时间的窗口计算
flink容错是轻量级的,保证零数据丢失。
1、下载并安装
官网安装步骤:https://ci.apache.org/projects/flink/flink-docs-release-1.8/tutorials/local_setup.html
2、本人安装版本
1、flink-1.7.2-bin-hadoop24-scala_2.11.tgz
2、tar -xzvf flink-1.7.2-bin-hadoop24-scala_2.11.tgz
3、mv flink-1.7.2 /usr/local/flink
3、运行flink
./bin/start-cluster.sh
4、web ui查看flink界面
http://ip:8081
5、查看日志信息
查看flink启动日志信息 log/flink-root-standalonesession-0-localhost.localdomain.log
查看job任务启动信息 log/flink-root-taskexecutor-0-localhost.localdomain.log
查看job任务输出信息 tail -100f flink-root-taskexecutor-0-localhost.localdomain.out
6、编写wordcout程序,这个可以查看官网
a)pom.xml , 注意将<scope>provided</scope>注释,否则找不到dataset类
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.ywj</groupId>
<artifactId>flink.test</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-core -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-core</artifactId>
<version>1.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java -->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.12</artifactId>
<version>1.7.2</version>
<!--<scope>provided</scope>-->
</dependency> </dependencies>
</project>
b)SocketWindowWordCount.java
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.ReduceFunction; import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.Collector; public class SocketWindowWordCount { public static void main(String[] args) throws Exception { // 定义连接端口
final int port=8888;
// 得到执行环境对象
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); // 连接套接字socket之后,读取输入数据text
DataStream<String> text = env.socketTextStream("localhost", port, "\n"); // 解析数据:分组,窗口,聚合,计数
DataStream<WordWithCount> windowCounts = text
.flatMap(new FlatMapFunction<String, WordWithCount>() {
public void flatMap(String value, Collector<WordWithCount> out) {
//value.split("\\s") 将value按照空格或者制表符等进行切割
for (String word : value.split("\\s")) {//value为输入的一行数据
out.collect(new WordWithCount(word, 1L)); //封装成WordWithCount对象
}
}
})
.keyBy("word") //根据key进行分组 ,word和 new WordWithCount(word,1L)中的word要一致
.timeWindow(Time.seconds(5),Time.seconds(1))//5秒一窗口,1秒一计算
.reduce(new ReduceFunction<WordWithCount>() {
public WordWithCount reduce(WordWithCount a, WordWithCount b) {
return new WordWithCount(a.word, a.count + b.count); //计数
}
}); // print the results with a single thread, rather than in parallel
windowCounts.print().setParallelism(1); env.execute("Socket Window WordCount");
} // Data type for words with count
public static class WordWithCount { public String word;
public long count; public WordWithCount() {} public WordWithCount(String word, long count) {
this.word = word;
this.count = count;
} @Override
public String toString() {
return word + " : " + count;
}
}
}
c)Exception in thread "main" java.lang.VerifyError: Uninitialized object exists on backward branch 96,这种错误
请升级JDK版本,本人使用的是jdk8-211版本
7、打包运行
a) mvn package 打成jar包,放入centos中
b)查看flinks时候运行 netstat -ano | grep 8081
c) nc -l 8888 -v
d) ./bin/flink run -c SocketWindowWordCount /home/ywj/flink.test-1.0-SNAPSHOT.jar
e) 查看输出信息 tail -100f flink-root-taskexecutor-0-localhost.localdomain.out
############如果在windows进行测试,可以在win10中使用netcat#######
netcat使用
netcat测试
linux (centos)
1、nc 192.168.227.128 5000 客户端
2、 nc -l 5000 -v 服务端 windows(win10)
1、nc -L -p 8888 服务端
2、nc localhost 8888 客户端
windows调试wordcout
windows10测试:
7、cmd启动执行 nc -L -p 8888
8、运行flink代码
Flink初探wordCout的更多相关文章
- Flink初探-为什么选择Flink
本文主要记录一些关于Flink与storm,spark的区别, 优势, 劣势, 以及为什么这么多公司都转向Flink. What Is Flink 一个通俗易懂的概念: Apache Flink 是近 ...
- Flink的sink实战之一:初探
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Flink SQL Client初探
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- [转]为何选择 Flink
本文转自:https://www.ituring.com.cn/book/tupubarticle/23229 第 1 章 为何选择 Flink 人们对某件事的正确理解往往来自基于有效论据的结论.要获 ...
- 入门大数据---Flink学习总括
第一节 初识 Flink 在数据激增的时代,催生出了一批计算框架.最早期比较流行的有MapReduce,然后有Spark,直到现在越来越多的公司采用Flink处理.Flink相对前两个框架真正做到了高 ...
- Flink的sink实战之二:kafka
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Flink的sink实战之三:cassandra3
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Flink的sink实战之四:自定义
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Flink SQL Client综合实战
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- 牛客练习赛42 C 出题的诀窍 (贡献,卡常)
牛客练习赛42 C 出题的诀窍 链接:https://ac.nowcoder.com/acm/contest/393/C来源:牛客网 题目描述 给定m个长为n的序列a1,a2,-,ama_1 , a_ ...
- 数据库底层索引为什么用B树
注意B-树就是B树,-只是一个符号. 简介 B/B+树是为了磁盘或其它存储设备而设计的一种平衡多路查找树(相对于二叉,B树每个内节点有多个分支),与红黑树相比,在相同的的节点的情况下,一颗B/B+树的 ...
- mysql5.7安装中的问题(服务无法启动。服务没有报告任何错误。排查方法)
1.拒绝访问的问题 权限不够,必须以管理员身份启动命令行 2.MySQL 服务无法启动.服务没有报告任何错误. 进入到你的mysql安装目录,C:\Program Files\MySQL\MySQL ...
- summernote 富文本编辑器限制输入字符长度
项目中需要一个比较简单的富文本编辑器,于是选中了summernote .虽然比较轻量,但是在开发中也遇到了几个问题,在此记录一下. 1:样式和bootstrap冲突,初始化之后显示为: .note-e ...
- 洛谷 P1600 天天爱跑步(LCA+乱搞)
传送门 我们把每一条路径拆成$u->lca$和$lca->v$的路径 先考虑$u->lca$,如果这条路径会对路径上的某一个点产生贡献,那么满足$dep[u]-dep[x]=w[x] ...
- 编译vim8
1.获取最新的vim源码 $ wget https://codeload.github.com/vim/vim/tar.gz/v8.1.2256 2.解压缩 $ tar -xvzf vim-8.1.2 ...
- nginx 端口转发 (proxy_pass反向代理)
第一种(访问IP转发到IP+端口) server{ listen ; server_name 192.168.1.114; index index.php index.html index.htm; ...
- Codeforces Round #402 (Div. 2) D题 【字符串二分答案+暴力】
D. String Game Little Nastya has a hobby, she likes to remove some letters from word, to obtain anot ...
- idea tomcat服务器运行打印日志到控制台是乱码解决方案
1.试过网上很多方面,给启动的时候加参数,什么-Dfile.encoding=utf8等等都没用. 2.最后是修改了tomcat-conf-logger.properties中的 我的一开始utf-8 ...
- 防止sql注入的参数化查询
参数化查询为什么能够防止SQL注入 http://netsecurity.51cto.com/art/201301/377209.htm OleDbDataAdapter Class http://m ...