大数据计算引擎(二)——Flink

Flink知识点总结 Flink简介 flink记录 阅读详情

介绍(与Spark的区别,技术选型定位)

  1. ‌架构设计层面‌
  • Flink采用分布式数据流引擎,核心架构包含:

    • JobManager(协调节点)
    • TaskManager(工作节点)
    • 基于Akka的RPC通信
    • 原生支持DAG动态优化
  • Spark Structured Streaming架构:

    • 基于Spark SQL引擎扩展
    • Driver-Executor经典架构
    • 微批调度器(Micro-batch Scheduler)
    • 静态DAG执行计划
  1. ‌运行时特性对比‌
    || Flink | Spark Structured Streaming |
    |---|---|---|
    | ‌处理模式‌ | 持续流处理 | 微批处理(可配置连续模式) |
    | ‌最小延迟‌ | 1ms级 | 100ms级(连续模式可达10ms) |
    | ‌反压机制‌ | 基于TCP流量控制 | 基于批次动态调节 |
    | ‌状态后端‌ | Memory/RocksDB | HDFS兼容存储 |
    | ‌检查点间隔‌ | 可配置毫秒级 | 通常秒级以上 |

  2. ‌API能力矩阵‌

  • Flink API体系:

     

    javaCopy Code

    // DataStream API示例 env.addSource(kafkaSource) .keyBy(event -> event.getUserId()) .window(TumblingEventTimeWindows.of(Time.minutes(5))) .process(new CustomWindowFunction());

    • 支持:ProcessFunction(底层API)、Table API、CEP复杂事件处理
  • Spark Structured Streaming API:

    // Structured Streaming示例 spark.readStream .format("kafka") .option("subscribe", "topic") .load() .groupBy($"user", window($"timestamp", "5 minutes")) .count()

    • 主要依赖DataFrame API,缺少底层操作接口
  1. ‌时间处理深度对比‌
  • Flink时间机制:

    • Watermark传播算法(Punctuated/Periodic)
    • 支持处理时间、事件时间、摄入时间
    • 允许自定义Watermark生成器
    • 侧输出(Side Output)处理延迟数据
  • Spark时间处理:

    • 固定周期Watermark(基于最大事件时间)
    • 仅支持处理时间和事件时间
    • 延迟数据直接丢弃(需手动配置allowedLateness)
  1. ‌容错机制实现‌
  • Flink Checkpoint:

    • 分布式快照算法(Chandy-Lamport变种)
    • 异步屏障快照(Asynchronous Barrier Snapshotting)
    • 支持增量检查点(RocksDB后端)
    • 端到端精确一次保证(需配合特定Source/Sink)
  • Spark检查点:

    • 基于写前日志(WAL)和RDD血统
    • 需要配置检查点目录(HDFS兼容)
    • 精确一次语义需要外部系统配合
  1. ‌资源管理适配‌
  • Flink资源模型:

    • 细粒度Slot分配
    • 动态扩缩容(Reactive Mode)
    • 原生支持Kubernetes
    • 网络缓冲自动调节
  • Spark资源管理:

    • 基于Executor静态分配
    • 动态分配需Shuffle Service支持
    • 批处理资源复用可能导致冲突
  1. ‌生态集成能力‌
  • Flink连接器:

    • 官方维护30+连接器
    • 支持CDC(Debezium集成)
    • 完善的Table Store生态
    • 原生Kubernetes Operator
  • Spark生态优势:

    • 与MLlib/GraphX无缝集成
    • Delta Lake深度整合
    • Databricks商业版增强功能
  1. ‌性能基准测试‌
    在同等资源下(10节点集群):
  • 吞吐量:

    • Flink可达200万事件/秒
    • Spark约120万事件/秒(微批间隔1s时)
  • 99%延迟:

    • Flink:<50ms
    • Spark:200-500ms
  1. ‌版本演进趋势‌
  • Flink 2.0+方向:

    • 统一批流执行模式
    • 增强Python API
    • 改进State TTL管理
  • Spark 3.5+改进:

    • 连续处理模式优化
    • 增强事件时间处理
    • 改进状态存储后端
  1. ‌选型决策树‌
    建议选择Flink当:
    ✓ 需要亚秒级延迟
    ✓ 处理复杂事件模式
    ✓ 要求端到端精确一次
    ✓ 需要动态扩缩容

建议选择Spark当:
✓ 已有Spark批处理流水线
✓ 准实时(分钟级)场景
✓ 需要与MLlib集成
✓ 团队熟悉Spark生态

两者最新版本都支持:

  • SQL标准语法(ANSI SQL:2011)
  • 流式维表关联(Async I/O)
  • 统一元数据管理
  • 容器化部署

