将文件上传到 HDFS 或直接创建和写入 HDFS 文件哪个更快?

Posted

技术标签:

【中文标题】将文件上传到 HDFS 或直接创建和写入 HDFS 文件哪个更快?【英文标题】:Which is faster, uploading a file to HDFS or creating and writing to an HDFS file directly? 【发布时间】:2016-04-26 12:39:07 【问题描述】:

基本上我有一个程序,它将文件上传到 HDFS。文件在任务执行结束时上传。因此,会发生很多任务同时(在执行结束时)将文件上传到 HDFS,从而产生争用。文件大小小于 HDFS 块 (

所以,基本上我的问题是,创建 HDFS 文件或将字符串附加到已创建的 HDFS 文件,哪个开销更大?

【问题讨论】:

我会试试看。我觉得不会那么难 没错,但我只是想要一些意见。 请提供更多信息。你是什​​么意思:'如果以字符串形式读取此类文件的内容会更快,请创建一个 HDFS 文件,然后将该字符串直接写入 HDFS 文件'。它与“我有一个将文件上传到 HDFS 的程序”有何不同 基本上,如果您阅读了我的整个帖子,我会说我会在处理的同时创建文件,所以最后,我只需要将一个字符串附加到已经创建的文件中。所以这一切都归结为哪个有更多的开销,创建一个 HDFS 文件或附加到一个 HDFS 文件? 【参考方案1】:

我自己对此进行了测试,并注意到创建 HDFS 文件所花费的时间几乎与追加文件所花费的时间相同。这是假设写入的内容小于 HDFS 块大小。如果你上传一个 HDFS 文件,那相当于创建一个 HDFS 文件并附加到它,所以这意味着它需要的时间是附加到它的两倍。

【讨论】:

以上是关于将文件上传到 HDFS 或直接创建和写入 HDFS 文件哪个更快?的主要内容,如果未能解决你的问题,请参考以下文章

springMVC + hadoop + httpclient 文件上传请求直接写入hdfs

HDFS写数据流程

hadoop内部表直接添加文件

插入 Impala 表与写入 HDFS

HDFS文件的互斥写入?

HDFS数据流——写数据流程