我编写了一个简单的程序,将数据放入 HDFS。我通过配置对象将 dfs.replication 设置为 3,并针对伪分布式 hdfs 集群运行该程序。我预计会出现异常,因为复制因子为 3 并且只有一个数据节点;但程序成功完成了执行。
这是一种了解我的数据处于复制不足状态的方法吗?我认为这与 dfs.replication.min 有关,但是当我也将其更改为 3(在程序配置对象中)时,写入仍然成功,并且我没有收到任何异常。
我已经完成了一些测试并找出了原因。
首先,当您创建文件时,其复制因子必须高于或等于 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 ,因此如果将其设置为较低层,则无法提高可靠性。
| 归档时间: |
|
| 查看次数: |
3959 次 |
| 最近记录: |