谢谢你的回答。我还没有得到我想要的答案。这是一个涉及hdfs和concatapi的特殊问题。
给你。当concat谈到文件时,它是指仅“由hdfs创建和管理的文件”,还是说它将处理hdfs不知道但恰好存在于datanodes上的文件?
我们的想法是
创建一个文件并通过hdfs保存它。它被分解成块并保存到数据节点。
直接转到datanodes并使用普通shell命令生成块的本地副本。
更改这些副本。我现在有一组hadoop不知道的块。校验和绝对不好。
使用concat将副本缝合在一起,并用hdfs“注册”它们。
最后,就hdfs而言,我有两个文件。原件和更新的副本。基本上,我将数据块放在datanodes上,而不必经过hadoop。concat代码将所有这些新块放入一个新的hdfs文件中,而不必通过hadoop传递数据。
我认为这行不通,但我要确定它行不通。有人向我建议,这是解决更新问题的可能办法。我要让他们相信这行不通。
2条答案
按热度按时间50pmv0ei1#
hdfs的基本理念是:
写一次,读很多
然后,不可能用hdfs的基本实现来更新文件。只有在使用hadoop分支时才可以在当前文件的末尾追加(原始版本不允许)
另一种方法是使用非标准的hdfs,如map-r文件系统:https://www.mapr.com/blog/get-real-hadoop-read-write-file-system#.vfhyk2wviko
f0brbegy2#
在hadoop的基础上构建hbase来支持大数据hadoop世界中的crud操作。如果您不应该使用no-sql数据库,那么就没有机会更新hdfs文件。唯一的选择是重写。