Подтвердить что ты не робот

Ошибка HBase - назначение -ROOT-failure

Я только что установил hadoop и hbase из cloudera (3), но когда я попытаюсь перейти на http://localhost:60010, он просто сидит там постоянная загрузка.

Я могу получить доступ к областному серверу отлично - http://localhost:60030... Посмотрев на журналы сервера master hbase, я вижу следующее.

Похож на проблему с корневым регионом.

Все это устанавливается на раздел ext4 1TB, на котором запущен Ubuntu (Natty) 11. Нет кластеров/других блоков).

Любая помощь будет замечательной!

11/05/15 19:58:27 WARN master.AssignmentManager: Failed assignment of -ROOT-,,0.70236052 to serverName=localhost,60020,1305452402149, load=(requests=0, regions=0, usedHeap=24, maxHeap=995), trying to assign elsewhere instead; retry=0
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface to /127.0.0.1:60020 after attempts=1
    at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:355)
    at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:957)
    at org.apache.hadoop.hbase.master.ServerManager.getServerConnection(ServerManager.java:606)
    at org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:541)
    at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:901)
    at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:730)
    at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:710)
    at org.apache.hadoop.hbase.master.AssignmentManager$TimeoutMonitor.chore(AssignmentManager.java:1605)
    at org.apache.hadoop.hbase.Chore.run(Chore.java:66)
Caused by: java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
    at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
    at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)
    at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:328)
    at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:883)
    at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:750)
    at org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:257)
    at $Proxy6.getProtocolVersion(Unknown Source)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:419)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:393)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:444)
    at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:349)
    ... 8 more
11/05/15 19:58:27 WARN master.AssignmentManager: Unable to find a viable location to assign region -ROOT-,,0.70236052
4b9b3361

Ответ 1

Исправлена ​​ошибка для всех, кто это нашел. Возникла проблема с файлом хоста (/etc/hosts). Необходимо удалить записи, относящиеся к 127.0.1.1 COMPNAME - просто поместите хэш (#) перед этой строкой, а затем перезапустите все службы hadoop и hbase.

Подробнее о решении здесь: http://blog.nemccarthy.me/?p=110

Ответ 2

В соответствии с @Manav:

Если вы оказались в ситуации, когда вы не можете редактировать /etc/hosts, также будет работать следующее обходное решение:

в conf/hadoop-env.sh добавьте следующую строку:

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

Я использую Ubuntu 11.10 (Oneiric) и HBase 0.92.1. Эти шаги исправили мою проблему для установки моего сервера:

  • Отредактируйте /etc/hosts: измените IP-адрес, связанный с именем хоста, чтобы он использовал ваш IP-адрес локальной сети вместо 127.0.0.1
  • Открыть <HBASE_DIR>/conf/hbase-env.sh
  • изменить HBASE_OPTS, добавить -Djava.net.preferIPv4Stack=true. Строка должна выглядеть так:

    export HBASE_OPTS = "- XX: + UseConcMarkSweepGC -Djava.net.preferIPv4Stack = true"

  • Перезапустить HBase

Ответ 3

Если вы оказались в ситуации, когда вы не можете редактировать /etc/hosts, следующее обходной путь также будет работать:

в conf/hadoop-env.sh добавьте следующую строку:

export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

(удалено редактирование, перемещено как отдельный ответ)

Ответ 4

ваш файл hosts должен выглядеть следующим образом

#127.0.0.1  localhost
#127.0.1.1  ubuntu.ubuntu-domain    ubuntu
192.168.2.100   ubuntu
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Этот файл можно найти в файле /etc/hosts

Отношения Shuja

Ответ 5

Вот еще одна работа, которая работает для меня, если вы не хотите изменять /etc/hosts (поскольку Ubuntu помещает туда там по какой-либо причине).

Как этот пост объясняет, основная проблема заключается в том, что интерфейс loopback имеет несколько привязанных к нему IP-адресов, в то время как hbase предполагает, что будет только один, Полученное несоответствие заставляет хозяина думать, что сервер региона имеет один IP (127.0.0.1), когда он действительно прослушивает другое (127.0.1.1, IP привязан к объявленному FQDN хосту.)

Удаление записи /etc/hosts является одним из способов восстановления однофакторного подхода. Замена 127.0.1.1 в /etc/hosts на "реальный" постоянный IP - другой. Наконец, другим является создание нового интерфейса: отбросьте это в нижней части /etc/network/interfaces:

# Bind an interface solely for the default host FQDN IP, to fix reverse dns
auto eth0.1
iface eth0.1 inet static
pre-up ip link add eth0.1 name eth0.1 type bridge
address 127.0.1.1
netmask 255.255.255.0

Затем вы должны иметь возможность sudo ifup eth0.1 и видеть его в ifconfig. Перезапустите hbase, и вам должно быть хорошо идти.

Если вы уже используете eth0.1, выберите другой слот (т.е. eth0.2), это не имеет значения.

EDIT: @bcolyn использование lo:0 также работает для меня и является превосходным, поскольку loopback всегда будет доступен. В этом случае строка pre-up также не нужна.

Ответ 6

Трюк с subinterface работал у меня, но я использовал интерфейс loopback, а не eth0, потому что eth0 не всегда доступен на моей машине (внешний адаптер), и я хочу, чтобы он управлялся NetworkManager (который отказывается управлять eth0, если eth0. 1 определяется в /etc/network/interfaces на ubuntu 13.04)

Соответствующий фрагмент:

auto lo:0
iface lo:0 inet static
address 127.0.1.1
netmask 255.255.255.0

в дополнение к регулярному

auto lo
iface lo inet loopback  

конечно

Ответ 7

В вашем файле hosts для изменения адреса хоста от 127.0.1.1 до 127.0.0.1