首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpFs受益于高可用性和名称服务。

HttpFs受益于高可用性和名称服务。
EN

Stack Overflow用户
提问于 2017-04-12 08:01:22
回答 1查看 965关注 0票数 1

我在由三个节点组成的集群上使用Apache 2.7.1

代码语言:javascript
复制
nn1 master name node 
nn2 (second name node)   
dn1 (data node)

我们知道,如果我们在这个集群中配置高可用性

我们将有两个主要节点,一个是活动的,另一个是备用的。

如果我们也将集群配置为按名称调用服务,那么下面的场景就可以了

设想如下:

1- nn1处于活动状态,nn2处于待命状态。

因此,如果我们想从dn1获得文件(称为myfile),我们可以通过浏览器(webhdfs请求)发送这个url。

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

nn1中的2名节点守护进程被杀死,因此根据高可用性,nn1是备用的,nn2是活动的,所以我们现在可以通过将这个web请求发送给nn2来获取它,因为它现在是活动的。

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

因此,配置高可用性的名称服务就足以解决名称节点故障,并使webhdfs能够很好地工作。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-12 09:03:46

据我所知,这是你之前的问题here的后续。

WebHDFSHttpFs是两种不同的东西。WebHDFS是Namenode的一部分,处理WebHDFS API调用的是NN,而HttpFs是一个独立于Namenodes的独立服务,HttpFs服务器处理WebHDFS调用。

添加httpfs的好处是什么?

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

假设HttpFs服务器是在nn1中启动的。

WebHDFS GET请求

代码语言:javascript
复制
curl http://nn1:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN

这是由在nn1中运行的Namenode守护进程提供的。

场景1: nn1处于活动状态。该请求将得到有效的答复。

场景2: nn2处于活动状态。发出相同的请求将失败,因为在nn1中没有运行活动NN。

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

代码语言:javascript
复制
curl http://nn2:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN

现在,这将由在nn2中运行的NN守护进程提供。

HttpFs GET请求

代码语言:javascript
复制
curl http://nn1:14000/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN

此请求由运行在HttpFs中的nn1服务提供。

场景1: nn1处于活动状态。运行在HttpFs中的nn1服务器将将请求定向到当前活动的Namenode nn1

场景2: nn2处于活动状态。运行在HttpFs中的nn1服务器将将请求定向到当前活动的Namenode nn2

在这两种情况下,其余调用都是相同的。如果HttpFs服务器关机,请求将失败。

配置高可用性的名称服务足以导致名称节点失败,并使webhdfs能够正常工作。

nameservice是给这对Namenodes命名的逻辑名称。此nameservice不是实际的主机,不能在REST调用中用Host参数替换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43363683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档