为 phoenix 映射 hbase 端口

Mapping hbase ports for phoenix

我正在尝试使用独立的 hbase 和 phoenix 创建一个 docker 图像。为了连接到凤凰,它说我需要映射所有区域服务器端口。但是他们 运行 在不同的 ip 上。在 /etc/hosts.

中使用本地 DNS
<property>
 <name>hbase.regionserver.ipc.address</name>
 <value>0.0.0.0</value>
</property>

这有帮助,但 localhost:16010 中的所有链接仍然通过具有不同 ip 的 /etc/hosts。而且端口每次都在变化。

bash-5.0# netstat -lntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:2181            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:16010           0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:34319           0.0.0.0:*               LISTEN
tcp        0      0 172.17.0.2:40207        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:37433           0.0.0.0:*               LISTEN
bash-5.0# cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  8474f280b183

根据 localhost:16010 区域服务器在 34319 上用于特定容器。有没有办法修复所有端口并将它们映射到容器外部,或者我如何从容器外部连接到 phoenix?

bash-5.0# hbase version
HBase 1.3.6
Source code repository git://Sakthis-MacBook-Pro-2.local/Users/sakthi/dev/hbase revision=806dc3625c96fe2cfc03048f3c54a0b38bc9e984
Compiled by sakthi on Tue Oct 15 01:55:41 PDT 2019
From source with checksum d587feefff2057a2e5001da5db4a6fac

显然独立模式的实现不能有固定的端口。使用伪分布式模式但不使用 HDFS 似乎可以解决这个问题。

<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>

然后手动启动3个守护进程

CMD hbase-daemon.sh start zookeeper    && \
    hbase-daemon.sh start regionserver && \
    hbase-daemon.sh foreground_start master

此外,添加这 2 个属性可以解决 /etc/hosts

的问题
<property>
  <name>hbase.master.hostname</name>
  <value>localhost</value>
</property>
<property>
  <name>hbase.regionserver.hostname</name>
  <value>localhost</value>
</property>

P.S。仍然无法连接到 phoenix,但这似乎是一个完全不同的问题。

P.S。其实是有关系的。还需要加上

<property>
  <name>hbase.master.ipc.address</name>
  <value>0.0.0.0</value>
</property>
<property>
  <name>hbase.regionserver.ipc.address</name>
  <value>0.0.0.0</value>
</property>