一、Flink概述
官网:https://flink.apache.org/ mapreduce-->maxcompute
HBase-->部门
quickBI
DataV
Hive-->高德地图
Storm-->Jstorm
...... 2019年1月,阿里正式开源flink-->blink Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。
Flink设 计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。 大数据计算框架 二、Flink特点
1)mapreduce
2)storm
3)spark 适用于所有企业,不同企业有不同的业务场景。处理数据量,模型都不一样。 1)随机部署应用
以其他组件集成!
flink是分布式系统,需要计算资源才可执行程序。flink可以与常见的集群资源管理器进行集成(Hadoop Yarn,Apache Mesos...)。
可以单独作为独立集群运行。
通过不同部署模式实现。
这些模式允许flink以其惯有的方式进行交互。
当我们部署flink应用程序时,Flink会根据应用程序配置的并行性自动识别所需资源。从资源管理器中请求它们。
如果发生故障,flink会请求新的资源来替换发生故障的容器。
提交或控制程序都通过REST调用进行,简化Flink在许多环境的集成。孵化... 2)以任何比例应用程序(小集群、无限集群)
Flink旨在以任何规模运行有状态流应用程序。应用程序可以并行化在集群中分布和同时执行程序。
因此,我们的应用集群可以利用无限的cpu和磁盘与网络IO。
Flink可以轻松的维护非常大的应用程序状态。
用户可拓展性报告:
1)应用程序每天可以处理万亿个事件
2)应用程序每天可以维护多个TB的状态
3)应用程序可以在数千个内核运行 3)利用内存中的性能
有状态Flink应用程序针对于对本地状态访问进行了优化。任务状态始终的保留在内存中,或者如果
大小超过了可用内存,则保存在访问高效的磁盘数据结构中(SSD 机械/固态)。
任务可以通过访问本地来执行所有计算。从来产生极小的延迟。
Flink定期和异步检查本地状态持久存储来保持出现故障时一次状态的一致性。 三、有界无界
1)无界
有开始,没有结束...
处理实时数据。
2)有界
有开始,有结束...
处理批量数据。 四、无界数据集应用场景(实时计算)
1)源源不断的日志数据
2)web应用,指标分析
3)移动设备终端(分析app状况)
4)应用在任何数据源不断产生的项目中 五、Flink运行模型
1)流计算
数据源源不断产生,我们的需求是源源不断的处理。程序需要一直保持在计算的状态。
2)批处理
计算一段完整的数据集,计算成功后释放资源,那么此时工作结束。 六、Flink的使用
1)处理结果准确:无论是有序数据还是延迟到达的数据。
2)容错机制:
有状态:保持每次的结果往下传递,实现累加。DAG(有向无环图)。
3)有很强大的吞吐量和低延迟。
计算速度快,吞吐量处理的量级大。
4)精准的维护一次的应用状态。
storm:会发生要么多计算一次,要么漏计算。
5)支持大规模的计算
可以运行在数千台节点上。
6)支持流处理和窗口化操作
7)版本化处理
8)检查点机制实现精准的一次性计算保证
checkpoint
9)支持yarn与mesos资源管理器 七、flink单节点安装部署
1)下载安装包
https://archive.apache.org/dist/flink/flink-1.6.2/flink-1.6.2-bin-hadoop28-scala_2.11.tgz
2)上传安装包到/root下 3)解压
cd /root
tar -zxvf flink-1.6.2-bin-hadoop28-scala_2.11.tgz -C hd 4)启动
cd /root/hd/flink-1.6.2
bin/start-cluster.sh 5)启动
cd /root/hd/flink-1.6.2
bin/stop-cluster.sh 6)访问ui界面
http://192.168.146.132:8081 八、flink集群安装部署
1)下载安装包
https://archive.apache.org/dist/flink/flink-1.6.2/flink-1.6.2-bin-hadoop28-scala_2.11.tgz
2)上传安装包到/root下 3)解压
cd /root
tar -zxvf flink-1.6.2-bin-hadoop28-scala_2.11.tgz -C hd 4)修改配置文件
vi flink-conf.yaml
第33行修改为:
jobmanager.rpc.address: hd09-1 5)修改slaves
vi slaves
hd09-2
hd09-3 6)分发flink到其他机器
cd /root/hd
scp -r flink-1.6.2/ hd09-2:$PWD
scp -r flink-1.6.2/ hd09-3:$PWD 7)启动集群
cd /root/hd/flink-1.6.2
bin/start-cluster.sh 8)关闭集群
cd /root/hd/flink-1.6.2
bin/stop-cluster.sh 9)访问ui界面
http://192.168.146.132:8081

