【问题标题】:How to specify RPC server port for hbase?如何为 hbase 指定 RPC 服务器端口?
【发布时间】:2017-04-21 19:19:14
【问题描述】:

我在 docker 容器中启动 hbase,并希望客户端代码能够连接到 hbase rpc 服务器端口。问题是:它总是不同的(从临时端口范围中随机选择)。

查看 hbase 代码(https://github.com/apache/hbase/blob/9facfa550f1e7386be3a04d84f7e8013f5002965/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java,第 1078 行的 bindAddress)我发现我可以通过设置“hbase.regionserver.port”或“hbase.master.port”来覆盖端口”。

我尝试在 hbase-conf.xml 中设置这些,但没有任何效果 - 端口仍然是随机的,好像这些属性被解析为 0。

我该如何改变?

【问题讨论】:

  • 默认情况下,它们分别是 1600016020 用于 master 和 regionserver。是什么让您认为它们是随机选择的?
  • hbase 日志:ipc.RpcServer: master/localhost/127.0.0.1:0: started 10 reader(s) listening on port=40897 在这种情况下,它是端口40897,但每次都不同。它可能由其他一些属性控制,但从源代码中我指定它应该查看 hbase.regionserver.port,对吗?

标签: hbase


【解决方案1】:

找到了解决办法。默认情况下,Hbase 以独立模式启动,端口是随机选择的。因此,在阅读了doc 之后,我将 hbase-site.xml 编辑为如下所示:

<configuration>
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>
<property>
    <name>hbase.regionserver.ipc.address</name>
    <value>0.0.0.0</value>
</property>
<property>
    <name>hbase.master.ipc.address</name>
    <value>0.0.0.0</value>
</property>

请注意,我让它在 分布式模式 下运行(在我的例子中是伪分布式)并将主服务器和区域服务器的 ipc 监听地址设置为 0.0.0.0(否则你仍然可以' t 从 docker 容器外部连接)。在这些更改之后,端口变得稳定,所以一切都很好。

附加说明:切换到分布式模式后,我必须在 hbase-env.sh 中专门设置 JAVA_HOME。这可以在文档中找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-06
    • 2022-12-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2019-03-30
    • 1970-01-01
    • 2013-04-08
    相关资源
    最近更新 更多