状态

  1. 状态类型体系‌
  • ‌Keyed State‌(键控状态):

    • 与特定Key绑定,仅可在KeyedStream上使用
    • 包含:
      • ValueState<T>:单值状态
      • ListState<T>:列表状态
      • MapState<K,V>:映射状态
      • ReducingState<T>:聚合状态
      • AggregatingState<IN,OUT>:高级聚合状态
  • ‌Operator State‌(算子状态):

    • 与算子实例绑定,支持:
      • ListState<T>:均匀分区状态
      • UnionListState<T>:全量广播状态
      • BroadcastState<K,V>:广播状态
  1. ‌状态后端实现‌
  • ‌MemoryStateBackend‌:

    • 状态存储在JVM堆内存
    • 检查点存于JobManager内存
    • 适用开发测试场景
  • ‌FsStateBackend‌:

    • 工作状态在堆内存
    • 检查点持久化到文件系统(HDFS等)
    • 生产环境常用方案
  • ‌RocksDBStateBackend‌:

    • 工作状态存于本地RocksDB
    • 检查点持久化到远端存储
    • 支持增量检查点
    • 超大状态场景首选
  1. ‌状态工作原理‌
  • ‌状态生命周期‌:

    // 状态注册示例 ValueStateDescriptor<Long> descriptor = new ValueStateDescriptor<>("counter", Long.class); ValueState<Long> state = getRuntimeContext().getState(descriptor);

    • 初始化:通过RuntimeContext注册
    • 读写:通过state.value()/update()方法
    • 清除:state.clear()
  • ‌状态分片机制‌:

    • Keyed State按KeyGroup分片
    • Operator State采用均匀分区或广播策略
    • 分片数=最大并行度/KeyGroup数量
  1. ‌检查点原理‌
  • ‌屏障传播‌:

    • JobManager触发检查点
    • Source算子注入屏障(Barrier)
    • 屏障随数据流向下游传播
  • ‌异步快照‌:

    graph LR A[收到屏障] --> B[持久化状态] B --> C[发送确认] C --> D[继续处理数据]

    • 算子收到屏障时冻结状态
    • 异步写入持久化存储
    • 完成后向JobManager确认
  1. ‌状态恢复机制‌
  • ‌精确一次保证‌:

    • 基于检查点+事务性输出
    • 两阶段提交协议:
      1. 预提交:暂存结果
      2. 确认提交:检查点完成后提交
  • ‌恢复流程‌:

    • 定位最近完成的检查点
    • 重新分配状态分片
    • 从存储系统加载状态快照
  1. ‌状态TTL管理‌
  • 过期策略配置:

    StateTtlConfig ttlConfig = StateTtlConfig .newBuilder(Time.days(1)) .setUpdateType(OnCreateAndWrite) .setStateVisibility(NeverReturnExpired) .build(); descriptor.enableTimeToLive(ttlConfig);

    • 支持基于处理时间/事件时间的过期
    • 可配置访问时更新TTL
    • 支持全量/增量清理策略
  1. ‌状态扩展机制‌
  • ‌可查询状态‌(Queryable State):

    • 通过QueryableStateClient外部查询
    • 需启用状态服务器:

      # flink-conf.yaml配置 query.server.ports: 9067 queryable-state.enable: true

  • ‌状态迁移‌:

    • 通过State Processor API导出/导入
    • 支持状态模式演进(Schema Evolution)
  1. ‌性能优化技巧‌
  • ‌状态序列化‌:

    • 优先使用Flink类型序列化器
    • 复杂类型注册Kryo序列化
    • 避免使用Java原生序列化
  • ‌RocksDB调优‌:

    state.backend.rocksdb: block.cache-size: 256MB writebuffer.size: 128MB compaction.level.max-size-level-base: 256MB

  1. ‌状态监控指标‌
  • 关键监控项:
    • numKeyedStateEntries:状态条目数
    • stateSize:状态大小
    • checkpointDuration:检查点耗时
    • lastCheckpointSize:最近检查点大小
  1. ‌典型应用场景‌
  • ‌有状态函数‌:

    • 窗口聚合(Window Aggregation)
    • 模式检测(CEP)
    • 会话跟踪(Session Tracking)
  • ‌状态迁移案例‌:

    • Flink版本升级
    • 业务逻辑变更
    • 并行度调整

水位线

窗口

CEP

反压(背压)机制

Flink的反压机制(Backpressure)是流处理系统中用于应对数据生产速度超过消费速度的关键流量控制机制。

‌一、常见反压场景‌

1. ‌数据倾斜(Data Skew)‌
  • ‌表现‌:少数TaskManager负载极高,其他空闲
  • ‌成因‌:
    • KeyBy后某些Key数据量过大(如用户ID分布不均)
    • 窗口聚合时热点时间窗口
2. ‌外部系统瓶颈‌
  • ‌表现‌:Sink算子持续反压
  • ‌成因‌:
    • 数据库写入速率不足(如JDBC Sink)
    • Kafka分区数不足或Broker吞吐瓶颈
    • 第三方API调用延迟过高
3. ‌计算资源不足‌
  • ‌表现‌:全链路反压
  • ‌成因‌:
    • 算子并行度设置过低
    • TaskManager内存/CPU不足
    • 网络带宽受限(跨机房传输)
4. ‌算子处理逻辑过重‌
  • ‌表现‌:单个算子持续反压
  • ‌成因‌:
    • 复杂UDF(如JSON解析、机器学习推理)
    • 状态操作频繁(大状态Checkpoint)
    • 维表关联(未优化Async I/O)
5. ‌背靠背算子阻塞‌
  • ‌表现‌:上游算子输出缓冲满,下游无消费
  • ‌成因‌:
    • 同步阻塞调用(如Thread.sleep)
    • 锁竞争/资源争用

‌二、系统化解决方法‌

‌1. 诊断工具先行‌
  • ‌Web UI反压监控‌:
    • 定位反压起始算子(红色/黄色标记)
    • 查看Buffers in flight和Output buffer usage
  • ‌Metrics监控‌:
    • outPoolUsage > 0.8 持续告警
    • busyTimeMsPerSecond 接近1000ms表示CPU饱和
  • ‌火焰图分析‌:抓取JVM线程栈定位热点代码
     

    shellCopy Code

    # 使用AsyncProfiler生成火焰图 ./profiler.sh -d 30 -f flamegraph.html <TaskManager_PID>

‌2. 针对性优化方案‌
‌场景‌‌优化措施‌
‌数据倾斜‌- 添加随机前缀打散Key(keyBy(key + "_" + random.nextInt(10)))
- 开启LocalKeyBy(Flink 1.13+)
- 两阶段聚合(预聚合+全局聚合)
‌外部系统瓶颈‌- Sink端:增加Kafka分区数 / 启用批量写入
- 异步IO+缓存(Guava Cache/Caffeine)
- 限流降级(如令牌桶算法)
‌资源不足‌- 调高并行度(与Kafka分区数对齐)
- 增加TM内存(taskmanager.memory.process.size: 4096m)
- 使用SSD减少Checkpoint延迟
‌算子逻辑过重‌- 复杂计算卸载到GPU(Flink CUDA支持)
- 状态拆分:ListState替代大对象
- 开启增量Checkpoint
‌背靠背阻塞‌- 替换同步操作为异步IO(AsyncDataStream.unorderedWait)
- 避免算子内线程阻塞
‌3. 高级调优技巧‌
  • ‌网络优化‌:

    # 增加网络缓冲区 taskmanager.network.memory.max: 512mb taskmanager.memory.segment-size: 32kb

  • ‌反压传播控制‌:

    env.setBufferTimeout(10); // 减少缓冲等待时间

  • ‌精确反压定位‌:

    # 启用反压采样 curl -X POST http://localhost:8081/jobs/<jobID>/backpressure

‌4. 架构级解决方案‌
  • ‌动态扩缩容‌:
    • Kubernetes + Flink AutoScaler(根据反压指标自动调整并行度)
  • ‌流批一体降级‌:
    • 反压时切到批处理模式补偿(如Apache Iceberg)
  • ‌多级背压缓冲‌:

    graph LR Source --> Kafka --> Flink --> Redis

    用Kafka作为缓冲层吸收突发流量

‌三、生产环境案例‌

‌场景‌:电商大促期间,订单统计Job因count(distinct user_id)导致反压
‌解决‌:

  1. 诊断发现KeyBy(user_id)后倾斜严重
  2. 改造为两阶段聚合:

    -- 第一阶段:局部去重 SELECT HASH_CODE(user_id)%10 as bucket, user_id FROM orders GROUP BY bucket, user_id -- 第二阶段:全局合并 SELECT COUNT(*) FROM temp_table GROUP BY bucket

  3. 并行度从20提升至50,倾斜消失后反压解除

‌运维建议‌

  1. ‌预防性监控‌:Prometheus + Grafana持续跟踪numRecordsOutPerSecond与numRecordsInPerSecond比值
  2. ‌混沌测试‌:使用flink-fault-injection模拟网络延迟/数据倾斜
  3. ‌升级版本‌:Flink 1.13+ 的Unified Scheduler显著改善反压传播效率

sql(与普通sql的区别)

FlinkSQL与普通SQL的主要区别体现在以下几个方面:

  1. ‌执行环境‌:
  • 普通SQL:面向静态数据集(如MySQL/Oracle等关系型数据库)
  • FlinkSQL:面向动态数据流(实时处理无界数据流)
  1. ‌核心能力‌:
  • 普通SQL:批处理(一次性完整数据集操作)
  • FlinkSQL:同时支持流处理(持续增量计算)和批处理
  1. ‌时间语义‌:
  • 普通SQL:仅处理事件时间(event time)
  • FlinkSQL:支持事件时间、处理时间、摄入时间三种时间语义
  1. ‌窗口操作‌:
  • 普通SQL:无原生窗口概念
  • FlinkSQL:内置滚动/滑动/会话窗口,支持时间/计数窗口
  1. ‌状态管理‌:
  • 普通SQL:无状态(每次查询独立)
  • FlinkSQL:有状态计算(支持持续查询维护中间状态)
  1. ‌连接器支持‌:
  • 普通SQL:主要连接关系型数据库
  • FlinkSQL:支持Kafka/ES/JDBC/HBase等20+连接器
  1. ‌语法扩展‌:
  • FlinkSQL扩展了MATCH_RECOGNIZE(复杂事件处理)、TOP-N等特殊语法
  • 支持自定义UDF/UDAF/UDTF函数
  1. ‌执行计划‌:
  • 普通SQL:生成静态执行计划
  • FlinkSQL:动态优化执行计划(基于数据特征自适应调整)

典型应用场景对比:

  • 普通SQL:报表生成、数据分析(T+1)
  • FlinkSQL:实时风控、实时大屏、流式ETL(毫秒级延迟)
  • 
    // 引入必要依赖
    import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
    import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
    
    public class FlinkSQLDemo {
        public static void main(String[] args) throws Exception {
            // 1. 创建执行环境
            StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
            StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
    
            // 2. 创建Kafka源表(流处理)
            tableEnv.executeSql("CREATE TABLE kafka_source (" +
                "  user_id STRING," +
                "  item_id STRING," +
                "  behavior STRING," +
                "  ts TIMESTAMP(3)," +
                "  WATERMARK FOR ts AS ts - INTERVAL '5' SECOND" +
                ") WITH (" +
                "  'connector' = 'kafka'," +
                "  'topic' = 'user_behavior'," +
                "  'properties.bootstrap.servers' = 'localhost:9092'," +
                "  'format' = 'json'" +
                ")");
    
            // 3. 创建JDBC结果表
            tableEnv.executeSql("CREATE TABLE jdbc_sink (" +
                "  user_id STRING," +
                "  buy_cnt BIGINT," +
                "  PRIMARY KEY (user_id) NOT ENFORCED" +
                ") WITH (" +
                "  'connector' = 'jdbc'," +
                "  'url' = 'jdbc:mysql://localhost:3306/flink_db'," +
                "  'table-name' = 'user_stats'," +
                "  'username' = 'root'," +
                "  'password' = '123456'" +
                ")");
    
            // 4. 执行聚合查询(窗口统计)
            tableEnv.executeSql("INSERT INTO jdbc_sink " +
                "SELECT user_id, COUNT(*) as buy_cnt " +
                "FROM kafka_source " +
                "WHERE behavior = 'buy' " +
                "GROUP BY user_id, TUMBLE(ts, INTERVAL '1' HOUR)");
    
            // 5. 批处理示例(静态数据集)
            tableEnv.executeSql("CREATE TABLE csv_source (" +
                "  name STRING," +
                "  age INT," +
                "  city STRING" +
                ") WITH (" +
                "  'connector' = 'filesystem'," +
                "  'path' = 'input/persons.csv'," +
                "  'format' = 'csv'" +
                ")");
    
            // 6. 执行批查询
            tableEnv.executeSql("CREATE TABLE print_table WITH ('connector' = 'print') " +
                "AS SELECT city, AVG(age) FROM csv_source GROUP BY city");
        }
    }
    

    Flink SQL 的本质确实是基于数据流处理的,但需要从以下维度理解其特性:

  • ‌底层执行模型‌:
  • Flink SQL 的运行时建立在流处理引擎之上,所有查询都会被转换为数据流操作
  • 即使处理批数据(有界流),底层仍采用流式处理机制
  • ‌统一处理范式‌:
  • 通过Table API/SQL层对批流进行统一抽象
  • 批处理被视为特殊的流处理(有界流)
  • ‌核心特征体现‌:
  • 持续查询机制:结果会随新数据到达不断更新
  • 增量计算:通过状态维护实现高效更新
  • 时间语义:支持事件时间处理(流处理核心需求)
  • ‌与标准SQL的关键差异‌:
  • -- FlinkSQL特有的流式语法示例 SELECT user_id, COUNT(*) OVER ( PARTITION BY user_id ORDER BY procTime RANGE INTERVAL '1' HOUR PRECEDING ) AS hourly_actions FROM kafka_source

    典型流处理特征在SQL中的体现:

  • 窗口聚合(TUMBLE/HOP/SESSION)
  • 水位线(WATERMARK)定义
  • 撤回机制(RETRACT模式)
  • 动态表(Dynamic Table)概念
  • 注意:虽然底层是流式处理,但通过优化器可以实现:

  • 批处理场景下自动切换为批执行模式
  • 有限流作业的自动优化(如Final模式聚合)

函数用例

以下是Flink SQL函数的分类详解及典型用例(基于Flink 1.16版本):

