Flink介绍与安装

Apache Flink是一个在有界数据流和无界数据流上进行有状态计算分布式处理引擎和框架。Flink 设计旨在所有常见的集群环境中运行,以任意规模内存级速度执行计算。

一、主要特点和功能

1. 实时流处理:

  • 低延迟: Flink 能够以亚秒级的延迟处理数据流,非常适合对时间敏感的应用,如实时分析、监控和告警系统。
  • 状态管理: Flink 提供了对状态的内置支持,使得开发有状态的流式处理应用变得容易,如窗口操作、复杂事件处理等。

2. 批处理和流处理的统一:

  • Flink 既可以用于流处理,也可以用于批处理,允许用户在一个框架中编写应用程序,而不必在批处理和流处理之间切换。

  • 事件时间处理: Flink 支持事件时间语义,可以基于数据本身的时间戳进行处理,而不是数据到达的时间,这对于处理无序数据流非常重要。

    // scala table api
    // 引入 Flink 的批处理环境
    val env = ExecutionEnvironment.getExecutionEnvironment//批处理: 读取文本文件
    env.readTextFile("data/words.txt")// 处理数据: 切换、转换、分组、聚合.flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+")).map((_, 1)).groupBy(0).sum(1)// 输出.print()
    
    // 引入 Flink 的流处理环境
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    // 有界流处理: 文件数据
    env.readTextFile("data/words.txt").flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+")).map((_, 1)).keyBy(_._1).sum(1).print()// 无界流处理: Socket 
    env.socketTextStream("nodeIp", 9999).flatMap(_.replaceAll("[^a-zA-Z ]", "").split("\\s+")).map((_, 1)).keyBy(_._1).sum(1).print()// 执行 Flink 作业,并给它命名
    env.execute("Word Count Example")
    

3. 高度可扩展性:

  • Flink 能够在大规模分布式集群上运行,处理从几千到上百万个事件每秒的数据流。
  • 弹性和容错: Flink 使用检查点和保存点机制来提供容错能力,确保在发生故障时可以从之前的状态恢复,减少数据丢失。

4. 支持多种数据源和接收器:

  • Flink 能够与多种数据源和接收器集成,如 Kafka、HDFS、Cassandra、Elasticsearch 等,使其可以轻松地处理和存储来自不同系统的数据。

5. 丰富的 API 和库:

  • DataStream API: 用于流处理,允许开发者定义复杂的数据流处理逻辑。
  • DataSet API: 用于批处理,提供了丰富的操作符来处理静态数据集(将在 Flink 2.0 版本被删除如何迁移 DataSet 到 DataStream | Apache Flink)
  • Table API 和 SQL: 提供了一个更高级别的 API,允许开发者使用 SQL 查询来处理数据流和数据集。
  • 机器学习和图处理库: Flink 提供了机器学习库(FlinkML)和图处理库(Gelly),适用于高级分析任务。

6. 部署灵活性:

  • Flink 可以部署在多种环境中,如独立集群、YARN、Kubernetes、Mesos 以及本地环境中。
  • 流批一体: Flink 支持将批处理和流处理集成到同一个应用程序中,简化了部署和管理。

7. 社区与生态系统:

  • Flink 由一个活跃的开源社区维护和发展,生态系统日益壮大,支持越来越多的第三方工具和集成。

典型应用场景

  • 实时数据分析: Flink 可用于处理实时事件流,提供实时分析、告警和监控。
  • 复杂事件处理: Flink 能够处理和识别复杂事件模式,用于金融监控、欺诈检测等。
  • 日志处理: 可以实时处理和分析来自各种系统的日志数据,提取有价值的信息。
  • 机器学习: Flink 的流处理能力可以用于实时更新机器学习模型,或在流数据上直接进行预测。

Apache Flink 适用于各种需要实时和批处理的应用程序,尤其是在处理大规模数据流时表现出色。·

二、Flink下载,集群安装配置

官方下载地址:Downloads | Apache Flink

1. 下载、解压、配置环境变量

wget https://dlcdn.apache.org/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgztar -zxvf flink-1.20.0 -C /opt/softwarevim /etc/profile.d/myenv.sh
# FLINK_HOME=...
# PAHT=$PATH:$FLINK_HOME/bin

2. 进入 Flink 配置目录:

cd $FLINK_HOME/conf

3. 编辑 masters 文件:

在文件中指定 JobManager 的主机名或 IP 地址。如果有多个 JobManager(用于高可用性),每个 JobManager 使用一行。

vim masters
# 格式如下
<JobManager1>:<port>
<JobManager2>:<port>  # 如果有高可用性设置# 示例
master01:8081
master02:8081

4. 编辑 workers 文件:

在文件中列出所有 TaskManager 的主机名或 IP 地址,每个 TaskManager 使用一行

