活动介绍
file-type

Flink作业执行详解:从StreamGraph到物理执行计划

PDF文件

下载需积分: 19 | 2.34MB | 更新于2024-07-17 | 133 浏览量 | 4 下载量 举报 收藏
download 立即下载
Apache Flink 是一个开源的分布式流处理框架,特别适合于实时数据处理和事件驱动的应用场景。这份文档详细介绍了 Flink 的Job执行流程,包括其核心的四层转化过程: 1. **程序层(Program)-> 流图层(StreamGraph)**: Flink的编程模型从用户编写的数据处理程序开始,程序员通过`StreamExecutionEnvironment`创建环境并定义数据流操作(如`transform`),如map、filter、reduce等。这些操作构成程序的核心逻辑。 2. **流图层(StreamGraph)-> 作业图层(JobGraph)**: 当用户调用`execute`方法时,Flink会将程序转化为一个`StreamGraph`,这是执行计划的抽象表示。这个阶段会将所有的数据流转换为一系列的StreamNode(节点,代表操作)和StreamEdge(边,代表数据流)。 3. **作业图层(JobGraph)-> 执行图层(ExecutionGraph)**: `JobGraph`进一步细化为`ExecutionGraph`,它包含了更具体的资源分配和调度信息。在这个阶段,Flink会优化图结构,比如合并连续的操作以减少网络开销,或者考虑任务并行度和容错机制。 4. **执行层(Execution)-> 物理执行计划**: 最终,Flink将`ExecutionGraph`转换为一个物理执行计划,这可能涉及到任务分配到特定的集群节点,数据分发策略以及数据局部性优化。Flink会根据可用的硬件资源动态调整执行策略。 整个流程中,Flink的内部工具,如`StreamGraphGenerator`,起到了关键作用,它负责构建和优化这个执行图,确保数据流在集群上的高效传输和处理。这份文档对于理解Flink的底层工作原理和技术细节非常有价值,对于开发者来说是宝贵的参考资料,特别是对于那些想要深入研究或进行性能调优的Flink用户。值得注意的是,内容来自Apache Flink中国的官方社区,且强调了非商业用途,确保了知识的准确性与共享性。

相关推荐

filetype

./bin/flink run -d -t yarn-per-job \ -Dyarn.application.name="flinkcdc_prod_old_smpcdb_3" \ -Dyarn.application.queue="hive" \ -Dstate.backend=rocksdb \ -Dstate.externalize-checkpoints=true \ -Dexecution.checkpointing.externalized-checkpoint-retention=RETAIN_ON_CANCELLATION \ -Dexecution.checkpointing.interval=180s \ -Dexecution.checkpointing.timeout=7200s \ -Dexecution.checkpointing.min-pause=60s \ -Dexecution.checkpointing.max-concurrent-checkpoints=1 \ -Dstate.checkpoints.dir=hdfs://hadoop102:8020/flink_ck/offline/prod_old_smpcdb \ --allowNonRestoredState \ -Dparallelism.default=4 \ -Djobmanager.memory.process.size=2048m \ -Dtaskmanager.memory.process.size=5120m \ -Dtaskmanager.numberOfTaskSlots=2 \ -c org.apache.doris.flink.tools.cdc.CdcTools \ /opt/module/flink-1.17.2-sql-cdc/lib/flink-doris-connector-1.17-1.6.2.jar \ oracle-sync-database \ --database prod_old_smpcdb \ --oracle-conf hostname=10.1.9.2 \ --oracle-conf port=1521 \ --oracle-conf database-name=PMS2 \ --oracle-conf username=pms \ --oracle-conf password="SRX3yak#8" \ --oracle-conf schema-name=PMS \ --oracle-conf debezium.database.history.store.only.captured.tables.ddl=true \ --oracle-conf debezium.log.miner.enabled=false \ --oracle-conf debezium.snapshot.mode=initial_only \ --oracle-conf debezium.snapshot.fetch.size=20000 \ --oracle-conf debezium.column.mapping="CLOB:STRING,BLOB:STRING" \ --oracle-conf debezium.snapshot.checkpoint.interval.ms=0 \ --oracle-conf debezium.transforms=encodeBlob \ --oracle-conf debezium.transforms.encodeBlob.format=base64 \ --oracle-conf debezium.database.url="jdbc:oracle:thin:@//10.1.9.2:1521/PMS" \ --including-tables "EXP_PHOTO" \ --sink-conf fenodes=10.210.31.92:18030 \ --sink-conf username=root \ --sink-conf password=zjj000000 \ --sink-conf jdbc-url=jdbc:mysql://10.210.31.92:9030 \ --sink.buffer-size=100M \ --sink.buffer-flush.interval=60000 \ --sink-conf sink.enable-2pc=false \ --sink-conf sink.label-prefix=label_cdc_prod_old_smpcdb_340 \ --sink-conf sink.stream-load.timeout=7200 \ --sink-conf sink.connect.timeout.ms=60000 \ --sink-conf sink.request.timeout.ms=3600000 \ --table-conf replication_num=1 采集oracle 数据表到doris,大字段为空其他的字段有数据

dargun
  • 粉丝: 2
上传资源 快速赚钱