我的工作是提高从磁盘读取大量小文件(1KB)的速度,以便写入我们的数据库。 数据库对我来说是开源的,我可以将所有代码从客户端更改为服务器。 数据库架构就是这样,它是一个简单的主从分布式基于HDFS的数据库,如HBase。来自磁盘的小文件可以插入我们的数据库并自动组合成更大的块然后写入HDFS。(也可以通过数据库将大文件拆分为较小的块然后写入HDFS)
更改客户端的一种方法是增加线程数。 我没有任何其他想法。或者你可以提供一些想法来进行性能分析。
答案 0 :(得分:0)
处理这些小文件的方法之一可能是将这些小文件转换为序列文件并将其存储到HDFS中。然后将此文件用作Map Reduce作业输入文件,以将数据放入HBase或类似的数据库中。
答案 1 :(得分:0)
这使用aws作为示例,但它可以是任何存储/队列设置:
如果文件能够存在于S3等共享存储上,则可以为每个文件添加一个队列条目,然后开始在队列中抛出服务器以将文件添加到数据库。在那时,瓶颈变成了db而不是客户端。