vim workers
# 格式如下
<TaskManager1>
<TaskManager2># 示例
worker01
worker02

5. 编辑 flink-conf.yaml 文件:

flink-conf.yaml 是 Flink 的主要配置文件,用于配置各种集群参数。

vim flink-conf.yaml
# 指定 JobManager 的 RPC 服务监听的地址
jobmanager.rpc.address: 
# 指定 JobManager 在所有网络接口上进行绑定
jobmanager.bind-host: 0.0.0.0# 指定 TaskManager 进程的外部地址
taskmanager.host: master01				# 每台机器这里不同,其他相同
# 指定 TaskManager 绑定的网络接口
taskmanager.bind-host: 0.0.0.0# 指定 Flink 集群中 REST API 服务的外部地址
rest.address: master01
# 指定 REST API 服务在所有网络接口上进行绑定。
rest.bind-address: 0.0.0.0

以下看需配置

# TaskManager 内存:
taskmanager.memory.process.size: 1024m# TaskManager 的槽位数:
taskmanager.numberOfTaskSlots: 4# 高可用性配置(如果需要高可用性):
high-availability.type: zookeeper
high-availability.zookeeper.quorum: localhost:2181
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /cluster_one
high-availability.storageDir: hdfs:///flink/recovery
state.checkpoints.dir:  hdfs:///flink/checkpoints
state.savepoints.dir: hdfs:///flink/savepoints# 并行度:
parallelism.default: 4# 日志配置:
taskmanager.log.dir: /var/log/flink# HDFS 配置:
fs.default-scheme: hdfs://namenode:9000

6. 启动 Flink 集群

$FLINK_HOME/bin/stop-cluster.sh
$FLINK_HOME/bin/start-cluster.sh

7. 提交Flink任务

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/899167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析 JVM 内存区域及核心概念

深入解析 JVM 内存区域及核心概念 Java 虚拟机&#xff08;JVM&#xff09;内部划分了多个内存区域&#xff0c;每个区域存储不同类型的数据并承担不同的职责。本文将详细介绍以下内容&#xff1a; 程序计数器&#xff1a;记录当前线程正在执行的字节码指令及其“行号”信息&a…

Java操作RabbitMQ

文章目录 Spring集成RabbitMQ1. AMQP&SpringAMQP2. SpringBoot集成RabbitMQ3. 模型work模型 4.交换机Fanout交换机Direct交换机Topic交换机 5.声明式队列和交换机基于API声明基于注解声明 6.消息转换器 Spring集成RabbitMQ 1. AMQP&SpringAMQP AMQP&#xff08;高级消…

Kotlin泛型: 协变|逆变|不变

引言 无论java 通配符上限还是下限&#xff0c;都多少存在缺陷&#xff0c;要么存不安全&#xff0c;要么取不安全。而kotlin就解决这个问题。让out 纯输出&#xff0c; 让in纯输入。 java这块知识&#xff1a; java泛型的协变、逆变和不变-CSDN博客 协变 生产者out T 协变…

【Excel使用技巧】某列保留固定字段或内容

目录 ✅ 方法一&#xff1a;使用 Excel 公式提取 body 部分 &#x1f50d; 解释&#xff1a; ✅ 方法二&#xff1a;批量处理整列数据 &#x1f6a8; 注意事项 &#x1f6a8; 处理效果 我想保留Excel某一列的固定内容&#xff0c;比如原内容是&#xff1a; thread entry i…

C# System.Text.Encoding 使用详解

总目录 前言 在C#编程中&#xff0c;处理字符串和字节数组之间的转换是一个常见的任务。System.Text.Encoding类及其派生类提供了丰富的功能&#xff0c;帮助开发者实现不同字符编码之间的转换。本文将详细讲解System.Text.Encoding类的使用方法&#xff0c;包括常用编码的介绍…

Pre-flash和Main flash

在相机拍照过程中&#xff0c;Pre-flash&#xff08;预闪光&#xff09; 和 Main flash&#xff08;主闪光&#xff09; 是常见的两种闪光灯使用模式&#xff0c;通常用于提高低光环境下的拍摄质量&#xff0c;尤其在自动曝光&#xff08;AE&#xff09;和自动对焦&#xff08;…

Kafka 4.0 发布:KRaft 替代 Zookeeper、新一代重平衡协议、点对点消息模型、移除旧协议 API

KRaft 全面替代 ZooKeeper Apache Kafka 4.0 是一个重要的里程碑&#xff0c;标志着第一个完全无需 Apache ZooKeeper 运行的主要版本。 通过默认运行在 KRaft 模式下&#xff0c;Kafka 简化了部署和管理&#xff0c;消除了维护单独 ZooKeeper 集群的复杂性。 这一变化显著降…

SFT实验报告

