Hadoop HA Namenode удаленного доступа

Я настраиваю стабильный выпуск Hadoop 2.2.0 с помощью HA namenode, но я не знаю, как настроить удаленный доступ к кластеру.

У меня есть HA namenode, настроенный с аварийным переключением вручную, и я определил dfs.nameservices и я могу получить доступ к hdfs с помощью nameservice со всех узлов, входящих в кластер, но не извне.

Я могу выполнять операции с hdfs, напрямую связываясь с активным namenode, но я не хочу этого, я хочу связаться с кластером и затем быть перенаправлен на активный namenode. Я думаю, что это нормальная конфигурация для кластера высокой доступности.

Кто-нибудь сейчас как это сделать?

(заранее спасибо...)

4 ответа

Решение

Вам нужно связаться с одним из узлов Name (как вы это делаете в настоящее время) - нет кластерного узла для контакта.

Клиентский код hadoop знает адрес двух namenodes (в core-site.xml) и может идентифицировать, кто является активным, а какой - резервным. Возможно, существует способ опроса узла зоопарка в кворуме для определения активного / резервного (возможно, я не уверен), но вы также можете проверить один из наменодов - у вас есть шанс 50/50, что это активный.

Я должен был бы проверить, но вы могли бы запросить либо, если вы просто читаете из HDFS.

Вы должны добавить больше значений на сайт hdfs:

<property>
    <name>dfs.ha.namenodes.myns</name>
    <value>machine-98,machine-99</value>
</property>

<property>
    <name>dfs.namenode.rpc-address.myns.machine-98</name>
    <value>machine-98:8100</value>
</property>

<property>
    <name>dfs.namenode.rpc-address.myns.machine-99</name>
    <value>machine-145:8100</value>
</property>

<property>
    <name>dfs.namenode.http-address.myns.machine-98</name>
    <value>machine-98:50070</value>
</property>

<property>
    <name>dfs.namenode.http-address.myns.machine-99</name>
    <value>machine-145:50070</value>
</property>

Для узла Active Name вы всегда можете спросить Zookeeper. Вы можете получить активное имя узла из приведенного ниже пути Zk.

/hadoop-ha/namenodelogicalname/ActiveStandbyElectorLock 

Есть два способа разрешить эту ситуацию (код с Java)

  1. используйте core-site.xml и hdfs-site.xml в своем коде

    загрузить conf через addResource

  2. используйте conf.set в своем коде

    установить hadoop conf через conf.set

    пример использования conf.set

Другие вопросы по тегам