1

我有 hadoop 集群和 hadoop 版本 apache 2.7.1

高可用,由五个节点组成

mn1 ,mn2 ,dn1,dn2,dn3

如果我们从浏览器访问 wbhdfs 以打开名为 myfile 的文件,该文件具有复制因子 = 3 并在 dn1、dn2 和 dn3 上退出

我们从浏览器发出以下命令

http://mn1:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN 

所以 mn1 将此请求重定向到 dn1 或 dn2 或 dn3 并且我们得到文件

我们也可以通过以下命令从 hadoop 获取文件

hdfs dfs -cat /hadoophome/myfile 

但在数据节点故障的情况下(假设 dn1 和 dn3 现在已关闭)

如果我们发出命令

hdfs dfs -cat /hadoophome/myfile 

我们可以检索文件

但是如果我们从浏览器发出 webhdfs 命令,这就是我的状态

http://mn1:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN 

mn1 会将请求重定向到已死的 dn1 或 dn3,有时它将请求重定向到 dn2,我可以检索文件

mn1 不应该只将 webhdfs 请求重定向到活动数据节点应该如何处理这个错误应该从应用程序处理?

4

1 回答 1

0

编辑 hdfs-site.xml

<property>
    <name>dfs.namenode.heartbeat.recheck-interval</name>
    <value>10000</value>
</property>

此属性以毫秒为单位

你会得到50秒的超时

因为 heartbeat.interval 的默认值为 3 秒

和超时将数据节点视为已死

 2 * heartbeat.recheck.interval + 10 * heartbeat.interval

所以超时= 2 * (10 秒) + 10 * 3 秒 = 50 秒

于 2017-05-17T13:41:03.360 回答