大模型微调实验报告* 实验目标 梳理大模型微调方法&#xff0c;评估各种基座和微调方法的实验效果。 基础模型 \1.Llama \2.Qwen \3.Chatglm4 \4. 微调策略 LoRA系列 低秩适配&#xff08;LoRA&#xff09;的核心思想是冻结原始参数&#xff0c;通过低秩分解引入可训…

LLM - R1 强化学习 DRPO 策略优化 DAPO 与 Dr. GRPO 算法 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/146533892 在强化学习算法中&#xff0c;DAPO (Decoupled Clip and Dynamic Sampling Policy Optimization)&#xff0c;通过解耦裁剪和动态采样策…

美摄科技智能汽车视频延迟摄影解决方案,开启智能出行新视界

在智能汽车时代&#xff0c;车载影像技术正以前所未有的速度发展&#xff0c;成为提升驾乘体验和满足用户多样化需求的关键因素。美摄科技凭借其卓越的技术实力和创新精神&#xff0c;推出了智能汽车视频延迟摄影解决方案&#xff0c;为智能汽车行业带来了一场视觉盛宴。 一、…

[250325] Claude AI 现已支持网络搜索功能!| ReactOS 0.4.15 发布!

目录 Claude AI 现已支持网络搜索功能&#xff01;ReactOS 0.4.15 发布&#xff01; Claude AI 现已支持网络搜索功能&#xff01; 近日&#xff0c;Anthropic 公司宣布&#xff0c;其 AI 助手 Claude 现在可以进行网络搜索&#xff0c;为用户提供更及时、更相关的回复。这项新…

代码规范之Variable Names变量名

代码规范之Variable Names变量名 golang中 官方文档&#xff1a;https://go.dev/wiki/CodeReviewComments#variable-names Variable names in Go should be short rather than long. This is especially true for local variables with limited scope. Prefer c to lineCoun…

Mybatis_plus

前言 Mybatis_plus 是在 mybatis 的基础上进行了增强&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。本文章只做简单的使用介绍&#xff0c;更加详细的内容大家可以参考官网。 下面是mybatis_plus 官网地址&#xff1a; mybatis_plu…

深圳问顶安全科技有限公司asktopsec是做什么的?

深圳问顶安全科技有限公司&#xff0c;是一家专业的AI与应用安全公司。 全球领先的AI、Android、IOS应用安全解决方案提供商&#xff0c;官网&#xff1a;https://asktopsec.com 问顶安全主要为企业提供AI和应用安全服务 移动应用安全检测、移动应用安全加固、AI智能体安全、AI…

鸿蒙OS 5 架构设计探秘:从分层设计到多端部署

文章目录 鸿蒙OS架构设计探秘&#xff1a;从分层设计到多端部署一、鸿蒙的分层架构设计二、模块化设计的精髓三、智慧分发设计&#xff1a;资源的动态调度四、一次开发&#xff0c;多端部署的实践总结与思考 鸿蒙OS架构设计探秘&#xff1a;从分层设计到多端部署 最近两年来&a…

idea 没有 add framework support(添加框架支持)选项

在 IntelliJ IDEA 2023 中&#xff0c;若需通过设置手动添加 “添加框架支持” 菜单项&#xff0c;可按照以下步骤操作&#xff1a; 手动添加 “添加框架支持” 菜单项 打开设置 点击顶部菜单栏的 File&#xff08;文件&#xff09; -> Settings&#xff08;设置&#xff09…

计算机网络--传输层(2)

传输层核心机制深度解析 一、可靠传输实现机制 1. 校验和机制 技术原理&#xff1a; 使用16位二进制反码求和算法&#xff0c;计算范围包括TCP伪首部&#xff08;12字节&#xff09;、TCP首部&#xff08;20字节&#xff09;和数据部分接收端重新计算校验和&#xff0c;若与…

再探带权并查集

典型例题 Acwing 权值 故名思义&#xff0c;在带权并查集中&#xff0c;我们需要让每个节点携带一个**“权值”**。 那么这个权值应该是什么呢&#xff1f;其实答案就在并查集当中。 由于在并查集当中我们可以在 O ( 1 ) O(1) O(1) 时间内找到一个节点的根节点&#xff0c;那…

Vala编成语言教程-构造函数和析构函数

构造函数 Vala支持两种略有不同的构造方案&#xff1a;我们将重点讨论Java/C#风格的构造方案&#xff0c;另一种是GObject风格的构造方案。 Vala不支持构造函数重载的原因与方法重载不被允许的原因相同&#xff0c;这意味着一个类不能有多个同名构造函数。但这并不构成问题&…

本地部署Stable Diffusion生成爆火的AI图片

直接上代码 Mapping("/send") Post public Object send(Body String promptBody) { JSONObject postSend new JSONObject(); System.out.println(promptBody); JSONObject body JSONObject.parseObject(promptBody); List<S…