Hadoop遵循WORM(多次写入一次读取)。为什么不允许任何更新?
感谢
答案 0 :(得分:1)
这更容易。更确切地说,对于具有复杂故障模式的分布式集群中的可靠写入,更加容易。而且,对于仅为追加/基于日志的操作而编写的应用程序,效果很好。
您现在可以附加到HDFS(建议使用Hadoop 2.6+),但您只能在文件末尾写入;你不能在文件的前面搜索(),或者在当前的EOF之后搜索,然后写。
这会被解决吗?也许。但最近关于静态加密和擦除编码的工作更多地集中在压缩和加密现有数据上,这可能会使搜索和写入更加困难。我建议不要等待这个功能,而是编写在约束条件下工作的代码(如HBase和accumulo那样)。
答案 1 :(得分:1)
真正的问题是更新数据的动机是什么?我们将实体存储在数据库中并在看到新信息时更新它们,但为什么呢?原因是当它首次被架构时,磁盘空间很昂贵。快进到现在和磁盘空间很便宜,这意味着我们可以将数据的更改反映为新条目,例如实体在其生命周期中经历的更改的日志。
通过使用这种方法,数据的谱系更加明显 - 我们只需重新访问同一实体的旧版本,以发现它的来源以及应用了哪些转换。而且,如果最新版本发生了什么事,那么一切都不会丢失。我们只是回到旧版本,状态损失很小。这显然优于更新的实体,其中整个实体可能丢失并且可能永远不会恢复。
在Nathan Marz和James Warren的'Big Data - Principles and Practices of Scalable Real-time Data Systems'中记录得非常好。