Hadoop 读取 10 万个文件初始化过程很慢有方便的解决办法么?

2020-08-21 20:56:40 +08:00
 ysn2233

我是用 Flink 的 DataSet API 去读取文件,用的 Hadoop Compatability 里 Hadoop 的 FileInputFormat,发现在创建分片的 getSplits()方法里,会去遍历每一个文件获取 block locations,有 10 万个文件的话就得发 10 万次请求,所以任务初始化非常慢,请问一下有什么好的解决办法么?

2710 次点击
所在节点    Hadoop
4 条回复
liprais
2020-08-21 21:26:02 +08:00
合并小文件呗
billlee
2020-08-21 22:28:01 +08:00
HDFS 本来就不适合存小文件
ysn2233
2020-08-21 23:10:01 +08:00
@billlee 文件也不小但是多,但是初始化慢就是一个循环对每个文件都要去发次 rpc 请求获取一个文件的 block 位置,如果能只发一次请求返回所有相关文件的位置信息感觉就快很多。
kex0916
2020-08-24 17:15:43 +08:00
把文件合并下,或者把读取文件过程拆分成多个任务跑,最后再 union 起来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/700363

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX