2017-02-23 103 views
0

我有兩個組成部分:hbas&ookeeper as single container和我的主機HBase的打印機(我的Java代碼)。我的目標是打印一些hbase表格的內容。 問題是,連接到2181(動物園管理員端口)成功,但它看起來像我被引導到端隨機端口進行通信和此端口不公開。 我使用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" 

在我的Java日誌中我得到:

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文件

和容器中,我定義請參閱:

[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的較新版本。你會發現一個在泊塢樞紐例如:https://hub.docker.com/r/dajobe/hbase/

+0

什麼是JMX MBean?你確定這個問題是相關的嗎?我正在使用你提到的docker(dajobe/hbase) - 在開始的時候看看我的鏈接..但是我使用的是早期版本(之前的提交) – ItayB

+0

你使用了哪個提交?我看到你使用了dy1-'dockerv2-local.jfrog.io/hbase:latest'的圖像,這是你的自建圖像嗎? –

+0

是的,但根據他們的回購協議:承諾'8fdd3fb09891b09140cdc2bfc27222617ab2cded' – ItayB