hdfs附加到sequencefile的速度很慢

igsr9ssn  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(441)

附加到SequenceFile似乎非常慢。我们将文件夹(其中包含小文件)转换为sequencefiles,使用文件名作为键,内容作为值。但是,吞吐量非常低,大约为2mb/s(大约每秒2到3个文件)。我们有米奥。对于我们来说,每秒最多3个文件的速度非常慢。
我们要做的是一个简单的:

for(String file : files) {
  byte[] data = Files.readAllBytes(Paths.get(dir.getAbsolutePath()
                    + File.separatorChar + file));
  byte[] keyBytes = l.getBytes("UTF-8");
  BytesWritable key = new BytesWritable(keyBytes);
  BytesWritable val = new BytesWritable(data);

  seqWriter.append(key, val);
}

有什么关于如何加速的提示和想法吗?

2skhul33

2skhul331#

大多数情况下,罪魁祸首是编写压缩文件(例如,gzip没有本机lib支持)。你没提到你是怎么设置的 seqWriter ,所以这只是猜测。
另一个需要加速的方法是分批或异步并行地预取文件,因为下载小文件的延迟可能是瓶颈,而不是实际的追加操作。
如果append是瓶颈,还可以增加缓冲区大小。或者配置 io.file.buffer.size (默认4k)或使用 BufferSizeOption 选项。

相关问题