一、‌时间函数‌

  1. DATE_FORMAT(timestamp, 'yyyy-MM-dd')

     

    sqlCopy Code

    SELECT DATE_FORMAT(order_time, 'yyyy/MM/dd') FROM orders -- 输出:2025/08/18

  2. TUMBLE_START(rowtime, INTERVAL '1' HOUR)

     

    sqlCopy Code

    SELECT TUMBLE_START(ts, INTERVAL '1' HOUR) AS window_start, COUNT(*) FROM clicks GROUP BY TUMBLE(ts, INTERVAL '1' HOUR)

二、‌字符串函数‌

  1. REGEXP_EXTRACT(url, '//([^/]+)')

     

    sqlCopy Code

    SELECT REGEXP_EXTRACT(url, 'https://([^/]+)') FROM web_logs -- 输入:https://example.com/page → 输出:example.com

  2. JSON_VALUE('{"name":"John"}', '$.name')

     

    sqlCopy Code

    SELECT JSON_VALUE(user_info, '$.address.city') FROM users

三、‌聚合函数‌

  1. COUNT(DISTINCT user_id)

     

    sqlCopy Code

    SELECT COUNT(DISTINCT visitor_id) FROM page_views

  2. LISTAGG(product_name, ', ')

     

    sqlCopy Code

    SELECT order_id, LISTAGG(product_name, '|') FROM order_items GROUP BY order_id

四、‌条件函数‌

  1. CASE WHEN score > 90 THEN 'A' ELSE 'B' END

     

    sqlCopy Code

    SELECT user_id, CASE WHEN login_count > 5 THEN 'active' ELSE 'inactive' END FROM users

  2. COALESCE(NULLIF(discount, 0), 10)

     

    sqlCopy Code

    SELECT COALESCE(department, 'Unknown') FROM employees

五、‌数学函数‌

  1. ROUND(price * 1.1, 2)

     

    sqlCopy Code

    SELECT ROUND(AVG(temperature), 1) FROM sensors

  2. LOG(2, value)

     

    sqlCopy Code

    SELECT LOG(10, click_count) FROM ads

六、‌表值函数‌

  1. LATERAL TABLE(explode(ARRAY[1,2,3]))
     

    sqlCopy Code

    SELECT user_id, t.item FROM orders, LATERAL TABLE(explode(items)) AS t(item)

七、‌系统函数‌

  1. CURRENT_WATERMARK(rowtime)
     

    sqlCopy Code

    SELECT CURRENT_WATERMARK(ts) FROM kafka_source

八、‌窗口函数‌

  1. HOP_END(ts, INTERVAL '5' MINUTE, INTERVAL '15' MINUTE)
     

    sqlCopy Code

    SELECT HOP_END(event_time, INTERVAL '5' MINUTE, INTERVAL '1' HOUR), SUM(amount) FROM transactions GROUP BY HOP(event_time, INTERVAL '5' MINUTE, INTERVAL '1' HOUR)

九、‌自定义函数示例‌

 
 

sqlCopy Code

CREATE FUNCTION geo_distance AS 'com.udf.GeoDistanceUDF'; SELECT geo_distance(lat1, lon1, lat2, lon2) FROM locations

特殊场景函数:

  1. 去重统计:
 
 

sqlCopy Code

SELECT HOP_START(ts, INTERVAL '5' SECOND, INTERVAL '1' MINUTE), COUNT(DISTINCT user_id) FROM clicks GROUP BY HOP(ts, INTERVAL '5' SECOND, INTERVAL '1' MINUTE)

  1. Top-N模式:
 
 

sqlCopy Code

SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) AS rownum FROM products ) WHERE rownum <= 3

完整函数参考官方文档:https://nightlies.apache.org/flink/flink-docs-release-1.16/docs/dev/table/functions/systemfunctions/

调优

Flink作为流批一体的大数据处理框架,性能调优是提高作业效率的关键。以下是Flink调优的主要方面:

1. 资源配置调优

  • ‌并行度设置‌:根据数据量和集群资源合理设置算子并行度
  • ‌内存配置‌:调整TaskManager和JobManager的内存分配
  • ‌网络缓冲区‌:优化taskmanager.network.memory.fraction和taskmanager.network.memory.max

2. 状态后端优化

  • ‌选择合适的后端‌:RocksDBStateBackend适合大状态,FsStateBackend适合中小状态
  • ‌RocksDB调优‌:调整state.backend.rocksdb.block.cache-size等参数
  • ‌增量检查点‌:启用state.backend.incremental减少检查点时间

3. 检查点与容错

  • ‌检查点间隔‌:平衡容错开销和恢复时间
  • ‌对齐超时‌:调整execution.checkpointing.alignment-timeout
  • ‌本地恢复‌:启用state.backend.local-recovery加速恢复

4. 数据倾斜处理

  • ‌KeyBy前预处理‌:对倾斜Key进行加盐或打散
  • ‌两阶段聚合‌:先局部聚合再全局聚合
  • ‌自定义分区器‌:实现更均衡的数据分布

5. 序列化优化

  • ‌使用高效序列化器‌:如Kryo或自定义序列化
  • ‌注册类型‌:通过env.registerType()减少序列化开销

6. 代码层面优化

  • ‌避免频繁对象创建‌:重用对象减少GC压力
  • ‌合理使用窗口‌:选择适合业务的时间/计数窗口
  • ‌异步IO‌:对数据库访问等操作使用AsyncFunction

7. 资源调度优化

  • ‌Slot共享组‌:合理配置slot共享减少资源浪费
  • ‌资源隔离‌:关键算子使用独立资源组

8. 监控与诊断

  • ‌Metrics系统‌:利用Flink Metrics监控作业状态
  • ‌背压分析‌:通过Web UI或Metrics识别背压来源
  • ‌日志分析‌:关注GC日志和异常日志

需要更具体的调优建议,请提供您的Flink作业配置和当前遇到的性能问题。

感谢阅读!!!

Flink保姆级教程,超详细,教学集成多个第三方工具(从入门到精通) Flink 允许你通过实现接口来创建自定义数据源。// 定义一个自定义数据源Thread.sleep(1000) // 模拟数据生成延迟// 创建执行环境// 添加自定义数据源// 打印数据流// 启动 Flink 作业以上示例展示了如何在 Scala 中使用 Flink DataStream API 来从不同的数据源获取数据。每个示例都包含了创建数据流的代码和对数据流进行操作的注释。这些示例可以作为构建更复杂 Flink 流处理作业的起点。 阅读详情

相关推荐

初识 Flink

Flink Flink 基本介绍 Flink概述 官网 分布式的计算引擎 支持批处理 ,即处理静态的数据集、历史的数据集 支持流处理 ,即实时地处理一些实时数据流 支持基于事件 的应用【比如说滴滴通过 Flink CEP 实现实时监测司机的行为流来判断司机的行为是否正当】 Apache Flink – Stateful Computations over Data Streams Stateful Computations over Data Streams ,即数据流上的有状态的计

qq_29342297的博客 614

Flink1.13学习_第 1 章 初识 Flink

Flink 大数据 应用

qq_33434458的博客 1041

大数据之Flink流式计算引擎

Flink DataFlow 数据的分类 有界数据 离线的计算 效率:硬件相同的情况下:时间 无界数据 实时的计算 效率:硬件环境相同的情况下,吞吐量:数据处理的数量、延迟:结果输出的时间—数据接收的时间 状态 有状态 无状态 窗口函数 滚动窗口 数量–时间 不重复 滑动窗口 可以重复 滑动的间隔–窗口的宽度 会话窗口 不会重复 基于某一个用户的未操作时间 时间 事件时间 到达时间 处理时间 Flink简介 大数据计算引擎 第一代:

qq_46060451的博客 1921

flink介绍(一)

flink,大数据

chengfangdong的博客 7879

一文让你彻底了解大数据实时计算引擎 Flink

