我在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一样。
如何更改?
答案 0 :(得分:1)
找到解决方案。默认情况下,Hbase以独立模式启动,并随机选择端口。所以在阅读doc之后,我编辑了hbase-site.xml,如下所示:
switch (action.type) {
case LOGIN:{
console.log('excute login operator ......',);
return AppNavigator.router.getStateForAction(NavigationActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'Main'})
]
}), state);
}
case LOGOUT:
console.log('excute logout operator ......');
return initialNavState;
default:
return initialNavState;
}
}
请注意,我正在以分布式模式(在我的情况下为伪分布)运行,并为主服务器和区域服务器设置ipc listen地址为0.0.0.0(否则你仍然可以' t从docker容器外部连接)。在这些变化之后,端口变得稳定,所以一切都很好。
附加说明:切换到分布式模式后,我必须在hbase-env.sh中专门设置JAVA_HOME。这可以在文档中找到。