2011-10-29 9 views
1

HadoopまたはHBaseの誤動作を引き起こすDNSサーバーがあります。奇妙なDNSサーバーが原因でHadoopとHBaseが誤動作する

私のホスト名は、私のマシンが知らないいくつかのアドレスに解決されます(つまり、そのようなインターフェイスはありません)。

私は/ etc/hostsファイル内のエントリを次した場合のHadoopが作業を行います。

127.0.0.1  localhost 
127.0.1.1  myhostname 

エントリ「127.0.1.1のmyhostnameのは」HDFSにアップロードファイルに障害が発生し、それが唯一のファイルを複製できると文句を言いに存在しない場合

この場合、HBaseが動作しません:HBaseシェルからテーブルを作成すると、NotAllMetaRegionsOnlineExceptionが発生します(実際にHMasterがmyhostnameのDNSサーバーから返された間違ったアドレスにバインドしようとしたためです)。他のネットワークで

、私は、次の/ etc/hostsを使用しています:

127.0.0.1 localhost 
192.168.1.1 myhostname 

とのHadoopとHBaseの仕事の両方を。 問題は、2番目のネットワークでアドレスが動的で、奇妙なDNSによって返された結果を上書きするために/ etc/hostsにリストすることができないことです。

Hadoopは擬似分散モードで実行されます。 HBaseは単一ノードでも動作します。

DNSサーバーの動作を変更することはできません。 hbase/conf/regionserversで "localhost"を127.0.0.1に変更しても、何も変更されません。

インターネット接続(私は実際にTeamviewerを通じてクライアントのマシンで作業します)を維持しながら、その動作をどのように上書きすることができるかを誰かが示唆できますか?または、バインドするアドレスを決定するためにホスト名を使用しないようにHBase(またはZookeeperが管理している)を設定するにはどうすればよいですか?

答えて

5

幸いにも、私はこのDNSサーバーの問題の回避策を見つけました。

DNSサーバーは、ローカルホスト名によって照会されたときに無効なアドレスを返しました。 HBaseは、デフォルトで、ローカルホスト名のDNSルックアップを元に戻して、バインド先を決定します。 DNSサーバーから返されたアドレスが無効であるため、HMasterはバインドできませんでした。

策:HBaseの/ CONF/HBaseの-site.xmlで が明示的にマスターとリージョンサーバーに使用するインターフェイスを指定します。この場合

<configuration> 
    <property> 
    <name>hbase.master.dns.interface</name> 
    <value>lo</value> 
    </property> 
    <property> 
    <name>hbase.regionserver.dns.interface</name> 
    <value>lo</value> 
    </property> 
</configuration> 

を、Iは、使用するループバック・インターフェース(LO)を指定しましたマスターとリージョンサーバーの両方で使用できます。

+0

を、提供するループバックインターフェイスは、127.0.0.1(12.04適用されます)とない127.0.1.1(Ubuntuの12.10のデフォルトのネームサーバ) – sunskin

+0

何を持って使用することができますWindows OSの価値ですか?窓にも "lo"を使用できますか? –

関連する問題