我知道hdfs块大小是64MB。但假设我创建了一个新的hdfs文件,并继续向其中写入数据,但每次只写入4kb的数据。这样效率会很低吗?到最后,我的文件大小可能会达到1gb,但是一点一点地写数据会使写入这样一个文件的效率降低吗?我是说,在写入文件之前缓冲我的数据很重要吗。例如,在本例中,我可以不断将数据累积到缓冲区中,直到它达到64MB的大小,然后将其写入hdfs文件,并在清除该缓冲区后重复该过程。
c9qzyr3d1#
首先,hdfs blocksize由您决定,默认值是可配置的,您可以在将给定文件放入hdfs时为其设置不同的blocksize。如果要将数据放入hdfs时数据不在手边,那么使用flume,将源设置为数据生成器,将接收器设置为hdfs上的一个文件,并让工具完成其工作,而不必费劲处理细节。如果数据在数据库中,也可以使用sqoop。否则,如果您正在进行实验,那么就进行性能测试,并检查哪种方法更好,这在很大程度上取决于数据是如何生成的以及如何使用哪个库的。
1条答案
按热度按时间c9qzyr3d1#
首先,hdfs blocksize由您决定,默认值是可配置的,您可以在将给定文件放入hdfs时为其设置不同的blocksize。
如果要将数据放入hdfs时数据不在手边,那么使用flume,将源设置为数据生成器,将接收器设置为hdfs上的一个文件,并让工具完成其工作,而不必费劲处理细节。如果数据在数据库中,也可以使用sqoop。
否则,如果您正在进行实验,那么就进行性能测试,并检查哪种方法更好,这在很大程度上取决于数据是如何生成的以及如何使用哪个库的。