传输大量小文件

1rhkuytd  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(476)

通常的数据传输方法(scp、http和ftp实用程序,如curl或wget)在数据处于mb甚至gb范围内时可以正常工作,但是当您有非常大的小文件集合(例如10kb)时,传输速度会非常慢,而且根本不使用带宽。
有两个服务器(s1,s2)当在s1中接收到一个文件时,它应该立即将其发送到s2。
你有没有想过使用一些dsp工具,比如ApacheFlink或nifi?

368yc8dk

368yc8dk1#

我没用过 Apache-Flink 但是使用nifi这个用例相当简单(只需拖放和配置3个处理器)
流量:

1.ListFile //list files in S1 server
    --> Success Connection (Load Balance Strategy (or) Remote Processor Group)
2.FetchFile //fetch the file from S1 Server
    --> Success Connection
3.PutFile //send the file to S2 server

我们要跑了 ListFile/ListSFTP..etc 处理器一直递增地列出目录中的文件。
一旦我们列出了我们可以做的文件 load balance and distribute 群集中所有节点之间的工作
文件的实际获取将由 FetchFile 基于与流文件关联的属性动态地处理程序。
使用 success 连接自 FetchFile 处理器使用将文件传输到s2服务器 PutFile/PutSFTP..etc 处理器。
有关上述流程的更多详细信息/用法,请参阅此链接。

brccelvz

brccelvz2#

您可以使用flink连续复制文件,是的-虽然这不是我通常看到的用例,因为您所做的只是移动字节,而不是处理数据(这是flink做得最好的地方)。
为了和Flink一起做这件事,你会建立一个 (Rich)SourceFunction 它连续监视s3源目录,并向任何新文件发送路径。那么你可能会使用 AsyncFunction 将文件从当前位置异步复制到新位置。
--肯

相关问题