私は、HadoopまたはHBaseが誤動作する原因となる奇妙な(私が理解しているように)DNSサーバーを備えたネットワークを持っています。
それは私のホスト名を私のマシンが知らないアドレスに解決します(つまり、そのようなインターフェースはありません)。
/ etc / hostsに次のエントリがある場合、Hadoopは機能します。
127.0.0.1 localhost
127.0.1.1 myhostname
エントリ「127.0.1.1myhostname」が存在しない場合、HDFSへのファイルのアップロードは失敗し、ファイルを1ではなく0のデータノードにしか複製できないと文句を言います。
ただし、この場合、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)を構成する方法はありますか?