据我所知,在hadoop中存储块和副本的过程是由blockplacementpolicy函数或进程执行的,但这是用于初始存储过程(数据第一次存储在hdfs系统上)。我感兴趣的是哪个进程或java函数负责在磁盘或datanode发生故障后恢复(通过恢复我指的是解决复制不足的问题)数据。我的想法是改变负责的职能,根据我的需要工作,这意味着要保持副本的数量,并将新的副本(恢复的副本)存储在我感兴趣的磁盘上。
据我所知,在hadoop中存储块和副本的过程是由blockplacementpolicy函数或进程执行的,但这是用于初始存储过程(数据第一次存储在hdfs系统上)。我感兴趣的是哪个进程或java函数负责在磁盘或datanode发生故障后恢复(通过恢复我指的是解决复制不足的问题)数据。我的想法是改变负责的职能,根据我的需要工作,这意味着要保持副本的数量,并将新的副本(恢复的副本)存储在我感兴趣的磁盘上。
1条答案
按热度按时间bq3bfh9z1#
当一个节点发生故障时,存储在该节点上的块将不再被视为可用于hdfs。通过查看节点发生故障或被禁用时未充分复制的块的数量,可以很容易地看到这一点。
一般来说,系统会在出现复制不足(以及容量可用时)时尝试解决复制不足问题。所以基本上你想要构建的解决方案应该已经准备好了。
注意:hadoop不尝试从断开的节点恢复数据,而只是基于未断开的节点复制相关的块。