我在由三个节点组成的集群上使用apachehadoop-2.7.1
nn1 master name node
nn2 (second name node)
dn1 (data node)
我们知道如果我们在这个集群中配置高可用性
我们将有两个主要节点,一个是活动的,另一个是备用的
如果我们也将集群配置为通过名称服务调用,那么下面的场景就可以了
情况是:
1-nn1激活,nn2备用
所以,如果我们想从dn1获取文件(称为myfile),我们可以从浏览器发送这个url(webhdfs请求)
http://nn1/webhdfs/v1/hadoophome/myfile/?user.name=root&op=open
nn1中的2-name节点守护进程被终止,因此根据高可用性,nn1处于备用状态,而nn2处于活动状态,因此我们可以通过将此web请求发送到nn2来获取myfile,因为它现在处于活动状态
http://nn2/webhdfs/v1/hadoophome/myfile/?user.name=root&op=open
因此,配置具有高可用性的名称服务就足够让名称节点失败,让webhdfs正常工作
那么在这里添加httpfs有什么好处呢?因为不支持高可用性的webhdfs,我们必须配置httpfs
1条答案
按热度按时间fiei3ece1#
我知道这是你之前问题的后续。
WebHDFS
以及HttpFs
是两件不同的事。webhdfs是namenode的一部分,它是处理WebHDFS
api调用,而httpfs是独立于namenodes和HttpFs
服务器处理api调用。添加httpfs有什么好处
不管哪个nn处于活动状态,restapi调用都将保持不变。
HttpFs
具有ha感知,将请求定向到当前活动nn。让我们假设
HttpFs
服务器在中启动nn1
.webhdfs
GET
请求这由运行在中的namenode守护程序提供服务
nn1
.场景1:
nn1
已激活。请求将得到有效响应。场景2:
nn2
已激活。发出相同的请求将失败,因为没有正在运行的活动nnnn1
.因此,必须修改rest调用以请求
nn2
```curl http://nn2:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
curl http://nn1:14000/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN