Hadoop 带append的HDFS是如何工作的
假设有一个使用默认块大小(128MB),有一个文件使用130MB;所以使用一个全尺寸块和一个2MB块。然后需要将20MB追加到文件中(现在总共应该是150MB)。会发生什么 HDFS是否将最后一个块的大小从2MB调整到22MB?还是创建一个新块 在HDFS中附加到文件如何处理并发性? 是否存在数据丢失的风险Hadoop 带append的HDFS是如何工作的,hadoop,size,append,block,hdfs,Hadoop,Size,Append,Block,Hdfs,假设有一个使用默认块大小(128MB),有一个文件使用130MB;所以使用一个全尺寸块和一个2MB块。然后需要将20MB追加到文件中(现在总共应该是150MB)。会发生什么 HDFS是否将最后一个块的大小从2MB调整到22MB?还是创建一个新块 在HDFS中附加到文件如何处理并发性? 是否存在数据丢失的风险 HDFS是否创建第三个块将20+2MB放入其中,并删除2MB的块。如果是,这是如何并行工作的?Hadoop分布式文件系统支持附加到文件,在这种情况下,它应该将20 MB添加到示例中的第二个块
HDFS是否创建第三个块将20+2MB放入其中,并删除2MB的块。如果是,这是如何并行工作的?Hadoop分布式文件系统支持附加到文件,在这种情况下,它应该将20 MB添加到示例中的第二个块中(最初包含2 MB的块)。这样,您将得到两个块,一个是128MB,另一个是22MB
是对用于HDFS的append java文档的参考。这里是一个关于append的非常全面的文档,它包含并发性问题 Current提供了指向该文档的链接,因此我们可以假设它是最近的一个。(文件日期为2009年) 以及相关的。根据中的,我们可以找到您问题的以下答案:
我知道这条路是不变的。但是由于块只写一次,我可以想象HDFS会创建第三个块,将20+2MB放入其中,然后删除2MB的块。但这是如何并行工作的呢?你能附加到一个关闭的文件吗?如果你对一个文件调用append,你就是在打开它。无法对打开的文件调用append。然后,一旦调用append并获得输出流,您就可以开始将字节转储到文件的末尾。如果我没记错引入此功能的时间,您需要打开一个新创建的文件,以便能够“附加”到它(也称为非真正的附加)。你是说现在HDFS允许1)创建一个文件2)关闭它3)重新打开它4)向它添加数据?是的。因为当您重新打开它时,您会询问名称节点最后一个块是什么,然后您就可以开始写入它了。