一、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. More is better-多多益善

    思路:在图中所有的连通分量中找出包含顶点最多的个数.继续使用并查集解决! #include <iostream> using namespace std; ; int tree[MAX]; ...

  2. js中页面跳转(href)中文参数传输方式

    编码: escape(参数); 解码: unescape(参数);

  3. CentOS7服务器搭建百度贴吧云签到

    由无名智者开发的“百度贴吧云签到”应用是一个每天自动对百度贴吧定时进行云签到的程序.前面准备,已经有安装过mysql的linux服务器.mysql的安装在此不做介绍. 一.安装Apache yum i ...

  4. Android SwipeMenuListView

     Android平台上的第三方开源项目SwipeMenuListView是一种能够在某一个view条目中响应用户左右側滑(从左向右,或从右向左滑动),滑出操作菜单的UI控件.类似这样的控件达到的U ...

  5. 上传文件到 Sharepoint 的文档库中和下载 Sharepoint 的文档库的文件到客户端

    文件操作应用场景: 如果你的.NET项目是运行在SharePoint服务器上的,你可以直接使用SharePoint服务器端对象模型,用SPFileCollection.Add方法 http://msd ...

  6. 如何快捷地使用ChemBio 3D检查结构信息

    ChemBio 3D是一款三维分子结构演示软件,能够轻松快捷地进行化学结构的制作和立体旋转.ChemBio 3D Ultra 14作为ChemBio 3D的最新版本可以更加快捷地制作化学结构.本教程将 ...

  7. NFS挂在文件系统启动参数

    1.tiny6410(增强版)bootargs启动参数(周学伟)noinitrd console=ttySAC0,115200 lcd=S70 init=/init root=/dev/nfs rw ...

  8. nyoj-655-光棍的yy(大数)

    光棍的yy 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 yy常常遇见一个奇怪的事情.每当他看时间的时候总会看见11:11,这个非常纠结啊. 如今给你m个1,你能够 ...

  9. 当singleton Bean依赖propotype Bean,可以使用在配置Bean添加look-method来解决

    在Spring里面,当一个singleton bean依赖一个prototype bean,因为singleton bean是单例的,因此prototype bean在singleton bean里面 ...

  10. JAXB简单样例

    参考网页:http://www.mkyong.com/java/jaxb-hello-world-example/JAXB完整教程:https://jaxb.java.net/tutorial/1.J ...