2017-02-23 17 views
0

У меня есть два компонента: hbas&ookeeper as single container и hbase-printer (мой код Java) на моем хосте. Моя цель - распечатать содержимое некоторой таблицы hbase. Проблема в том, что соединение с 2181 (порт zookeeper) преуспевает, но похоже, что я получаю направленный на случайный случайный порт для связи, и этот порт не отображается. Я использую docker-compose.yml:Управление сетью/портами для докеры

version: '2' 
services: 
    hbase: 
    image: dy1-dockerv2-local.jfrog.io/hbase:latest 
    restart: always 
    hostname: hbase-docker 
    ports: 
     - "60010:60010" 
     - "60000:60000" 
     - "60020:60020" 
     - "60030:60030" 
     - "9095:9095" 
     - "8085:8085" 
     - "8080:8080" 
     - "2181:2181" 
     - "9091:9091" 
     - "9090:9090" 
    expose: 
     - "9091" 
     - "2181" 
    volumes: 
     - ./data/hbase:/data 
     - ./logs/hbase/:/opt/hbase/logs 
    network_mode: "bridge" 

В моих журналах ява я получаю:

23-02-2017 09:29:54,413 INFO [ClientCnxn]: [main-SendThread(localhost:2181)] Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x15a69d8a7a30006, negotiated timeout = 40000 
23-02-2017 09:30:16,955 INFO [HBaseRPC]: [main] Problem connecting to server: hbase-docker/172.17.0.2:39521 

В моем хозяине я могу видеть прослушивания портов:

$ netstat -na | grep LISTEN 
tcp6  0  0 ::1.2181    *.*     LISTEN 
tcp4  0  0 *.2181     *.*     LISTEN 
tcp6  0  0 ::1.8080    *.*     LISTEN 
tcp4  0  0 *.8080     *.*     LISTEN 
tcp6  0  0 ::1.8085    *.*     LISTEN 
tcp4  0  0 *.8085     *.*      

(и остальная часть портов, которые я определил в своем docker-compose.yml файле

И в контейнере I см.:

[email protected]:/# netstat -na | grep LISTEN 
tcp6  0  0 172.17.0.2:39521  :::*     LISTEN 
tcp6  0  0 :::2181     :::*     LISTEN 
tcp6  0  0 :::60010    :::*     LISTEN 
tcp6  0  0 172.17.0.2:32785  :::*     LISTEN 
tcp6  0  0 :::43189    :::*     LISTEN 

Я вижу, что боковой порт 39521 доступен внутри контейнера, но не подвергается воздействию хоста. Я не могу добавить его в свой docker-compose.yml, потому что он изменился случайным образом (выглядит как-то между 30000-50000). Как я могу открыть случайный порт для моего хоста?

+0

Вы можете проверить версию hbase, установленную в контейнере/изображении? –

+0

@AlexanderBlock 0.94.26 - Я знаю, что это старый, но это тот, который я использую в производстве (не докционированный) – ItayB

ответ

0

Вы больше всего столкнулись лицом https://issues.apache.org/jira/browse/HBASE-10289, который был исправлен в 0.99.0 и 0.98.4. По отзывам ответа, вы все еще находитесь на старой версии hbase, возможно, < 0.99.0.

Вам следует попытаться использовать более новую версию hbase. Например, вы найдете его на Docker Hub: https://hub.docker.com/r/dajobe/hbase/

+0

Что такое JMX MBean? вы уверены, что эта проблема связана? Я использую упомянутый вами докер (dajobe/hbase) - посмотрите на мою ссылку в начале .. но я использую более раннюю версию (более ранняя фиксация) – ItayB

+0

Какая фиксация именно вы использовали? Я вижу, что вы используете изображение из dy1-'dockerv2-local.jfrog.io/hbase: latest', это ваше самонастраивающееся изображение? –

+0

Да, но это основано на их репо: commit '8fdd3fb09891b09140cdc2bfc27222617ab2cded' – ItayB

Смежные вопросы