首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >状态待机不支持httpfs错误操作类别读取

状态待机不支持httpfs错误操作类别读取
EN

Stack Overflow用户
提问于 2017-04-11 08:10:27
回答 1查看 29.8K关注 0票数 10

我正在使用HadoopApache2.7.1,我有一个由3个节点组成的集群

nn1

nn2

dn1

nn1是dfs.default.name,所以它是主名称节点。

我已经安装了httpfs,当然是在重新启动所有服务之后启动它。当nn1处于活动状态且nn2处于待机状态时,我可以发送此请求

代码语言:javascript
复制
http://nn1:14000/webhdfs/v1/aloosh/oula.txt?op=open&user.name=root

在我的浏览器中,会出现一个打开或保存此文件的对话框,但是当我杀死运行在nn1上的名称节点并正常地再次启动它时,由于高可用性,nn1变为备用,nn2变为活动。

所以这里httpfs应该可以工作,即使nn1成为备用,但是现在发送相同的请求。

代码语言:javascript
复制
http://nn1:14000/webhdfs/v1/aloosh/oula.txt?op=open&user.name=root

给了我错误

代码语言:javascript
复制
{"RemoteException":{"message":"Operation category READ is not supported in state standby","exception":"RemoteException","javaClassName":"org.apache.hadoop.ipc.RemoteException"}}

httpfs不应该克服nn1的待机状态并带来文件吗?这是因为配置错误,还是有其他原因?

我的core-site.xml

代码语言:javascript
复制
<property>
       <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
       </property>

        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-11 18:51:29

看起来HttpFs还没有意识到高可用性。这可能是由于客户端连接当前活动Namenode所需的配置缺失。

确保使用正确的fs.defaultFS配置core-site.xml中的nameservice ID属性。

如果您在hdfs-site.xml中有以下内容

代码语言:javascript
复制
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

那么在core-site.xml中,应该是

代码语言:javascript
复制
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

此外,还配置DFS客户端将使用的Java类的名称,以确定哪个NameNode是当前活动的,并正在为客户端请求提供服务。

将此属性添加到hdfs-site.xml

代码语言:javascript
复制
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>            
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

在添加所有节点中的属性后,重新启动Namenodes和HttpFs。

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

https://stackoverflow.com/questions/43340226

复制
相关文章

相似问题

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