hadoop - 将数据存储在hdfs中而不是消息队列中

标签 hadoop mapreduce hdfs

我正在尝试更改在应用程序中处理数据的方法。首先从数据库接收数据并将其存储在消息队列中。我希望将数据直接放入hdfs。我不希望数据写入文件并移至hdfs。从HDFS,我将处理数据并将结果放入hdfs。我可以从Java程序中将数据写入HDFS,而不是向hdfs提供复制命令吗?

最佳答案

您的方法不可见的原因有两个。

  • 将每个消息写入hdfs将是一项昂贵的操作。
  • 您不能直接将消息写入hdfs,必须先将其写入文件,然后将其放入hdfs。
  • 方法2将在hdfs中生成许多小型文件,从而增加名称节点跟踪该文件的每个块的负担。

  • 我建议为消息传递队列设置一个阈值,一旦达到该阈值,就将所有消息移至文件,然后移至hdfs。

    关于hadoop - 将数据存储在hdfs中而不是消息队列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31237106/

    相关文章:

    java - 如何从 Java/Scala 读取 Nutch 内容?

    hadoop - 导入时出现Sqoop错误

    java - map task 卡在 50%

    hadoop - 将文件从 NFS 或本地 FS 复制到 HDFS

    java - 使用spark-submit部署程序时出现java.lang.NoSuchMethodError

    python - 在Python中分隔的Spark saveAsTextFile选项卡

    python - MapReduce:ValueError:要解压的值太多(预期为 2)

    java - Cassandra Hadoop减少输出映射列类型java

    hadoop - YARN接受后,MapReduce作业失败

    java - 将值从 Java 操作传递到 Oozie 工作流中的下一个 Java 操作