一个带有hdfs和mapreduce的文件数据库

x759pob2  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(308)

假设我想存储大量带有相关元数据的url

URL => Metadata

在文件中

hdfs://db/urls.seq

我想这个文件增长(如果新的网址发现)后,每次运行mapreduce。
这对hadoop有用吗?据我所知,mapreduce将数据输出到一个新目录。有没有办法获取输出并将其附加到文件中?
我唯一想到的是创建一个临时url.seq,然后替换旧的。它工作,但感觉浪费。另外,据我所知,hadoop喜欢“只写一次”的方法,这种想法可能与此相冲突。

yqhsw0fo

yqhsw0fo1#

正如blacksmith所解释的,您可以很容易地在hdfs中附加现有文件,但这会降低您的性能,因为hdfs是用“一次写入”策略设计的。我的建议是在别无选择之前避免这种做法。您可以考虑的一种方法是,可以为每个mapreduce输出创建一个新文件,如果每个输出的大小足够大,那么这种技术将对您最有好处,因为编写新文件不会像附加那样影响性能。而且,如果在下一个mapreduce中读取每个mapreduce的输出,那么读取新文件不会像附加那样影响性能。因此,有一个折衷方案,它取决于您想要的是性能还是简单无论如何,圣诞快乐

相关问题