九、flink结构

十、WordCount简单实现

  需求:实时的wordcount
  往端口中发送数据,实时的计算数据

1、SocketWordCount类

package com.demo.flink;

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.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.Collector; /**
* 需求:实时的wordcount
* 往端口中发送数据,实时的计算数据
*/
public class SocketWordCount {
public static void main(String[] args) throws Exception {
//1.定义连接端口
final int port = 9999;
//2.创建执行环境对象
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//3.得到套接字对象(指定:主机、端口、分隔符)
DataStreamSource<String> text = env.socketTextStream("192.168.146.132", port, "\n"); //4.解析数据,统计数据-单词计数 hello lz hello world
DataStream<WordWithCount> windowCounts = text.flatMap(new FlatMapFunction<String, WordWithCount>() {
public void flatMap(String s, Collector<WordWithCount> collector){
//按照空白符进行切割
for (String word : s.split("\\s")) {
//<单词,1>
collector.collect(new WordWithCount(word, 1L));
}
}
})
//按照key进行分组
.keyBy("word")
//设置窗口的时间长度 5秒一次窗口 1秒计算一次
.timeWindow(Time.seconds(5), Time.seconds(1))
//聚合,聚合函数
.reduce(new ReduceFunction<WordWithCount>() {
public WordWithCount reduce(WordWithCount a, WordWithCount b) throws Exception {
//按照key聚合
return new WordWithCount(a.word, a.count + b.count);
}
}); //5.打印可以设置并发度
windowCounts.print().setParallelism(1); //6.执行程序
env.execute("Socket window WordCount");
} public static class WordWithCount {
public String word;
public long count; public WordWithCount() { } public WordWithCount(String word, long count){
this.word = word;
this.count = count;
} public String toString(){
return word + " : " + count;
}
}
}

2、flink的maven依赖

<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.6.2</version>
</dependency> <dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>1.6.2</version>
</dependency> <dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.11</artifactId>
<version>1.6.2</version>
</dependency>

3、运行SocketWordCount类的main方法

4、服务器安装netcat

// 安装netcat
yum install -y nc

// 使用nc,其中9999是SocketWordCount类中定义的端口号
nc -lk -p 9999

5、此时在服务器的nc下输入单词后,SocketWordCount的main方法会时时监控到该单词并进行计算处理。

6、也可以把SocketWordCount程序打成jar包放置到服务器上,执行

[root@hd09-1 flink-1.6.2]# bin/flink run -c com.demo.flink.SocketWordCount /root/FlinkTest-1.0-SNAPSHOT.jar

启动WordCount计算程序,此时结果会写到/root/hd/flink-1.6.2/log下的flink-root-taskexecutor-0-hd09-1.out文件中。

