为什么hadoop遵循蠕虫(一次写入多次读取)而不允许更新?

hwamh0ep  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(469)

hadoop遵循worm(一次写入多次读取)。为什么它不允许任何更新?
谢谢

ao218c7q

ao218c7q1#

问题是更新数据的动机是什么?我们将实体存储在数据库中,并在看到新信息时更新它们,但为什么呢?原因是当它第一次被设计时,磁盘空间是昂贵的。快进到今天,磁盘空间很便宜,这意味着我们可以将对数据的更改反映为新条目,就像实体在其生命周期中经历的更改日志一样。
通过使用这种方法,数据的沿袭更加明显—我们只需重新访问同一实体的旧版本,就可以发现它来自何处,以及对它应用了哪些转换。此外,如果最新版本发生了什么,一切都不会丢失。我们只需返回到一个旧版本,状态损失就很小了。这显然比更新的实体更好,在更新的实体中,整个实体可能会丢失,并且可能永远不会恢复。
这在nathan marz和james warren的“大数据-可伸缩实时数据系统的原则和实践”中有很好的记录。

jdzmm42g

jdzmm42g2#

更简单。更准确地说,对于具有复杂故障模式的分布式集群中的可靠写操作,这要容易得多。而且,对于为仅附加/基于日志的操作编写的应用程序,效果很好。
您现在可以附加到hdfs(推荐使用hadoop2.6+),但只能在文件末尾进行精确写入;不能将seek()设置为文件的前面部分,也不能超过当前的eof,然后再写入。
这个问题能解决吗?也许 吧。但是最近关于静态加密和擦除编码的工作更多地集中在压缩和加密现有数据上,这可能会使seek+写更加困难。我建议不要等待这个特性,而是编写在限制范围内工作的代码(就像hbase和acumulo那样)。

相关问题