HttpF受益于高可用性和名称服务

时间:2017-04-12 08:01:22

标签: hadoop webhdfs httpfs

我在由三个节点组成的集群上使用Apache Hadoop-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-名称节点守护程序被终止,因此根据高可用性,nn1处于待机状态,nn2处于活动状态 所以我们现在可以通过将此Web请求发送到nn2来获取myfile,因为它现在处于活动状态

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

因此,配置具有高可用性的名称服务足以使名称节点失败,并且webhdfs可以正常工作

那么在这里添加httpfs有什么好处 因为不支持具有高可用性的webhdfs,我们必须进行配置 httpfs

1 个答案:

答案 0 :(得分:1)

我了解这是对您上一个问题的跟进here

WebHDFS HttpFs 是两回事。 WebHDFS 是Namenode的一部分,它是处理WebHDFS API调用的NN,而 HttpF 是独立于Namenodes和{{1}的独立服务服务器处理API调用。

  

添加httpfs

有什么好处

无论哪个NN处于活动状态,您的REST API调用都将保持不变。知道HA的HttpFs会将请求定向到当前的活动NN。

我们假设HttpFs服务器已在HttpFs启动。

WebHDFS nn1请求

GET

这是由curl http://nn1:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN 中运行的Namenode守护程序提供的。
场景1: nn1处于有效状态。该请求将得到有效的回复。
方案2: nn1处于有效状态。由于nn2中没有运行Active NN,因此发出相同的请求将失败。

因此,必须修改REST调用以请求nn1

nn2

现在,这将由curl http://nn2:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN 中运行的NN守护程序提供。

HttpFs nn2请求

GET

此请求由curl http://nn1:14000/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN 中运行的HttpFs服务提供 场景1: nn1处于有效状态。 nn1中运行的HttpFs服务器会将请求定向到当前的活动名称节点nn1方案2: nn1处于有效状态。 nn2中运行的HttpFs服务器会将请求定向到当前的活动名称节点nn1

在这两种情况下,REST调用都是相同的。如果nn2服务器关闭,请求将失败。

  

配置具有高可用性的名称服务对于名称来说已足够   节点故障和webhdfs正常工作

HttpFs是赋予Namenodes对的逻辑名称。此nameservice不是实际的主机,不能用REST API调用中的Host参数替换。