2017-04-20 3 views
0

私はドッカーコンテナの中でhbaseを起動しており、クライアントコードをhbase rpc server portに接続できるようにします。問題は:それは常に異なっています(エフェメラルポートの範囲からランダムに選択されます)。 HBaseのコードを通じて探しhbaseのRPCサーバーポートを指定する方法は?

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" を設定することにより、ポートを無効にすることができていることがわかります。これらのプロパティは、私はそれを変更するにはどうすればよい0

に解決されたかのようにポートがまだランダムである -

は、私は何の影響もHBaseの-conf.xmlではなくせずにこれらを設定しようとしましたか?

+0

デフォルトでは、マスターとリージョンサーバーの「16000」と「16020」です。あなたはランダムに選択されると思いますか? – franklinsijo

+0

hbaseログ: '' ipc.RpcServer:master/localhost/127.0.0.1:0:10人の読者がポートをlistenする= 40897' この場合、ポートは '40897'ですが、毎回異なります。それは他のいくつかのプロパティによって制御されるかもしれませんが、私が指定したソースコードから、** hbase.regionserver.port **を見なければなりませんか? – Art

答えて

0

解決策が見つかりました。デフォルトでは、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> 

お知らせ)、masterとregionserverの両方でipcリスンアドレスを0.0.0.0に設定します(それ以外の場合は、まだドッカーコンテナの外から接続できません)。これらの変更後、ポートは安定したので、すべて正常です。

追加の注意:分散モードに切り替えた後、私はJAVA_HOMEをhbase-env.shに特別に設定する必要がありました。しかしこれはdocsで見つけることができます。

関連する問題