文章目录
1. Apache Flink官网
2. 登峰大数据(微信公众号)
3. Flink简介
- Apache Flink 是一个开源
框架
和分布式
处理引擎,用于在无边界
和有边界
数据流上进行有状态
的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。 - 总述
- 处理无界和有界数据
- 部署应用到任意地方
- Flink 集成了所有常见的集群资源管理器,例如
Hadoop YARN
、Apache Mesos
和Kubernetes
,但同时也可以作为独立集群
运行。
- Flink 集成了所有常见的集群资源管理器,例如
- 运行任意规模应用
- Flink
旨在
任意规模上运行有状态
流式应用 - Flink 很容易维护非常大的应用程序状态。其异步和增量的检查点算法对处理延迟产生最小的影响,同时保证精确一次状态的一致性。
- Flink
- 利用内存性能
- 特性
- 批流一体化
- 精密的状态管理
- 事件时间支持
- 精确一次的状态一致性保障
4. Flink常见的几类应用
4.1. 事件驱动型应用
反欺诈
异常检测
基于规则的报警
业务流程监控
4.2. 数据分析应用
电信网络质量监控
移动应用中的产品更新及实验评估分析
消费者技术中的实时数据即席分析
大规模图分析
4.3. 数据管道应用
电子商务中的实时查询索引构建
电子商务中的持续 ETL(Extract-Transform-Load)
5. Flink的安装部署和尝鲜
5.1. 本地安装教程
5.2. WordCount演示(scala版本)
-
build.sbt
name := "FlinkDemo" version := "0.1" scalaVersion := "2.11.8" libraryDependencies ++= Seq( "org.apache.flink" % "flink-core" % "1.10.0", "org.apache.flink" %% "flink-scala" % "1.10.0", "org.apache.flink" %% "flink-streaming-scala" % "1.10.0", "org.apache.flink" %% "flink-clients" % "1.10.0" )
-
主题逻辑源代码
import org.apache.flink.api.java.utils.ParameterTool import org.apache.flink.api.scala._ import org.apache.flink.streaming.api.scala.{DataStream, StreamExecutionEnvironment} import org.apache.flink.streaming.api.windowing.time.Time /** * @author xiaofan */ case class WordWithCount(word: String, count: Int) object SocketWindowWordCount { def main(args: Array[String]): Unit = { val port: Int = try { ParameterTool.fromArgs(args).getInt("port") } catch { case e: Exception => { System.err.println("No port specified. Please run 'SocketWindowWordCount --port <port>'") return } } // 获得执行环境 val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment // 获得输入数据 val text: DataStream[String] = env.socketTextStream("192.168.1.27", port, '\n') // 处理数据 val windowCounts: DataStream[WordWithCount] = text.flatMap(_.split("\\s")) .map(x => WordWithCount(x, 1)) .keyBy("word") .timeWindow(Time.seconds(5), Time.seconds(1)) .sum("count") // 以单线程打印结果 windowCounts.print().setParallelism(1) env.execute("Socket Window WordCount") } }
-
启动本地服务
nc -lk 9999
-
打jar包,提交flink项目
./flink run /home/hadoop/fanjh/flinkdemo_2.11-0.1.jar --port 9999
-
web前端展示效果