Flink简介和简易上手使用

Flink官网地址
我只想踏踏实实的学技术,用技术。那就从官网开始,翻阅着官网,一页一页翻译,一页一页的进步。
映入眼帘的第一句话是对Flink的整体性概括:
Apache Flink— Stateful Computations over Data Streams

在数据流上有状态的计算。Data Streams数据流,关键点是Stateful Computations,Flink如何设计Stateful 的概念?有状态的是什么样的状态呢? 现在可以想象到的是将状态做为数据流中某种标签一般,当数据流流过之后,我们可以对标签进行某种计算。

Flink官网的应用架构图:
Flink的架构图
Transactions(交易),Logs(日志),IOT(物联网),Clicks(网站点击)都能通过两种方式 Real-time Events(实时事件)或者 Database File System,KV-Store(数据库的键值对)去汇入Flink系统。

图的中间部分, Flink的底层支持HDFS,S3,NFS作为存储,8S,YARN,Mesos作为资源调度。顶层支持的应用类型有:

  • Event-driven Applications(基于它流的Real-time Events 构建的实时事件应用)
  • Streaming Pipelines 流式的数据通道
  • Stream & Batch Analytics 流式的数据分析可以接入一些 Application 或是产生事件的日志。流式的数据处理作为通道的方式,将一个数据源的数据接入到另一个数据源。

Flink需要关注的功能点:

说的就是一些特性,比如构建上面说的一些应用,流数据的处理的一致性和可靠性,灵活部署,高可用。可扩展的框架,低延时,高吞吐和使用内存计算。还有一些常用的分层的API,SQL on Stream & Batch Data &DataStream API  & DataSet API

简单的上手使用

首先需要一个类UNIX的环境,Ubuntu/Centos 虚拟机或者服务器等。Linux, Mac OS X, and Cygwin (for Windows)。安装了java8 或java11。

[root@192 ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)
[root@192 opt]# java -version
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)

下载个Flink安装包
Flink目录下各文件夹的作用:
文件夹的作用

解压后启动集群

[root@192 flink-1.6.1]# bin/start-cluster.sh 
Starting cluster.
[INFO] 1 instance(s) of standalonesession are already running on 192.168.154.132.
Starting standalonesession daemon on host 192.168.154.132.
[INFO] 1 instance(s) of taskexecutor are already running on 192.168.154.132.
Starting taskexecutor daemon on host 192.168.154.132.
[root@192 flink-1.6.1]# jps
12564 StandaloneSessionClusterEntrypoint
124308 TaskManagerRunner
13002 TaskManagerRunner
124363 Jps

启动后便能通过浏览器访问8081端口,看到Flink任务运行的UI界面。
Flink的UI界面

提交示例的Flink作业:

提交Flink作业就是将JAR包和相关的依赖提交到Flink集群并执行。通过./bin/flink来进行提交。

[root@192 flink-1.6.1]# ./bin/flink run examples/streaming/WordCount.jar
Starting execution of program
Executing WordCount example with default input data set.
Use --input to specify file input.
Printing result to stdout. Use --output to specify output path.
Program execution finished
Job with JobID ef813e1879412871a30272c5458cea36 has finished.
Job Runtime: 454 ms

大数据的HelloWorld,就是经典的WordCount程序,聚合操作。查看下数据的输出结果:

[root@192 flink-1.6.1]# tail -f log/flink-root-taskexecutor-1-192.168.154.132.out
(nymph,1)
(in,3)
(thy,1)
(orisons,1)
(be,4)
(all,2)
(my,1)
(sins,1)
(remember,1)
(d,4)

到UI界面观察运行的任务:
任务运行
examples中还有一些其他的例子,都可以进行尝试。

看图上的分析,理解上有些类似更快的MapReduce操作。实际上WordCount就是MapReduce的经典逻辑。也是分布式的最基础的逻辑。Flink是如何基于流,基于一致性状态,事件时间计算等这些我们现在只能抽象在脑海中的概念实现的快速的类似WordCount计算呢,需要我们进一步翻译、阅读理解肯思考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值