CN117472517A - 一种基于Flink分布式处理FTP文件的方法 - Google Patents
一种基于Flink分布式处理FTP文件的方法 Download PDFInfo
- Publication number
- CN117472517A CN117472517A CN202311826200.8A CN202311826200A CN117472517A CN 117472517 A CN117472517 A CN 117472517A CN 202311826200 A CN202311826200 A CN 202311826200A CN 117472517 A CN117472517 A CN 117472517A
- Authority
- CN
- China
- Prior art keywords
- processing
- stream
- flow
- data
- logic data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 253
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000010586 diagram Methods 0.000 claims abstract description 75
- 238000005457 optimization Methods 0.000 claims abstract description 21
- 238000000638 solvent extraction Methods 0.000 claims description 15
- 238000005192 partition Methods 0.000 claims description 10
- 238000012216 screening Methods 0.000 claims description 10
- 238000012163 sequencing technique Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000002377 Fourier profilometry Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1858—Parallel file systems, i.e. file systems supporting multiple processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于Flink分布式处理FTP文件的方法,涉及数据处理技术领域,包括:对FTP文件系统中的多个FTP文件进行扫描并生成扫描获得的每个文件列表的逻辑数据流图;对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程;基于优化流数据处理线程,确定出每个逻辑数据流图中每个流步骤的并行度和每个算子的并发度;基于逻辑数据流图中每个流步骤的并行度和逻辑数据流图中包含的所有流步骤对应的算子的并发度以及Flink程序中的所有工作节点的实时状态信息,为逻辑数据流图的每个流步骤实时分配工作节点,直至遍历所有逻辑数据流图时,获得FTP文件处理结果;用以充分利用集群资源,对FTP数据文件实现高性能的实时数据处理。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种基于Flink分布式处理FTP文件的方法。
背景技术
目前, FTP是传统系统共享数据的重要方式,其特点是简单、可靠、高效;当前还是有大量的商业公司和系统采用FTP共享数据的方式。所以对于大数据处理,具备接入和处理基于FTP的共享数据是其重要的能力之一。
当前基于分布式计算框架的大数据处理平台已经得到了广泛的应用,例如:Flink、Spark等都是非常流行的分布式计算框架。那么如何把传统的FTP共享数据的方式结合分布式处理,以达到高效、实时的数据处理,就变得非常迫切。现有技术中的对FTP数据文件的分布式处理方式有串行处理和并行处理。其中串行处理比如把FTP上的数据文件内容同步到Kafka中去,最常规的做法是连接FTP后获取数据文件,然后读取并解析文件内容,最后把数据写入Kafka。而并行处理是对串行处理的一种改良,其目的是充分利用计算机的多核能力,以提高数据处理的性能。并行处理的具体做法是,通过一个线程负责连接FTP,并读取数据;然后把读取的数据分发到后续的多个处理线程,由处理线程负责解析和处理数据;最后每个处理线程把处理完成的数据写入到Kafka中去。
以上两种处理方式都是传统模式的处理方法,串行处理优点是简单方便,但无法充分利用系统资源,容易导致资源浪费;并行处理在一定程度上优化了资源使用率的问题,但也仅限于一个计算节点的资源,如果是在集群环境下,仍然存在资源使用率底下的问题。当前正是数据爆炸的时代,各业务系统的数据量也呈几何倍数级增长,数据已经成为最有价值的资源,那么想要对这些业务数据进行高效、实时的分析,仅靠提高单个节点的资源利用率来提高数据处理的性能是远远不够的。
随着当前大数据处理的蓬勃发展,已经涌现出很多优秀的分布式处理框架,并且已经得到实践验证,比如:Flink、Spark等,再加上Yarn资源池和Docker、K8S等云原生服务的加持,使得在集群或者云环境中能以分布式的模式处理这些传统介质上的数据成为极为迫切的需求。
因此,本发明提出一种基于Flink分布式处理FTP文件的方法。
发明内容
本发明提供一种基于Flink分布式处理FTP文件的方法,用以为FTP文件的逻辑数据流图的每个流步骤实时合理分配Flink的工作节点,实现在Flink分布式环境下多节点同时处理多个FTP上的多个数据文件,真正意义上做到分布式并行处理,能够充分利用集群资源,对FTP数据文件实现高性能的实时数据分析。
本发明提供一种基于Flink分布式处理FTP文件的方法,包括:
S1:对FTP文件系统中的多个FTP文件进行扫描,获得多个文件列表,并生成每个文件列表的逻辑数据流图;
S2:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤中的算子信息对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程;
S3:基于优化流数据处理线程,确定出每个逻辑数据流图中每个流步骤的并行度和每个算子的并发度;
S4:基于逻辑数据流图中每个流步骤的并行度和逻辑数据流图中包含的所有流步骤对应的算子的并发度以及Flink程序中的所有工作节点的实时状态信息,为逻辑数据流图的每个流步骤实时分配工作节点,直至遍历所有逻辑数据流图时,获得FTP文件处理结果。
优选的,S1:对FTP文件系统中的多个FTP文件进行扫描,获得多个文件列表,包括:
对FTP文件系统中的多个FTP文件进行的状态信息进行扫描,并判断FTP文件的状态信息是否为初始状态,若是,则扫描FTP文件中的所有符合预设扫描规则的文件信息获得文件列表;
否则,将FTP文件中状态信息中包含的对应时间戳大于已更新时间戳的文件信息进行扫描,获得文件列表。
优选的,生成每个文件列表的逻辑数据流图,包括:
基于文件列表和FTP文件处理目标,确定出每个文件列表的多个处理数据对象和每个处理数据对象的处理流数据;
对每个文件列表的所有处理数据对象的处理流数据进行合并汇总,获得每个文件列表的逻辑数据流图。
优选的,对每个文件列表的所有处理数据对象的处理流数据进行合并汇总,获得每个文件列表的逻辑数据流图,包括:
确定出不同处理数据对象的处理流数据之间的重合流分区;
将每个重合流分区中包含的每个原始流步骤的多个相同处理任务的多个处理数据对象汇总,生成合并流步骤;
基于每个文件列表的所有处理数据对象的处理流数据中所有未被合并的原始流步骤和所有合并流步骤,生成每个文件列表的合并处理流数据;
将每个文件列表的合并处理流数据中每个流步骤所需的算子和对应流步骤进行封装,获得每个文件列表的逻辑数据流图,其中流步骤包括原始流步骤和合并流步骤。
优选的S2:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤中的算子信息对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程,包括:
S201:确定出每个逻辑数据流图中的所有初始流数据处理线程,并确定出所有初始流数据处理线程中包含的每个流步骤中的算子信息;
S202:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程。
优选的,S202:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程,包括:
基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,确定出逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度和链策略类型以及数据分区方式;
确定出用户定义的禁用规则;
基于逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度、链策略类型、数据分区方式以及用户定义的禁用规则,在逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,筛选出可优化相邻流步骤;
将逻辑数据流图中的每个可优化相邻流步骤中包含的两个流步骤进行算子链合并,获得新的逻辑数据流图,并将新的逻辑数据流图中的所有流数据处理线程当作优化流数据处理线程。
优选的,基于逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度、链策略类型、数据分区方式以及用户定义的禁用规则,在逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,筛选出可优化相邻流步骤,包括:
将逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,包含的较前流步骤的并行度和较后流步骤的并行度相等的相邻流步骤、且包含的较前流步骤的链策略类型为第一预设类型且较后流步骤的链策略类型为第二预设类型、且包含的两个流步骤的数据分区方式为预设数据分区方式、且未被用户定义的禁用规则所定义、且包含的较后流步骤的入度为1的相邻流步骤,当作可优化相邻流步骤。
优选的,S3:基于优化流数据处理线程,确定出每个逻辑数据流图中每个流步骤的并行度和每个算子的并发度,包括:
确定出每个逻辑数据流图中每个流步骤在对应逻辑数据流图中的同级分支数,作为对应流步骤的并行度;
确定出每个逻辑数据流图中每个流步骤对应的算子在对应流步骤中需要执行的子任务总数,当作对应算子的并发度。
优选的,S4:基于逻辑数据流图中每个流步骤的并行度和逻辑数据流图中包含的所有流步骤对应的算子的并发度以及Flink程序中的所有工作节点的实时状态信息,为逻辑数据流图的每个流步骤实时分配工作节点,直至遍历所有逻辑数据流图时,获得FTP文件处理结果,包括:
获取Flink程序中的所有工作节点的实时状态信息,基于Flink程序中的所有工作节点的实时状态信息实时确定出Flink程序中当前的所有可用工作节点;
实时确定出每个逻辑数据流图中的当前待执行流步骤;
基于逻辑数据流图中当前待执行流步骤的并行度和当前待执行流步骤对应的算子的并发度,在Flink程序中当前的所有可用工作节点中筛选出为逻辑数据流图中当前待执行流步骤分配的工作节点;
直至遍历所有逻辑数据流图时,基于最后一次被分配的所有工作节点的实时状态信息,获得FTP文件处理结果。
优选的,基于逻辑数据流图中当前待执行流步骤的并行度和当前待执行流步骤对应的算子的并发度,在Flink程序中当前的所有可用工作节点中筛选出为逻辑数据流图中当前待执行流步骤分配的工作节点,包括:
基于逻辑数据流图中当前待执行流步骤的并行度,在Flink程序中当前的所有可用工作节点中筛选出当前待执行流步骤的可选工作节点;
将逻辑数据流图中当前待执行流步骤的对应的算子的并发度和与当前待执行流步骤属于同级别的其他流步骤对应的算子的并发度从大到小排序,获得并发度排序结果;
基于并发度排序结果筛选出当前待执行流步骤的工作节点。
本发明相对于现有技术产生的有益效果为:通过对FTP文件的扫描和流数据分析、线程优化,并结合Flink程序中的所有工作节点的实时状态,为FTP文件的逻辑数据流图的每个流步骤实时合理分配Flink的工作节点,实现在Flink分布式环境下多节点同时处理多个FTP上的多个数据文件,真正意义上做到分布式并行处理,能够充分利用集群资源,对FTP数据文件实现高性能的实时数据分析。在基于传统文件系统的存储模式下,可以使用集群框架分布式并行处理文件,能够充分利用集群资源,实现高效快速的数据处理。通过状态存储可以支持增量处理,也可以兼容流处理和批处理多种模式,解决了传统模式难以支持大数据量的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在本申请文件中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中的基于Flink分布式处理FTP文件的方法流程图;
图2为本发明实施例中的FTP文件并行处理过程示意图;
图3为本发明实施例中的集群处理平台并行处理FTP文件全过程示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1:
本发明提供了一种基于Flink分布式处理FTP文件的方法,参考图1至3,包括:
S1:对FTP文件系统(即为用于存储FTP文件的系统)中的多个FTP文件进行扫描,获得多个文件列表(即为用于存储每个FTP文件的文件信息的列表),并生成每个文件列表的逻辑数据流图(即为包含对文件列表对应的FTP文件的处理过程的流数据的有向无环图);
S2:基于每个逻辑数据流图中的所有初始流数据处理线程(即为逻辑数据流图中包含的表征流数据的完整处理线程)中包含的每个流步骤(即为初始数据处理线程中包含的单个步骤)中的算子信息(即为执行流步骤所需的操作算子符的相关信息,例如流步骤的并行度和链策略类型以及数据分区方式等)对每个逻辑数据流图进行算子链式优化(即为将前后相邻的流步骤进行算子链合并),获得优化流数据处理线程(即为被进行算子链优化后的初始流数据处理线程);
S3:基于优化流数据处理线程,确定出每个逻辑数据流图中每个流步骤的并行度(即为在该流步骤所述的逻辑数据流图中与该流步骤同时执行的所有流步骤总数加1后的数值)和每个算子的并发度(即为该算子对应的流步骤中需要同时执行的子任务总数);
S4:基于逻辑数据流图中每个流步骤的并行度和逻辑数据流图中包含的所有流步骤对应的算子的并发度以及Flink程序(即为用于对FTP文件进行分布式处理的程序)中的所有工作节点(每个工作节点用于执行单个流步骤,当执行完一个流步骤时,其工作状态会更新至Redis,然后该处理系统根据Redis存储的每个工作节点的当前状态,判断每个工作节点是否可以执行下一个流步骤任务,并基于该状态信息进行任务分配)的实时状态信息(即为表征工作节点当前是否有正在处理的任务),为逻辑数据流图的每个流步骤实时分配工作节点(即为确定执行流步骤的工作节点),直至遍历所有逻辑数据流图(即为为逻辑数据流图中的所有流步骤分配过工作节点,并且工作节点的实时状态显示已经完成数据处理,当前没有正在处理的任务时,即为遍历所有逻辑数据流图)时,获得FTP文件处理结果(即为基于该实施例中的基于Flink分布式处理FTP文件的方法对FTP文件进行处理后获得的结果,此处的处理具体可以是数据下载或备份,数据读取等数据处理操作)。
该实施例中的分布式处理即为经由多个工作节点同时执行多项不同操作内容的任务,进而以在并行处理的前提下,大大提高文件处理速度和效率。
该实施例中,参考图2,并行处理是对串行处理的一种改良,其目的是充分利用计算机的多核能力,以提高数据处理的性能;
具体做法是,通过一个线程负责连接FTP,并读取数据;然后把读取的数据分发到后续的多个处理线程,由处理线程负责解析和处理数据;最后每个处理线程把处理完成的数据写入到Kafka中去。
该实施例中,一个Flink处理程序由SourceFunction、ProcessFunction和SinkFunction三个部分构成。SourceFunction负责输入的处理,ProcessFunction是对数据的加工和处理,SinkFunction则是负责最后的输出环节。
在此设计中,首先基于Flink的单并行度的SourceFunction实现了FtpScanSourceFunction功能,其主要功能是实现对FTP文件系统按照设置的扫描规则(例如按时间排序)进行扫描操作,把扫描到的文件信息作为数据输出源发送的后续的处理流程中。由于FtpScanSourceFunction是能够保证单并行的,所以其扫描到的文件列表信息也能保证是唯一且正确的,这样就实现了输入信息的唯一性。文件处理模块FtpFileProcessFunction是基于ProcessFunction设计的,其具有多并行的特性。模块在接收到上游传递的文件信息数据,按照其Ftp和对应的文件信息,连接ftp服务并读取对应的ftp文件获取对应的数据信息。
以上经过由source 到 process的过程实现了对FTP文件系统中的多个文件,经由扫描模块获取多个文件列表,然后按照Flink的一对多传输逻辑,自然而然地把多个文件同时分配到多个并行度上同时处理,从而可以充分利用集群资源,大大提高的处理能力。
此外,基于以上设计增加处理状态的记录,还可以实现增量处理的能力。处理状态可以采用Flink本身的checkPoint实现,也可以采用外置的状态存储服务实现,例如(redis等)。这里以图3中外置状态存储Redis为例说明。
FtpScanSourceFunction执行扫描前先检查状态,如果有状态则按状态中的时间戳执行扫描文件时间大于时间戳的,如果没有状态则扫描全部。执行完一次扫描之后,获取到的一批文件列表信息,先对文件按时间排序,然后依次把文件信息发送至下游的处理模块,发送完成以后把最新的文件时间戳信息记录到redis中,下次执行扫描依据此时间戳获取大于此时间戳的文件,实现增量扫描。
FtpFileProcessFunction,执行前同样先检查状态数据,如果有状态表示还有之前的文件没有处理完成,则先处理之前的文件,如果没有则接收新的需要处理的文件信息,开始处理文件。在处理过程中周期性地把文件信息以及针对该文件处理的偏移量信息记录到redis中,当该文件处理完成以后则清除对应的redis状态信息。此操作有两层含义,一是可以体现当前处理文件的进度状态,二是如果处理有异常中断,可以实现继续处理不影响处理进度。
本设计主要体现在sourceFunction和processFunction的处理上,并不影响其他正常的处理流程以及Sink操作。
该实施例中,FTP文件系统作为数据源,包括但不限于本地文件、FTP、SFTP、HDFS等;
基于Flink框架SourceFunction开发的FtpScanSourceFunction模块(主要功能有连接FTP、获取文件列表信息、维护状态信息等),FtpScanSourceFunction执行扫描文件操作;先读取状态信息(包括IP、端口、文件路径、文件名、时间戳等重要信息),如果没有状态则表示为初始状态即扫描所有符合条件的文件列表;如果有状态则依据状态存储的时间戳信息,连接FTP扫描文件时间大于当前时间戳的文件列表。
把获取到的文件列表按照时间排序(升序),然后依次把文件发送至下游的SubTask即ProcessFunction,每成功发送一个文件的信息之后,立即更新状态记录,用这个文件的时间戳覆盖之前的状态。
基于Flink框架ProcessFunction开发的FtpFileProcessFunction模块(主要功能有连接FTP、读取或下载文件、解析数据文件、维护状态信息等)。
FtpFileProcessFunction启动时先检查其本身对应的状态信息(包括TaskID,SubTaskID、FtpIP、端口、文件路径、文件名、文件处理的偏移量的信息);如果没有对应的状态信息则接收上游数据开始处理新数据;如果有状态则先处理状态中记录的数据文件,等处理完成删除对应的状态数据,继续接收新数据开始处理。
每次接收到新数据,则开始建立对应的状态数据,并周期性的更新状态的处理偏移量信息,直至处理完成删除状态数据。
以上技术方案通过对FTP文件的扫描和流数据分析、线程优化,并结合Flink程序中的所有工作节点的实时状态,为FTP文件的逻辑数据流图的每个流步骤实时合理分配Flink的工作节点,实现在Flink分布式环境下多节点同时处理多个FTP上的多个数据文件,真正意义上做到分布式并行处理,能够充分利用集群资源,对FTP数据文件实现高性能的实时数据分析。在基于传统文件系统的存储模式下,可以使用集群框架分布式并行处理文件,能够充分利用集群资源,实现高效快速的数据处理。通过状态存储可以支持增量处理,也可以兼容流处理和批处理多种模式,解决了传统模式难以支持大数据量的问题。
实施例2:
在实施例1的基础上,S1:对FTP文件系统中的多个FTP文件进行扫描,获得多个文件列表,包括:
对FTP文件系统中的多个FTP文件进行的状态信息进行扫描,并判断FTP文件的状态信息是否为初始状态(初始状态即为FTP文件是未被处理过的状态),若是,则扫描FTP文件中的所有符合预设扫描规则(例如按照时间戳进行扫描)的文件信息获得文件列表(例如包含:按照数据生成时间或者最后一次被更新时间从早到晚的顺序排序的数据的列表);
否则,将FTP文件中状态信息中包含的对应时间戳大于已更新时间戳(即为被记录的文件信息已经被更新时对应的时间戳)的文件信息进行扫描,获得文件列表。
上述过程实现对FTP文件的状态检测和非重复扫描。
实施例3:
在实施例1的基础上,生成每个文件列表的逻辑数据流图,包括:
基于文件列表和FTP文件处理目标(例如数据同步更新),确定出每个文件列表的多个处理数据对象(例如设备终端端口信息)和每个处理数据对象的处理流数据(即为包含对该设备终端端口信息的同步更新流程的数据);
对每个文件列表的所有处理数据对象的处理流数据进行合并汇总,获得每个文件列表的逻辑数据流图。
上述过程实现对FTP文件的处理数据对象和处理流数据的识别,进而基于识别出的处理数据对象和处理流数据的识别,实现文件列表的逻辑数据流图的搭建。
实施例4:
在实施例3的基础上,对每个文件列表的所有处理数据对象的处理流数据进行合并汇总,获得每个文件列表的逻辑数据流图,包括:
确定出不同处理数据对象的处理流数据之间的重合流分区(即数据处理操作相同,只是数据处理对象不同的至少一个流步骤构成的部分流程数据);
将每个重合流分区中包含的每个原始流步骤(即为重合流分区中包含的属于逻辑数据流图中的流步骤)的多个相同处理任务(即为多个处理流数据中包含的数据处理操作相同的处理任务)的多个处理数据对象汇总,生成合并流步骤(即为将重合流分区在所属的多个处理流数据中对应的部分流数据合并为对对应多个处理数据对象同时执行同一对应数据处理操作(或相同处理任务)的一个流步骤);
基于每个文件列表的所有处理数据对象的处理流数据中所有未被合并的原始流步骤和所有合并流步骤,生成每个文件列表的合并处理流数据(即为基于重合流分区对多个处理流数据进行部分合并组合后获得的存在多条流操作脉络的流数据);
将每个文件列表的合并处理流数据中每个流步骤所需的算子(即为执行对应流步骤所需的算子操作符,也是实现数据操作任务的一种数据处理前后的映射关系,基于算子实现对数据的处理操作以获得目标状态或目标结果的数据)和对应流步骤进行封装,获得每个文件列表的逻辑数据流图,其中流步骤包括原始流步骤和合并流步骤。
上述过程实现不同处理数据对象之间的处理流数据的部分合并,以获得表征每个文件列表的流数据的流图,并实现对多个文件列表的流数据的初步简化。
实施例5:
在实施例1的基础上,S2:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤中的算子信息对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程,包括:
S201:确定出每个逻辑数据流图中的所有初始流数据处理线程,并确定出所有初始流数据处理线程中包含的每个流步骤中的算子信息;
S202:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,对每个逻辑数据流图进行算子链式优化(即为将符合要求的相邻步骤中的两个算子合并,获得一个流步骤的过程),获得优化流数据处理线程。
上述过基于流步骤的算子信息对逻辑数据流图的算子链式优化,进而实现对每个文件列表的流数据处理线程的优化。
实施例6:
在实施例5的基础上,S202:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程,包括:
基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,确定出逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度和链策略类型(包括ALWAYS(可以与上下游链接,map、flatmap、filter 等默认是ALWAYS)或HEAD(只能与下游链接,不能与上游链接,Source默认是HEAD))以及数据分区方式(例如broadcast、global、shuffle、forward、rebalance、rescale等);
确定出用户定义的禁用规则(即为用户定义的代码配置中的禁用规则,例如disableChain());
基于逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度、链策略类型、数据分区方式以及用户定义的禁用规则,在逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,筛选出可优化相邻流步骤(即为可以进行算子链合并的相邻流步骤);
将逻辑数据流图中的每个可优化相邻流步骤中包含的两个流步骤进行算子链合并(即为将两个流步骤中的两个算子合并为一个,相应地,两个流步骤也合并为一个),获得新的逻辑数据流图,并将新的逻辑数据流图中的所有流数据处理线程当作优化流数据处理线程。
优化流数据处理线程中每个流步骤为一个subtask,最后根据是否可以共享slot分布在taskManager的slot中执行。
上述过程基于算子信息实现对逻辑数据流图中包含的相邻流步骤的可优化与否的判断筛选,并对筛选出的可优化相邻流步骤进行算子链合并,进而实现对逻辑数据流图及其包含的流数据处理线程的进一步优化。
实施例7:
在实施例6的基础上,基于逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度、链策略类型、数据分区方式以及用户定义的禁用规则,在逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,筛选出可优化相邻流步骤,包括:
将逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,包含的较前流步骤的并行度和较后流步骤的并行度相等的相邻流步骤、且包含的较前流步骤的链策略类型为第一预设类型(即ALWAYS 或 HEAD)且较后流步骤的链策略类型为第二预设类型(即ALWAYS)、且包含的两个流步骤的数据分区方式为预设数据分区方式(即为forward)、且未被用户定义的禁用规则所定义(代码中未配置disableChain())、且包含的较后流步骤的入度为1的相邻流步骤,当作可优化相邻流步骤。
该实施例明确了可优化相邻流步骤的具体筛选条件,进而筛选出可以被算子链合并的可优化相邻流步骤。
实施例8:
在实施例1的基础上,S3:基于优化流数据处理线程,确定出每个逻辑数据流图中每个流步骤的并行度和每个算子的并发度,包括:
确定出每个逻辑数据流图中每个流步骤在对应逻辑数据流图中的同级分支数(即为在对应数据流图中包含的所有与当前流步骤同时被执行的流步骤总数加1的数值),作为对应流步骤的并行度;
确定出每个逻辑数据流图中每个流步骤对应的算子在对应流步骤中需要执行的子任务总数,当作对应算子的并发度。
上述技术方案实现每个逻辑数据流图中每个流步骤的并行度和每个算子的并发度的确定。
实施例9:
在实施例1的基础上,S4:基于逻辑数据流图中每个流步骤的并行度和逻辑数据流图中包含的所有流步骤对应的算子的并发度以及Flink程序中的所有工作节点的实时状态信息,为逻辑数据流图的每个流步骤实时分配工作节点,直至遍历所有逻辑数据流图时,获得FTP文件处理结果,包括:
(读取Redis)获取Flink程序中的所有工作节点的实时状态信息,基于Flink程序中的所有工作节点的实时状态信息实时确定出Flink程序中当前的所有可用工作节点(即为当前没有处理任务的工作节点);
实时确定出每个逻辑数据流图中的当前待执行流步骤(即为逻辑数据流图中包含的需要在当前时刻执行的流步骤);
基于逻辑数据流图中当前待执行流步骤的并行度和当前待执行流步骤对应的算子的并发度,在Flink程序中当前的所有可用工作节点中筛选出为逻辑数据流图中当前待执行流步骤分配的工作节点;
直至遍历所有逻辑数据流图时,基于最后一次被分配的所有工作节点的实时状态信息,获得FTP文件处理结果。
上述过程实现可用工作节点的筛选,当前时刻需要执行的流步骤的确定,以及基于逻辑数据流图中当前待执行流步骤的并行度和当前待执行流步骤对应的算子的并发度,在可用工作节点中确定出为当前执行流步骤分配的工作节点,直至完成对FTP文件的处理。
实施例10:
在实施例9的基础上,基于逻辑数据流图中当前待执行流步骤的并行度和当前待执行流步骤对应的算子的并发度,在Flink程序中当前的所有可用工作节点中筛选出为逻辑数据流图中当前待执行流步骤分配的工作节点,包括:
基于逻辑数据流图中当前待执行流步骤的并行度,在Flink程序中当前的所有可用工作节点中筛选出当前待执行流步骤的可选工作节点(即为将当前待执行流步骤的处理数据量和并行度的比值进行向上取整,获得最小容量,将可用工作节点中内存不小于最小容量的可用工作节点当作可选工作节点);
将逻辑数据流图中当前待执行流步骤的对应的算子的并发度和与当前待执行流步骤属于同级别的其他流步骤对应的算子的并发度从大到小排序,获得并发度排序结果;
基于并发度排序结果筛选出当前待执行流步骤的工作节点(即为对工作节点的处理内存进行从大到小排序,获得工作节点排序结果,将当前待执行流步骤在并发度排序结果中的排序序数在工作节点排序结果中对应的工作节点当作当前待执行流步骤的工作节点)。
上述以并行度为参考确定出当前执行流步骤的工作节点需要满足的最小容量,进而筛选出可选工作节点,再基于并发度实现处理内容的排序,进而以内存大小为辅助参考,实现对可选工作节点的进一步合理分配。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于Flink分布式处理FTP文件的方法,其特征在于,包括:
S1:对FTP文件系统中的多个FTP文件进行扫描,获得多个文件列表,并生成每个文件列表的逻辑数据流图;
S2:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤中的算子信息对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程;
S3:基于优化流数据处理线程,确定出每个逻辑数据流图中每个流步骤的并行度和每个算子的并发度;
S4:基于逻辑数据流图中每个流步骤的并行度和逻辑数据流图中包含的所有流步骤对应的算子的并发度以及Flink程序中的所有工作节点的实时状态信息,为逻辑数据流图的每个流步骤实时分配工作节点,直至遍历所有逻辑数据流图时,获得FTP文件处理结果。
2.根据权利要求1所述的基于Flink分布式处理FTP文件的方法,其特征在于,S1:对FTP文件系统中的多个FTP文件进行扫描,获得多个文件列表,包括:
对FTP文件系统中的多个FTP文件进行的状态信息进行扫描,并判断FTP文件的状态信息是否为初始状态,若是,则扫描FTP文件中的所有符合预设扫描规则的文件信息获得文件列表;
否则,将FTP文件中状态信息中包含的对应时间戳大于已更新时间戳的文件信息进行扫描,获得文件列表。
3.根据权利要求1所述的基于Flink分布式处理FTP文件的方法,其特征在于,生成每个文件列表的逻辑数据流图,包括:
基于文件列表和FTP文件处理目标,确定出每个文件列表的多个处理数据对象和每个处理数据对象的处理流数据;
对每个文件列表的所有处理数据对象的处理流数据进行合并汇总,获得每个文件列表的逻辑数据流图。
4.根据权利要求3所述的基于Flink分布式处理FTP文件的方法,其特征在于,对每个文件列表的所有处理数据对象的处理流数据进行合并汇总,获得每个文件列表的逻辑数据流图,包括:
确定出不同处理数据对象的处理流数据之间的重合流分区;
将每个重合流分区中包含的每个原始流步骤的多个相同处理任务的多个处理数据对象汇总,生成合并流步骤;
基于每个文件列表的所有处理数据对象的处理流数据中所有未被合并的原始流步骤和所有合并流步骤,生成每个文件列表的合并处理流数据;
将每个文件列表的合并处理流数据中每个流步骤所需的算子和对应流步骤进行封装,获得每个文件列表的逻辑数据流图,其中流步骤包括原始流步骤和合并流步骤。
5.根据权利要求1所述的基于Flink分布式处理FTP文件的方法,其特征在于,S2:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤中的算子信息对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程,包括:
S201:确定出每个逻辑数据流图中的所有初始流数据处理线程,并确定出所有初始流数据处理线程中包含的每个流步骤中的算子信息;
S202:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程。
6.根据权利要求5所述的基于Flink分布式处理FTP文件的方法,其特征在于,S202:基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,对每个逻辑数据流图进行算子链式优化,获得优化流数据处理线程,包括:
基于每个逻辑数据流图中的所有初始流数据处理线程中包含的每个流步骤的算子信息,确定出逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度和链策略类型以及数据分区方式;
确定出用户定义的禁用规则;
基于逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度、链策略类型、数据分区方式以及用户定义的禁用规则,在逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,筛选出可优化相邻流步骤;
将逻辑数据流图中的每个可优化相邻流步骤中包含的两个流步骤进行算子链合并,获得新的逻辑数据流图,并将新的逻辑数据流图中的所有流数据处理线程当作优化流数据处理线程。
7.根据权利要求6所述的基于Flink分布式处理FTP文件的方法,其特征在于,基于逻辑数据流图中所有初始流数据处理线程中包含的每个流步骤的并行度、链策略类型、数据分区方式以及用户定义的禁用规则,在逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,筛选出可优化相邻流步骤,包括:
将逻辑数据流图中不同初始流数据处理线程中包含的相邻流步骤中,包含的较前流步骤的并行度和较后流步骤的并行度相等的相邻流步骤、且包含的较前流步骤的链策略类型为第一预设类型且较后流步骤的链策略类型为第二预设类型、且包含的两个流步骤的数据分区方式为预设数据分区方式、且未被用户定义的禁用规则所定义、且包含的较后流步骤的入度为1的相邻流步骤,当作可优化相邻流步骤。
8.根据权利要求1所述的基于Flink分布式处理FTP文件的方法,其特征在于,S3:基于优化流数据处理线程,确定出每个逻辑数据流图中每个流步骤的并行度和每个算子的并发度,包括:
确定出每个逻辑数据流图中每个流步骤在对应逻辑数据流图中的同级分支数,作为对应流步骤的并行度;
确定出每个逻辑数据流图中每个流步骤对应的算子在对应流步骤中需要执行的子任务总数,当作对应算子的并发度。
9.根据权利要求1所述的基于Flink分布式处理FTP文件的方法,其特征在于,S4:基于逻辑数据流图中每个流步骤的并行度和逻辑数据流图中包含的所有流步骤对应的算子的并发度以及Flink程序中的所有工作节点的实时状态信息,为逻辑数据流图的每个流步骤实时分配工作节点,直至遍历所有逻辑数据流图时,获得FTP文件处理结果,包括:
获取Flink程序中的所有工作节点的实时状态信息,基于Flink程序中的所有工作节点的实时状态信息实时确定出Flink程序中当前的所有可用工作节点;
实时确定出每个逻辑数据流图中的当前待执行流步骤;
基于逻辑数据流图中当前待执行流步骤的并行度和当前待执行流步骤对应的算子的并发度,在Flink程序中当前的所有可用工作节点中筛选出为逻辑数据流图中当前待执行流步骤分配的工作节点;
直至遍历所有逻辑数据流图时,基于最后一次被分配的所有工作节点的实时状态信息,获得FTP文件处理结果。
10.根据权利要求9所述的基于Flink分布式处理FTP文件的方法,其特征在于,基于逻辑数据流图中当前待执行流步骤的并行度和当前待执行流步骤对应的算子的并发度,在Flink程序中当前的所有可用工作节点中筛选出为逻辑数据流图中当前待执行流步骤分配的工作节点,包括:
基于逻辑数据流图中当前待执行流步骤的并行度,在Flink程序中当前的所有可用工作节点中筛选出当前待执行流步骤的可选工作节点;
将逻辑数据流图中当前待执行流步骤的对应的算子的并发度和与当前待执行流步骤属于同级别的其他流步骤对应的算子的并发度从大到小排序,获得并发度排序结果;
基于并发度排序结果筛选出当前待执行流步骤的工作节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311826200.8A CN117472517B (zh) | 2023-12-28 | 2023-12-28 | 一种基于Flink分布式处理FTP文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311826200.8A CN117472517B (zh) | 2023-12-28 | 2023-12-28 | 一种基于Flink分布式处理FTP文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117472517A true CN117472517A (zh) | 2024-01-30 |
CN117472517B CN117472517B (zh) | 2024-03-08 |
Family
ID=89624220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311826200.8A Active CN117472517B (zh) | 2023-12-28 | 2023-12-28 | 一种基于Flink分布式处理FTP文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472517B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931756A (zh) * | 2024-03-25 | 2024-04-26 | 广州睿帆科技有限公司 | 一种基于Flink的FTP文件实时监控分析系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150222696A1 (en) * | 2014-02-05 | 2015-08-06 | Electronics And Telecommunications Research Instit | Method and apparatus for processing exploding data stream |
CN112506939A (zh) * | 2020-12-08 | 2021-03-16 | 福建省海峡信息技术有限公司 | 一种基于Flink流式引擎的CEP规则更新方法 |
CN114579309A (zh) * | 2022-03-03 | 2022-06-03 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法和装置 |
CN116954944A (zh) * | 2023-07-14 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 基于内存网格的分布式数据流处理方法、装置及设备 |
CN117234697A (zh) * | 2023-11-16 | 2023-12-15 | 中国人民解放军国防科技大学 | 一种保守时间同步并行事件调度计算架构和方法 |
-
2023
- 2023-12-28 CN CN202311826200.8A patent/CN117472517B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150222696A1 (en) * | 2014-02-05 | 2015-08-06 | Electronics And Telecommunications Research Instit | Method and apparatus for processing exploding data stream |
CN112506939A (zh) * | 2020-12-08 | 2021-03-16 | 福建省海峡信息技术有限公司 | 一种基于Flink流式引擎的CEP规则更新方法 |
CN114579309A (zh) * | 2022-03-03 | 2022-06-03 | 北京沃东天骏信息技术有限公司 | 一种数据处理方法和装置 |
CN116954944A (zh) * | 2023-07-14 | 2023-10-27 | 腾讯科技(深圳)有限公司 | 基于内存网格的分布式数据流处理方法、装置及设备 |
CN117234697A (zh) * | 2023-11-16 | 2023-12-15 | 中国人民解放军国防科技大学 | 一种保守时间同步并行事件调度计算架构和方法 |
Non-Patent Citations (1)
Title |
---|
樊春美等: "基于Flink实时计算的自动化流控制算法", 《计算机技术与发展》, no. 08, 10 August 2020 (2020-08-10), pages 72 - 78 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117931756A (zh) * | 2024-03-25 | 2024-04-26 | 广州睿帆科技有限公司 | 一种基于Flink的FTP文件实时监控分析系统及方法 |
CN117931756B (zh) * | 2024-03-25 | 2024-06-04 | 广州睿帆科技有限公司 | 一种基于Flink的FTP文件实时监控分析系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117472517B (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117472517B (zh) | 一种基于Flink分布式处理FTP文件的方法 | |
KR101013073B1 (ko) | 태스크 분배 및 병렬 처리 시스템과 그 방법 | |
CN109445944A (zh) | 一种基于dpdk的网络数据采集处理系统及其方法 | |
JP2019502989A (ja) | 動的なパーティショニングを使用してデータを処理すること | |
CN110750592A (zh) | 数据同步的方法、装置和终端设备 | |
Liu et al. | Optimizing shuffle in wide-area data analytics | |
US8055651B2 (en) | Distribution of join operations on a multi-node computer system | |
CN111932257A (zh) | 一种区块链并行化处理方法及装置 | |
CN111914007B (zh) | 一种hadoop集群运行ETL流程的方法及装置 | |
CN116418700A (zh) | 一种基于dpdk的分布式数据捕获方法 | |
Li et al. | {MilliSort} and {MilliQuery}:{Large-Scale}{Data-Intensive} Computing in Milliseconds | |
CN110908796A (zh) | 一种Gaia系统中的多作业合并与优化系统及方法 | |
CN113746883B (zh) | 链路跟踪方法及系统 | |
CN112559525A (zh) | 数据检查系统、方法、装置和服务器 | |
CN116974994A (zh) | 一种基于集群的高效能文件协作系统 | |
CN114756629A (zh) | 基于sql的多源异构数据交互分析引擎及方法 | |
CN110868461B (zh) | 一种Gaia集群中面向节点间异构带宽的数据分发方法 | |
CN112596895A (zh) | 一种sql语义感知的弹性倾斜处理方法及系统 | |
CN113377652A (zh) | 测试数据生成方法及装置 | |
CN112948229A (zh) | 调度集群的性能确定方法、装置、计算机设备及存储介质 | |
CN114817311B (zh) | 应用于GaussDB数据库存储过程的并行计算方法 | |
CN117931756B (zh) | 一种基于Flink的FTP文件实时监控分析系统及方法 | |
CN118332024A (zh) | 一种时序数据的处理方法以及装置 | |
Revathi | Performance tuning and scheduling of large data set analysis in map reduce paradigm by optimal configuration using Hadoop | |
CN117632453A (zh) | 地震作业的执行方法、系统及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |