如何强制同步hdfs复制?

yfjy0ee7  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(360)

我编写了一个简单的程序,将数据放入hdfs。我通过配置对象将dfs.replication设置为3,并针对伪分布式hdfs集群运行这个程序。我希望得到一个异常,因为复制因子是3,并且只有一个datanode;但是程序成功地完成了它的执行。
这是一种理解我的数据处于未复制状态的方法吗?我认为这与dfs.replication.min有关,但当我将它也更改为3(在program configuration对象中)时,写入仍然成功,并且没有出现任何异常。

whlutmcx

whlutmcx1#

如果要强制同步hdfs复制,请使用以下命令。hadoop-setrep[-r][-w]:设置文件的复制级别,-r标志请求递归更改整个树的复制级别。

3b6akqbq

3b6akqbq2#

我做了一些测试,找出了原因。
首先,创建文件时,其复制因子必须大于或等于dfs.replication.min。hdfs提供到dfs.replication.min节点的复制是同步的,到其余节点(dfs.replication-dfs.replication.min)的复制是异步处理的。
因为dfs.replication.min的默认设置是1,所以我成功地将dfs.replication=3的文件写入了一个节点的hdfs集群。
默认复制因子(dfs.replication)设置为3,但可以通过配置对象更改每个请求。遗憾的是,您不能更改每个请求的dfs.replication.min,因此如果将其设置为lower layer,则无法提高可靠性。

相关问题