Странный DNS-сервер приводит к сбоям Hadoop и HBase - PullRequest
1 голос
/ 29 октября 2011

У меня есть сеть с каким-то странным (как я понимаю) DNS-сервером, который вызывает сбои в работе Hadoop или HBase.

Это разрешает мое имя хоста по некоторому адресу, о котором моя машина не знает (т.е. такого интерфейса нет).

Hadoop работает, если у меня есть следующие записи в / etc / hosts:

127.0.0.1     localhost
127.0.1.1     myhostname

Если запись "127.0.1.1 myhostname" отсутствует, загрузка файла в HDFS завершается неудачно и жалуется, что он может реплицировать файл только на 0 датододов вместо 1.

Но в этом случае HBase не работает: создание таблицы из оболочки HBase вызывает исключение NotAllMetaRegionsOnlineException (фактически вызванное попыткой HMaster связать неправильный адрес, возвращенный сервером DNS для myhostname).

В другой сети я использую следующий файл / etc / hosts:

127.0.0.1   localhost
192.168.1.1 myhostname

И Hadoop, и HBase работают. Проблема в том, что во второй сети адрес является динамическим, и я не могу перечислить его в / etc / hosts для переопределения результата, возвращаемого странным DNS.

Hadoop запускается в псевдораспределенном режиме. HBase также работает на одном узле.

Изменение поведения DNS-сервера недоступно. Изменение "localhost" на 127.0.0.1 в hbase / conf / regionservers ничего не меняет.

Может кто-нибудь предложить способ, как я могу переопределить его поведение при сохранении подключения к интернету (на самом деле я работаю на компьютере клиента через Teamviewer). Или каким-то образом настроить HBase (или Zookeeper, которым он управляет), чтобы не использовать имя хоста для определения адреса для привязки?

Ответы [ 2 ]

5 голосов
/ 30 октября 2011

К счастью, я нашел решение этой проблемы с DNS-сервером.

DNS-сервер вернул неверный адрес при запросе по локальному имени хоста.HBase по умолчанию выполняет обратный поиск DNS по локальному имени хоста, чтобы определить, куда его привязать.Поскольку адрес, возвращаемый DNS-сервером, был неверным, HMaster не смог связать.

Обходной путь: В hbase / conf / hbase-site.xml явно укажите интерфейсы, которые будут использоваться для master и regionserver:

<configuration>
  <property>
    <name>hbase.master.dns.interface</name>
    <value>lo</value>
  </property>
  <property>
    <name>hbase.regionserver.dns.interface</name>
    <value>lo</value>
  </property>
</configuration>

В этом случае я указал петлевой интерфейс (lo), который будет использоваться как для главного, так и для регионального сервера.

1 голос
/ 26 июля 2012

простой инструмент, который я написал для проверки проблем с DNS: https://github.com/sujee/hadoop-dns-checker

...