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 ...
随机推荐
- iTerm2快速SSH连接并保存密码
背景 Mac自带terminal,以及比较好用的iTerm2命令行工具,都缺乏一个功能,就是远程SSH连接,无法保存密码.一种方法是将本机的ssh_key放到远程服务器中实现无密码登录.这种方法在很多 ...
- linux——在windows上搭建linux练习环境
程序员自己研究——java-linux-php——环境搭建 需要首选准备一个linux环境. 1,可用安装一个虚拟机:VMware虚拟机 2,安装一个VMware大约5分钟左右. 3,截止目前2019 ...
- ubuntu NGINX uwsgi https 部署Django 遇到的问题
搞了3天终于把Django成功部署到Ubuntu,记录一下: 引用来自泡泡茶壶: Ubuntu下的Nginx + Uwsgi + Django项目部署详细流程 前提说明: Django作为小程序的后端 ...
- python之collections模块(nametuple,Counter)
前言: import collections print([name for name in dir(collections) if not name.startswith("_" ...
- Spring boot连接3.03以上的mongodb 权限验证问题
由于3.0.3,mongodb加入了SCRAM-SHA-1校验方式,需要第三方工具配合进行验证,所有Spring boot连接MongoDB时会出现用户认证失败. 解决方法: > use adm ...
- JS !function 稀奇古怪的写法
!function(){alert("Execute after ()fun!")}(alert("Execute Firstly!")) 注意上面的执行顺序
- 怎么把word文档粘贴到编辑器里啊?
很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...
- 互联网上最可怕的搜索引擎:shodan
互联网上最可怕的搜索引擎:shodan 介绍:http://tech.qq.com/a/20130410/000013.htm
- c/c++读取一行可以包含空格的字符串(getline,fgets用法)
1.char[]型 char buf[1000005]; cin.getline(buf,sizeof(buf)); 多行文件输入的情况: while(cin.getline(buf,sizeof(b ...
- Digit Division(排列组合+思维)(Gym 101480D )
题目链接:Central Europe Regional Contest 2015 Zagreb, November 13-15, 2015 D.Digit Division(排列组合+思维) 题解: ...