不知道你是否有过和我类似的经历? 我是 2018 年 6 月加入公司,一直负责监控平台的告警系统。之后,我们的整个监控平台架构中途换过两次,其中一次架构发生了巨大的变化。我们监控告警平台最早的架构如下图所示: 这个架构的挑战难点在于: 海量的监控数据(Metric & Log & Trace 数据)实时写入 ElasticSearch; 多维度的监控指标页面展示(Dashboa...

GitChat 3509

Flink流计算引擎

  伴随着海量增长的数据,数字化时代的未来感扑面而至。不论是结绳记事的小数据时代,还是我们正在经历的大数据时代,计算的边界正在被无限拓宽,而数据的价值再也难以被计算。时下,谈及大数据,不得不提到热门的下一代大数据计算引擎Apache Flink(以下简称Flink)。 统一的批处理与流处理系统 在大数据处理领域,批处理任务与流处理任务一般被认为是两种不同的任务,一个大数据项目一般会被设计为只...

Joker_Chou的博客 2099

大数据计算引擎原理和架构

随着互联网技术的广泛应用,5G以及物联网和云计算的迅猛发展,带动了全球数据爆发式增长,随之而来的是不断增长的数据规模和数据的动态快速产生,这对大数据计算引擎带来了极大的挑战,离线批处理、实时计算和高吞吐量催生了新技术的发展和旧技术的革新,计算引擎出现了百花齐放的景象。计算引擎大致分两类,离线计算和实时计算,下面为大家介绍几个主流的大数据计算引擎。

m0_59777389的博客 2077

85-dify案例分享-无需OpenAI账号,Dify+Sora2工作流实战:一键生成写实动漫视频,插件+教程全解析

本文详细解析了如何利用Dify平台结合Sora2插件,搭建无需OpenAI账号的AI视频生成工作流。通过可视化拖拽配置,用户输入文本描述即可一键生成高质量的写实或动漫风格短片,极大降低了AI视频创作的技术门槛。教程涵盖插件安装、API密钥获取、工作流搭建及优化技巧,助力创作者快速实现创意。

weixin_29053577的博客 554

一文搞懂大数据流式计算引擎Flink【万字详解,史上最全】

Flink知识图谱、Flink发展、四代计算引擎、Flink特点、简介、批处理流处理、有界流无界流、Flink三层核心架构、三种Time概念、Windows窗口、时间窗口、计数窗口、、状态管理、状态分类、状态后端、算子、CheckPoint机制、CEP、CDC、FlinkSQL

qq_73181349的博客 2686

保姆级教程:用Arduino+MPU6050自制寻北仪(附MEMS陀螺精度测试报告)

本文提供了一份详细的Arduino与MPU6050自制寻北仪的保姆级教程,包括硬件选型、卡尔曼滤波算法优化、地磁场补偿及真北计算等关键技术。通过实测数据展示了MEMS陀螺仪在民用领域的高精度性能,帮助读者低成本实现1°以内的寻北精度。

weixin_42522964的博客 364

开关电源三大基本拓扑:反激、正激与桥式选型本质

开关电源拓扑是电力电子系统设计的核心基础概念,其本质决定能量传递路径、器件应力分布与系统物理边界。反激拓扑以耦合电感形式实现隔离与升降压,适用于小功率AC-DC场景;正激拓扑依赖实时能量传递与强制复位机制,支撑中功率高效率需求;桥式拓扑(含推挽/半桥/全桥)通过电压应力分摊与双向磁化,成为大功率系统的刚性选择。理解三者在磁芯工作模式、电流连续性、直流偏磁抑制等方面的原理差异,直接关系到效率、温升、EMI及可靠性等关键技术指标。本文聚焦反激、正激、桥式三大工程级基本拓扑的物理本质与落地约束,揭示从需求参数到电

cqwmy840702的博客 376

大数据计算引擎——Flink学习

从该网址上的内容中摘抄出来的,如有侵权,联系,可删,目的是做笔记记录,放在博客上易于查找~~~https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-flink/index.html 大数据计算引擎的发展:     Spark 掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。 第一代的计算引擎,无疑就是 Had...

凝眸伏笔的博客 1017

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 896

大数据计算引擎

信息技术和互联网技术的发展,带来了全球数据的爆发式增长。超大规模的数据计算问题成为各大科技公司急需解决的世界级难题。2004年谷歌的MapReduce论文给出了一个可行的大数据计算模型,给大数据并行处理带来了巨大的革命性影响。随后大数据计算取得了飞速发展,针对更细化的大数据应用场景,各种优秀的大数据引擎不断涌现,呈现出百花齐放百家争鸣的景象。在国外一些社区,很多人将大数据的计算引擎分成了四代(如下...

互联网工匠 3791

Codex 100个真实案例 - 用AI自动生成API测试用例(接口测试全覆盖)

API 测试是保障后端质量的关键环节,但手写测试用例既枯燥又容易遗漏。本案例将展示如何用 Codex 从 Swagger/OpenAPI 规范文档自动生成 pytest 测试用例——包括正常流程测试、边界值测试、异常参数测试、性能压力测试,还能自动生成 Mock 数据和精美的 HTML 测试报告。全程自然语言驱动,让 API 测试覆盖率从 0 飙到 90%+!

yueyeguzhuo的专栏 270

二维光子晶体禁带的遗传优化算法实现

二维光子晶体禁带的遗传优化算法MATLAB源代码 光子晶体中因周期性结构而存在的频率禁带称为光子禁带,光子禁带的存在是光子晶体具有广泛应用前景的重要原因。 禁带越大,可控光的频带也越宽,因此如何设计合适的晶体结构以获得大的光子禁带一直是研究和应用的重点与热点。 给大家讲解在平面波展开法的基础上,使用遗传算法寻找具有最大光子禁带的二维光子晶体结构。 %-------------------------------------------------------------------------- % Ph

m0_53407570的博客 583

大数据Hadoop之——实时计算流计算引擎Flink(Flink环境部署)

文章目录一、概述 一、概述 Flink核心是一个流式的数据流执行引擎,并且能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布,数据通信及容错机制等功能。基于流执行引擎,Flink提供了跟多高抽象层的API便于用户编写分布式任务。下面介绍常见的几种API; DataSet API: 对静态数据进行批处理作业,将静态数据抽象成分布式的数据集,用户可以方便的使用Flink提供的各种操作符对分布式数据集进行处理,支持Java,Scala和python;

匠人精神,持之以恒! 5468

训练YOLOv11 | Pytorch和Pycharm的安装教程适用W11系统(附详细的系统变量添加过程)

根据你之前下载的版本选择对应的选项即可,然后复制底下的绿色代码到Anaconda的命令行输入即可(这里要在你安装的python环境里进行安装,例如我的环境名字是PyTorch,那么就是activate PyTorch里进行安装)然后同之前一样会加载一会,然后会询问我们是否下载配件,我们输入Y等待即可(下载过程中我们要确保网络通常如果有波动可能会下载失败)。类似于我的电脑是Windows11选择上面红框内的选项即可点击后即下载,(注意这里下载的是zip文件)下载完成后复制下面几个文件。

Snu77的博客 1万+

Flink系列之大数据分布式计算引擎设计实现剖析

Flink系列之大数据分布式计算引擎设计实现剖析

luoyepiaoxue2014的博客 555

语言模型推理能力与计算表达力深度解析

语言模型的推理能力本质上是一种知识迁移与泛化应用的过程,其核心在于Transformer架构中的自注意力机制和前馈网络的协同作用。计算表达力作为衡量模型能力的关键指标,涉及函数逼近、组合泛化和上下文理解等多个维度。随着模型规模的扩大,涌现能力现象揭示了参数规模与推理能力之间的非线性关系。在实际应用中,通过提示工程和微调策略可以有效激活和优化模型的推理表现。当前研究正探索模块化架构和世界模型整合等方向,以突破长程推理和因果关系建模等前沿挑战。本文深入探讨了语言模型推理泛化的技术原理与实践方法,为理解计算表达力

weixin_42521032的博客 341

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大数据实时计算引擎 Flink

随着这些年大数据的飞速发展,也出现了不少计算的框架(Hadoop、Storm、Spark、Flink)。在网上有人将大数据计算引擎的发展分为四个阶段。 第一代:Hadoop 承载的 MapReduce 第二代:支持 DAG(有向无环图)框架的计算引擎 Tez 和 Oozie,主要还是批处理任务 第三代:支持 Job 内部的 DAG(有向无环图),以 Spark 为代表 第四代:大数据统一计算引擎,包括流处理、批处理、AI、Machine Learning、图计算等,以 F

zjjcchina的博客 1954

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大数据(三)大数据计算引擎

文章目录说明分享大数据计算引擎批处理MapReducetez流批处理Flinkspark总结 说明 本博客每周五更新一次。 介绍过大数据平台的搭建、应用和存储,本期分享下大数据计算。 分享 大数据博客列表 大数据计算引擎 什么是计算引擎? 计算引擎就是一种计算规则的高度抽象聚合体,使用者按照指定的方式编写对应接口代码,然后执行就能得到需要的结果(前提没有bug)。 大数据计算场景分为两个种:批处理(历史文件)和流处理(实时数据)处理,日常看到计算引擎划分: 第一代:批处理代表MapRedu

幻神舞的专栏 3368

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Docker部署常见应用之大数据实时计算引擎Flink

文章介绍了Docker部署大数据实时计算引擎Flink的部署。Apache Flink 是一个开源的分布式流批一体化的计算框架,它提供了一个流计算引擎,能够处理有界和无界的数据流。Flink 的核心优势在于其高吞吐量、低延迟的处理能力,以及强大的状态管理和容错机制。它支持事件驱动的应用和复杂的事件处理(CEP),并且可以处理批处理任务。Flink 的设计目标是提供一个易于使用、灵活且高性能的数据处理平台。

weixin_44585288的博客 2842

SZT-bigdata完整部署教程:从零搭建大数据集群

SZT-bigdata是深圳地铁大数据客流分析系统,本文将为您提供从零开始搭建SZT-bigdata大数据集群的完整部署教程,帮助您快速掌握部署要点和关键步骤。 ## 一、环境准备与集群规划 在开始部署SZT-bigdata大数据集群之前,需要做好环境准备和集群规划工作。确保服务器满足硬件和软件要求,合理规划集群节点数量和角色分配。 ### 1.1 硬件与软件要求 硬件方面,建议每台服务器

gitblog_00229的博客 1237

大数据计算引擎MapReduce、Storm、Spark、Sparkstreaming、Flink到底哪家强?

自大数据的概念被提出以来,企业对于数据信息变为数据资产的诉求越来越强烈,进而在技术领域出现了很多大数据计算引擎服务,最著名、使用最广的莫过于MapReduce、Storm、Spark、Sparkstreaming、Flink了。它们都是在不同的时代背景下所产生的,又是为了解决每个阶段所不能遇到的难题而新出现的解决方案,那么它们到底是什么呢?我们今天一一的来看看这些计算引擎宝贝们~ 从处理的时间来看,我们可以把大数据计算引擎划分为离线计算、实时计算两类,离线计算一般是T+1的延迟,实时计算一般是秒级或.

AI课工场 1190
上一篇: 大数据计算引擎(一)——Spark
下一篇: 数据仓库理论
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值