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

标签 java scala hadoop bigdata

基本上我有一个程序,可以将文件上传到 HDFS。这些文件在任务执行结束时上传。因此,发生的情况是许多任务同时(在执行结束时)将文件上传到 HDFS,从而造成争用。文件大小小于一个 HDFS block (< 64 MB)。我想知道,是否提前创建一个 HDFS 文件会更快(同时任务正在做一些处理以避免争用),然后在处理完成后,以字符串形式读取本地文件的内容,然后追加将该字符串添加到预先创建的 HDFS 文件中。

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

最佳答案

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

关于java - 将文件上传到 HDFS 或直接创建和写入 HDFS 文件哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36865214/

相关文章:

java - Angular 和 Java Jersey API 存在问题,末尾编码 utf-8 空格无效 json

java - java中如何将一个类中创建的对象传递给另一个类?

java - 使用 Jackson 生成 JSON 模式进入无限循环

json - 将 PostgreSQL JSON 类型与 Slick 2 代码生成器一起使用

java - 如何在 Java 中从 Scala 传递通过包对象定义的隐式 val

java - 为什么 ShuffleConsumerPlugin 在映射之前没有启动?

java - 将秒从天文钟转换为整数

scala - 在 akka http 客户端中禁用 SSL 安全

java - Hadoop MapReduce 新手,在 mapred.Reducer.<init>() 上获取 NoSuchMethodException

hadoop - 无法在PIG中转储关系