Ошибка HBASE-ZOOKEEPER: слишком много соединений - PullRequest
5 голосов
/ 09 февраля 2012

Я использую комбинацию Hbase-Hadoop для своего приложения вместе с Data Nucleus в качестве ORM.

Когда я пытаюсь получить доступ к hbase через несколько потоков одновременно.Он генерирует исключения как:

Exception in thread "Thread-26" javax.jdo.JDODataStoreException

org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connect to ZooKeeper but the connection closes immediately. This could be a sign that the server has too many connections (30 is the default). Consider inspecting your ZK server logs for that error and then make sure you are reusing HBaseConfiguration as often as you can. See HTable's javadoc for more information.

Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase

При необходимости я могу предоставить полную трассировку стека. (Так как полная трассировка стека делает здесь беспорядок).

Пожалуйста, помогите мне с некоторыми выводамио том, как справиться с такой ситуацией.Нужна ли какая-либо конфигурация для увеличения пула соединений?

Ответы [ 3 ]

8 голосов
/ 11 февраля 2012

Серверы Zookeeper имеют ограничение активных подключений, которое по умолчанию составляет 30. Вам нужно увеличить этот лимит, установив свойство maxClientCnxns соответствующим образом в файле конфигурации zookeeper, zoo.cfg.

Для 100 соединений:

maxClientCnxns=100

Чтобы запретить zookeeper вводить неограниченное количество соединений:

maxClientCnxns=0
1 голос
/ 06 декабря 2018

Я не предлагаю слепо сбрасывать максимальное соединение, этот конфиг - не максимальное количество подключений к ZK, а максимальное число одновременных подключений на клиента к ZK, согласно документу ZK:

maxClientCnxns (нет системного свойства Java)

Ограничивает количество одновременных подключений (на уровне сокета), которые один клиент, идентифицируемый по IP-адресу, может сделать одного участника ансамбля ZooKeeper. Это используется для предотвращения определенных классов DoS-атаки, включая исчерпание файлового дескриптора. Установка этого в 0 или полное его исключение снимает ограничение на одновременные соединения.

следовательно, вы должны иметь более 30 одновременных подключений к ZK с одного IP-адреса. в этом случае используйте netstat для отладки того, что это за IP, и проверьте, что может инициировать эти многочисленные соединения одновременно.

0 голосов
/ 01 января 2018

Для решения вышеуказанной проблемы вам необходимо перезапустить мастер-сервис HBase.Команда для этого же:

sudo /etc/init.d/hadoop-hbase-master start

, это необходимо сделать перед входом в оболочку HBase.

...