httpfs错误状态待机

时间:2017-04-11 08:10:27

标签: hadoop httpfs

我正在研究hadoop apache 2.7.1,我有一个由3个节点组成的集群

NN1
NN2
DN1

nn1是dfs.default.name,因此它是主名称节点。

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

http://nn1:14000/webhdfs/v1/aloosh/oula.txt?op=open&user.name=root

从我的浏览器和打开或保存此文件的对话框出现,但当我杀死在nn1上运行的名称节点并正常启动它然后由于高可用性nn1变为待机状态nn2变得活跃。

所以这里httpfs应该可以工作,即使nn1变为待命,但现在发送相同的请求

http://nn1:14000/webhdfs/v1/aloosh/oula.txt?op=open&user.name=root

给我错误

{"RemoteException":{"message":"Operation category READ is not supported in state standby","exception":"RemoteException","javaClassName":"org.apache.hadoop.ipc.RemoteException"}}

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

我的核心网站是

<property>
       <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
       </property>

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

1 个答案:

答案 0 :(得分:7)

看起来HttpFs尚未感知高可用性。这可能是由于客户端需要缺少与当前活动名称节点连接所需的配置。

确保fs.defaultFS中的core-site.xml媒体资源配置了正确的nameservice ID

如果您在hdfs-site.xml

中有以下内容
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

然后在core-site.xml中,它应该是

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

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

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

<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>            
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

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