HttpFs 受益于高可用性和名称服务
HttpFs benefit over high availability and nameservice
我在由三个节点组成的集群上使用 Apache Hadoop-2.7.1
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
2- nn1 中的名称节点守护进程被终止,因此根据高可用性,nn1 处于备用状态,而 nn2 处于活动状态
所以我们现在可以通过将此 Web 请求发送到 nn2 来获取 myfile,因为它现在处于活动状态
http://nn2/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
因此配置具有高可用性的名称服务足以应对名称节点故障和 webhdfs 正常工作
那么这里添加httpfs有什么好处
因为不支持高可用性的webhdfs,我们必须配置
httpfs
我知道这是对你之前的问题 的跟进。
WebHDFS
和 HttpFs
是两个不同的东西。 WebHDFS 是 Namenode 的一部分,它是处理 WebHDFS
API 调用的 NN,而 HttpFs 是一个单独的独立于名称节点的服务,HttpFs
服务器处理 API 调用。
what is the benefit of adding httpfs
无论哪个 NN 处于活动状态,您的 REST API 调用都将保持不变。 HttpFs
,作为 HA 感知,会将请求定向到当前活动的 NN。
让我们假设 HttpFs
服务器在 nn1
中启动。
WebHDFSGET
请求
curl http://nn1:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
这由 nn1
中的 Namenode 守护进程 运行 提供服务。
场景 1: nn1
处于活动状态。该请求将得到有效响应作为奖励。
场景 2: nn2
处于活动状态。由于 nn1
中没有 Active NN 运行,因此发出相同的请求将失败。
因此,必须修改 REST 调用以请求 nn2
curl http://nn2:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
现在,这将由 nn2
中的 NN 守护进程 运行 提供服务。
HttpFsGET
请求
curl http://nn1:14000/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
此请求由 nn1
中的 HttpFs
服务 运行 提供服务。
场景 1: nn1
处于活动状态。 HttpFs
nn1
中的服务器 运行 会将请求定向到当前的活动名称节点 nn1
。
场景 2: nn2
处于活动状态。 HttpFs
nn1
中的服务器 运行 会将请求定向到当前的活动名称节点 nn2
。
在这两种情况下,REST 调用是相同的。如果 HttpFs
服务器关闭,请求将失败。
configuring name service with high availability is enough for name
node failure and for webhdfs to work fine
nameservice
是给Namenode对的逻辑名称。此 nameservice
不是实际主机,不能用 REST API 调用中的主机参数替换。
我在由三个节点组成的集群上使用 Apache Hadoop-2.7.1
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
2- nn1 中的名称节点守护进程被终止,因此根据高可用性,nn1 处于备用状态,而 nn2 处于活动状态 所以我们现在可以通过将此 Web 请求发送到 nn2 来获取 myfile,因为它现在处于活动状态
http://nn2/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
因此配置具有高可用性的名称服务足以应对名称节点故障和 webhdfs 正常工作
那么这里添加httpfs有什么好处 因为不支持高可用性的webhdfs,我们必须配置 httpfs
我知道这是对你之前的问题
WebHDFS
和 HttpFs
是两个不同的东西。 WebHDFS 是 Namenode 的一部分,它是处理 WebHDFS
API 调用的 NN,而 HttpFs 是一个单独的独立于名称节点的服务,HttpFs
服务器处理 API 调用。
what is the benefit of adding httpfs
无论哪个 NN 处于活动状态,您的 REST API 调用都将保持不变。 HttpFs
,作为 HA 感知,会将请求定向到当前活动的 NN。
让我们假设 HttpFs
服务器在 nn1
中启动。
WebHDFSGET
请求
curl http://nn1:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
这由 nn1
中的 Namenode 守护进程 运行 提供服务。
场景 1: nn1
处于活动状态。该请求将得到有效响应作为奖励。
场景 2: nn2
处于活动状态。由于 nn1
中没有 Active NN 运行,因此发出相同的请求将失败。
因此,必须修改 REST 调用以请求 nn2
curl http://nn2:50070/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
现在,这将由 nn2
中的 NN 守护进程 运行 提供服务。
HttpFsGET
请求
curl http://nn1:14000/webhdfs/v1/hadoophome/myfile/?user.name=root&op=OPEN
此请求由 nn1
中的 HttpFs
服务 运行 提供服务。
场景 1: nn1
处于活动状态。 HttpFs
nn1
中的服务器 运行 会将请求定向到当前的活动名称节点 nn1
。
场景 2: nn2
处于活动状态。 HttpFs
nn1
中的服务器 运行 会将请求定向到当前的活动名称节点 nn2
。
在这两种情况下,REST 调用是相同的。如果 HttpFs
服务器关闭,请求将失败。
configuring name service with high availability is enough for name node failure and for webhdfs to work fine
nameservice
是给Namenode对的逻辑名称。此 nameservice
不是实际主机,不能用 REST API 调用中的主机参数替换。