本文主要是简单介绍一下Flink基础信息,更多有关Flink的介绍可以查看官方文档。
大数据(Big data),又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。大数据也可以定义为来自各种来源的大量非结构化或结构化数据。
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。
流计算是针对流式数据的实时计算。
Apache Flink? - Stateful Computations over Data Streams
Apache Flink是一个用于对无界和有界数据流进行状态计算的框架和分布式处理引擎,它同时支持批处理和流处理,作为流处理看待时输入数据流是无界的,批处理被作为一种特殊的流处理。
Flink集群启动后,首先会启动一个JobManger和一个或多个TaskManager。由Client提交任务给JobManager,JobManager再调度任务到各个TaskManager去执行,然后TaskManager将心跳和统计信息汇报给JobManager。TaskManager之间以流的形式进行数据的传输。JobManager、TaskManager和Client均为独立的JVM进程。
系统的协调者,负责接收Job,调度组成Job的多个Task的执行,收集Job的状态信息,管理Flink集群中的TaskManager。
实际负责执行计算的Worker,并负责管理其所在节点的资源信息,在启动的时候将资源的状态向JobManager汇报。
负责提交Job,可以运行在任何与JobManager环境连通的机器上,提交Job后,Client可以结束进程,也可以不结束并等待结果返回。
Flink程序的基础构建模块是流和转换,每一个数据流都起始于一个或多个source,终止于一个或多个sink。
Flink程序的基础构建模块是流(streams)与转换(transformations),每一个数据流起始于一个或多个source,并终止于一个或多个sink,下面是一个由Flink程序映射为Streaming Dataflow的示意图:
public static void main(String[] args) throws Exception {
// 创建数据流执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// 通过连接socket获取输入数据
DataStream<String> text = env.socketTextStream("localhost", 9009, "\n");
// 解析数据
DataStream<Tuple2<String, Integer>> windowCounts = text
.flatMap(new FlatMapFunction<String, Tuple2<String, Integer>>() {
@Override
public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
for (String word : value.split("\\s")) {
out.collect(Tuple2.of(word, 1));
}
}
})
.keyBy(0)
.timeWindow(Time.seconds(5))
.sum(1);
// 将结果打印到控制台
windowCounts.print();
env.execute("Socket Window WordCount");
}
Flink的容错机制的核心部分是分布式数据流和运营商状态的一致快照,系统发生故障的时候这些快照可以充当一致性检查点来退回,恢复作业的状态和计算位置等。
详情参考Data Streaming Fault Tolerance
原文:https://www.cnblogs.com/cjblogs/p/10695562.html