Flink原理简介和使用(3)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink原理简介和使用(3)

image.png


a 、
Flink采用一种成为任务链的优化技术
可以在指定条件下减少本地通信开销
为了满足任务链的要求 
必须将两个或多个算子设为相同的并行度
并通过本地转发的方式连接(local forward)
b、
相同并行度one to one操作 Flink这样相连的算子链接在一起形成一个task 原来的算子成为里面的subtask
c、
并行度相同、并且是One-to-One操作 两个条件缺一不可
d、
将算子链接成task是非常有效的优化 
它能减少线程之间的切换和基于缓存区的数据交换
在减少时延的同时提升吞吐量 
链接的行为可以在编程API中进行指定


上面是纯理论 下面实践下 才能对理论理解的更加透彻


Flink 流处理API


Environment


image.png


  • getExecutionEnvironment


创建一个执行环境 表示当前执行程序的上下文
如果程序是独立调用的 则此方法返回本地执行环境
如果从命令行调用程序以提交到集群 则此方法返回集群的执行环境


  • 代码


val env: ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment
val env = StreamExecutionEnvironment.getExecutionEnvironment
a 返回本地执行环境 需要在调用时指定默认的并行度
val env = StreamExecutionEnvironment.createLocalEnvironment(1)
b 返回集群环境 将jar包提交到远程服务器 需要在调用时指定 JobManager的IP和端口号 并指定要在集群中运行的jar包
val env = ExecutionEnvironment.createRemoteEnvironment("jobmanage-hostname",
6123,"YOURPATH//wordcount.jar")


  • 并行度


如果没有设置并行度 会以flink-conf.yaml中配置为准 默认是1



image.png


Source


  • 从集合读取数据


//  定义样例类,传感器 id ,时间戳,温度
case class SensorReading(id: String, timestamp: Long, temperature: Double)
object Sensor {
    def main(args: Array[String]): Unit = {
        val env = StreamExecutionEnvironment.getExecutionEnvironment
        val stream1 = env
          .fromCollection(List(
            SensorReading("sensor_1", 1547718199, 35.80018327300259),
            SensorReading("sensor_6", 1547718201, 15.402984393403084),
            SensorReading("sensor_7", 1547718202, 6.720945201171228),
            SensorReading("sensor_10", 1547718205, 38.101067604893444)
          ))
        stream1.print("stream1:").setParallelism(1)
        env.execute()
     }
}



image.png


demo程序是用的kafka版本是 kafka-0.11_2.11


目前虚拟机上安装的版本是2.10-0.8.2.1 所以为了跑demo程序 所以安装下kafka-0.11_2.11版本


安装过程大数据处理工具Kafka、Zk、Spark


  • 安装包下载路径


https://archive.apache.org/dist/kafka/0.11.0.1/kafka_2.12-0.11.0.1.tgz


  • 唯一的区别


/opt/kafka/版本号/config/server.properties 这个配置文件
配置zk集群的配置项名称
kafka_2.10-0.8.2.1: zookeeper.contact
kafka_2.12-0.11.0.1: zookeeper.connect


  • 生成一条消息


./kafka-console-producer.sh --broker-list 192.168.84.128:9092 --topic test


  • 从文件读取数据


val stream2 = env.readTextFile("YOUR_FILE_PATH")


  • 以kafka消息队列的数据作为来源


需要引入kafka连接器的依赖 pom:
<dependency>
 <groupId>org.apache.flink</ groupId>
 <artifactId>flink-connector-kafka-0.11_2.11</artifactI   d>
 <version>1.7.2</version>
</dependency>
代码:
val properties = new Properties()
properties.setProperty("bootstrap.servers", "localhost:9092")
properties.setProperty("group.id", "consumer-group")
properties.setProperty("key.deserializer",
"org.apache.kafka.common.serialization.StringDeserializer")
properties.setProperty("value.deserializer",
"org.apache.kafka.common.serialization.StringDeserializer")
properties.setProperty("auto.offset.reset", "latest")
val stream3 = env.addSource(new FlinkKafkaConsumer011[String]("sensor", new
SimpleStringSchema(), properties))


  • 先测试下kafka发送消息 从zk中消费消息是否可以


cd /opt/kafka/kafka_2.10-0.8.2.1/bin
生产消息
./kafka-console-producer.sh --broker-list 192.168.84.128:9092 --topic test
消费消息
./kafka-console-consumer.sh --zookeeper 192.168.84.128:2181 --topic test --from-beginning



image.png



  • 通过Flink Kafka来消费


代码


https://gitee.com/pingfanrenbiji/Flink-UserBehaviorAnalysis/blob/master/FlinkTutorial/src/main/scala/co



image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
4天前
|
Java 流计算
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
【极数系列】Flink搭建入门项目Demo & 秒懂Flink开发运行原理(05)
88 3
|
4天前
|
消息中间件 缓存 监控
Flink背压原理以及解决优化
Flink背压原理以及解决优化
158 0
|
2天前
|
SQL Prometheus Kubernetes
实时计算 Flink版产品使用合集之时间戳读取的原理是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
9 0
|
4天前
|
存储 NoSQL 分布式数据库
【Flink】Flink分布式快照的原理是什么?
【4月更文挑战第21天】【Flink】Flink分布式快照的原理是什么?
|
4天前
|
运维 监控 Java
面经:Storm实时计算框架原理与应用场景
【4月更文挑战第11天】本文是关于Apache Storm实时流处理框架的面试攻略和核心原理解析。文章分享了面试常见主题,包括Storm的架构与核心概念(如Spout、Bolt、Topology、Tuple和Ack机制),编程模型与API,部署与运维,以及应用场景与最佳实践。通过代码示例展示了如何构建一个简单的WordCountTopology,强调理解和运用Storm的关键知识点对于面试和实际工作的重要性。
40 4
面经:Storm实时计算框架原理与应用场景
|
4天前
|
机器学习/深度学习 分布式计算 BI
Flink实时流处理框架原理与应用:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Flink实时流处理框架的原理,包括运行时架构、数据流模型、状态管理和容错机制、资源调度与优化以及与外部系统的集成。此外,还介绍了Flink在实时数据管道、分析、数仓与BI、机器学习等领域的应用实践。同时,文章提供了面试经验与常见问题解析,如Flink与其他系统的对比、实际项目挑战及解决方案,并展望了Flink的未来发展趋势。附带Java DataStream API代码样例,为学习和面试准备提供了实用素材。
92 0
|
4天前
|
SQL 缓存 分布式计算
flink1.18 SqlGateway 的使用和原理分析
# 了解flink1.18 sqlGateway 的安装和使用步骤 # 启动sqlgateway 流程,了解核心的结构 # sql提交流程,了解sql 的流转逻辑 # select 查询的ResultSet的对接流程,了解数据的返回和获取逻辑
|
4天前
|
分布式计算 API 数据处理
Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
【2月更文挑战第15天】Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
73 1
|
4天前
|
SQL 并行计算 大数据
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
关于Flink服务的搭建与部署,由于其涉及诸多实战操作而理论部分相对较少,小编打算采用一个独立的版本和环境来进行详尽的实战讲解。考虑到文字描述可能无法充分展现操作的细节和流程,我们决定以视频的形式进行分析和介绍。因此,在本文中,我们将暂时不涉及具体的搭建和部署步骤。
500 3
【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
|
4天前
|
存储 NoSQL MongoDB
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
本文整理自阿里云 Flink 团队归源老师关于阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference 的研究。
46955 2
阿里云 Flink 原理分析与应用:深入探索 MongoDB Schema Inference
http://www.vxiaotou.com