Flink简介及使用的更多相关文章

  1. (转)Flink简介

    1. Flink的引入 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop.Storm,以及后来的 Spark,他们都有着各自专注的应用场景.Spark 掀开了内存计算的先河 ...

  2. Flink简介

    Flink简介 Flink的核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布,数据通信以及容错机制等功能.基于流执行引擎,Flink提供了诸多更高抽象层的API以方便用户编写分布 ...

  3. flink01--------1.flink简介 2.flink安装 3. flink提交任务的2种方式 4. 4flink的快速入门 5.source 6 常用算子(keyBy,max/min,maxBy/minBy,connect,union,split+select)

    1. flink简介 1.1 什么是flink Apache Flink是一个分布式大数据处理引擎,可以对有限数据流(如离线数据)和无限流数据及逆行有状态计算(不太懂).可以部署在各种集群环境,对各种 ...

  4. Apache 流框架Flink简介

    1.Flink架构及特性分析 Flink是个相当早的项目,开始于2008年,但只在最近才得到注意.Flink是原生的流处理系统,提供high level的API.Flink也提供 API来像Spark ...

  5. Flink学习之路(一)Flink简介

    一.什么是Flink? Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能. 二.Flink特点 1.现有的开源计算方案,会把流处 ...

  6. Flink(一)Flink的入门简介

    一. Flink的引入 这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有 Hadoop.Storm,以及后来的 Spark,他们都有着各自专注的应用场景.Spark 掀开了内存计算的先河 ...

  7. [转帖]Flink(一)Flink的入门简介

    Flink(一)Flink的入门简介 https://www.cnblogs.com/frankdeng/p/9400622.html 一. Flink的引入 这几年大数据的飞速发展,出现了很多热门的 ...

  8. Flink流处理(一)- 状态流处理简介

    1. Flink 简介 Flink 是一个分布式流处理器,提供直观且易于使用的API,以供实现有状态的流处理应用.它能够以fault-tolerant的方式高效地运行在大规模系统中. 流处理技术在当今 ...

  9. 新一代大数据处理引擎 Apache Flink

    https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/index.html 大数据计算引擎的发展 这几年大数据的飞速发 ...

随机推荐

  1. circRNA 序列提取中的难点

    在预测circRNA时,都是检测breakpoint 处的reads 数,最后给出的环状RNA的ID 都是诸如 chr14:106994222-107183708 这样的形式,给出了起始和终止位置: ...

  2. JS的事件冒泡和事件捕获

    先上结论:他们是描述事件触发时序问题的术语.事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件.相反的,事件冒泡是自下而上的去触发事件.绑定事件方法的第三个参数,就是控制事件 ...

  3. Swift coreAnimation 加计时器写的游戏《飞机大战》

    近期在学习swift的动画和图层.就用现学的东西写了个游戏,基本思想 基本功能都实现了.图片都是在网上找得.希望能帮助大家更好的理解动画和图层. 声明下,我是刚開始学习的人,代码写的不好.大家应该都能 ...

  4. Java类的设计----关键字super

    关键字super 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 su ...

  5. vue 组件库

    iView https://www.iviewui.com/ Radon UI https://luojilab.github.io/radon-ui/#!/ Element http://eleme ...

  6. HTML节点树

    在 HTML 中,所有标签定义的内容都是节点: 整个文档是一个文档节点 每个HTML元素是元素节点 HTML元素内的文本是文本节点 每个HTML属性是属性节点 注释是注释节点 这些节点构成了一个 HT ...

  7. AFNetworking 上传文件

    本文转载至 http://blog.csdn.net/hmt20130412/article/details/36487055 文件上传AFNetworking @第一种:我的 #pragma mar ...

  8. 《C++ Primer Plus》14.2 私有继承 学习笔记

    C++(除了成员变量之外)还有另一种实现has-a关系的途径——私有继承.使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员.(如果使用保护继承,基类的公有成员和保护成员都将称为派生类的保 ...

  9. java基础---->多线程之priority(四)

    线程的priority能告诉调度程序其重要性如何,今天我们通过实例来学习一下java多线程中的关于优先级的知识.我从没被谁知道,所以也没被谁忘记.在别人的回忆中生活,并不是我的目的. java多线程的 ...

  10. 深入浅出Docker(四):Docker的集成测试部署之道

    1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方 ...