知识点

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的更多相关文章

  1. Flink初探-为什么选择Flink

    本文主要记录一些关于Flink与storm,spark的区别, 优势, 劣势, 以及为什么这么多公司都转向Flink. What Is Flink 一个通俗易懂的概念: Apache Flink 是近 ...

  2. Flink的sink实战之一:初探

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. Flink SQL Client初探

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. [转]为何选择 Flink

    本文转自:https://www.ituring.com.cn/book/tupubarticle/23229 第 1 章 为何选择 Flink 人们对某件事的正确理解往往来自基于有效论据的结论.要获 ...

  5. 入门大数据---Flink学习总括

    第一节 初识 Flink 在数据激增的时代,催生出了一批计算框架.最早期比较流行的有MapReduce,然后有Spark,直到现在越来越多的公司采用Flink处理.Flink相对前两个框架真正做到了高 ...

  6. Flink的sink实战之二:kafka

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. Flink的sink实战之三:cassandra3

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. Flink的sink实战之四:自定义

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Flink SQL Client综合实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. tempfile:临时文件系统对象

    介绍 想要安全的创建名字唯一的临时文件,以防止被试图破坏应用或窃取数据的人猜出,这很有难度.tempfile模块提供了多个函数来安全创建临时文件系统资源.TemporaryFile函数打开并返回一个未 ...

  2. Beego框架POST请求接收JSON数据

    原文: https://blog.csdn.net/Aaron_80726/article/details/83870563 ------------------------------------- ...

  3. 关于WebAssembly

    一.WebAssembly是什么? WebAssembly(缩写为Wasm)是基于堆栈的虚拟机的二进制指令格式.Wasm被设计为一个可移植的目标,用于编译C / C ++ / Rust等高级语言,支持 ...

  4. Redis之哨兵机制(五)

    什么是哨兵机制 Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: ·        监控(Monitoring): 哨兵(sentinel) 会不断 ...

  5. hbase实践之HFile结构

    本文目录如下所示: 目录 HFile在HBase架构中的位置 什么是HFile HFile逻辑结构 HFile逻辑结构的优点 HFile物理结构 HFile生成流程 HFile中Block块解析 多大 ...

  6. Chrome禁用隐藏www和m

    解决方案 打开chrome://flags 启动控制台输入并执行以下内容 [ 'omnibox-ui-hide-steady-state-url-path-query-and-ref', 'omnib ...

  7. RecursiveTask和RecursiveAction的使用 以及java 8 并行流和顺序流(转)

    什么是Fork/Join框架        Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我 ...

  8. HDU 6105 - Gameia | 2017 Multi-University Training Contest 6

    /* HDU 6105 - Gameia [ 非平等博弈 ] | 2017 Multi-University Training Contest 6 题意: Bob 可以把一个点和周围所有点都染黑,还有 ...

  9. cookie与session的区别?

    一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案.同时我们也看到,由于才服务器端保持状态的方 ...

  10. HDU 5936 Difference ( 2016 CCPC 杭州 D && 折半枚举 )

    题目链接 题意 : 给出一个 x 和 k 问有多少个 y 使得 x = f(y, k) - y .f(y, k) 为 y 中每个位的数的 k 次方之和.x ≥ 0 分析 : f(y, k) - y = ...