Hadoop2.2.0とHbase0.98.0をインストールしましたが、次のようになります。
$ ./bin/start-hbase.sh
$ ./bin/hbase Shell
2.0.0-p353 :001 > list
それから私はこれを得ました:
ERROR: Can't get master address from ZooKeeper; znode data == null
なぜこのエラーが発生するのですか?別の質問:baseを実行する前に./sbin/start-dfs.sh
と./sbin/start-yarn.sh
を実行する必要がありますか?
また、./sbin/start-dfs.sh
および./sbin/start-yarn.sh
の用途は何ですか?
Conf docの一部を次に示します。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://127.0.0.1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/Users/Apple/Documents/tools/hbase-tmpdir/hbase-data</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/Users/Apple/Documents/tools/hbase-zookeeper/zookeeper</value>
</property>
</configuration>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
<description>The name of the default file system.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/micmiu/tmp/hadoop</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>io.native.lib.available</name>
<value>false</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.Apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
スタンドアロンHBaseのZookeeper管理に入らずにHBaseを実行する場合は、hbase-site.xml
という名前のプロパティブロックを除くhbase.rootdir
からすべてのproperty
ブロックを削除します。
/bin/start-hbase.sh
を実行します。 HBaseには、/bin/start-hbase.sh
の実行時に開始される独自のZookeeperが付属しています。これは、初めて物事を回避しようとする場合に十分です。後でZookeeperの分散モード構成を配置できます。
/sbin/start-dfs.sh
の値はhbase.rootdir
でhdfs://127.0.0.1:9000/hbase
に設定されているため、HBaseを実行するにはhbase-site.xml
を実行するだけです。 file:///some_location_on_local_filesystem
を使用してローカルのファイルシステム上のある場所に変更する場合、/sbin/start-dfs.sh
を実行する必要さえありません。
hdfs://127.0.0.1:9000/hbase
はHDFS上の場所であり、/sbin/start-dfs.sh
はHDFSファイルシステムにアクセスするための基礎となるAPIを提供するnamenodeとdatanodeを開始します。 Yarnについては、 http://hadoop.Apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/YARN.html をご覧ください。
これは、vmまたはホストマシンがスリープ状態になった場合にも発生する可能性があり、Zookeeperはライブのままになりません。 VMを再起動すると、問題が解決するはずです。
Zookeeperを起動してからHbase-Shellを実行する必要があります
{HBASE_HOME}/bin/hbase-daemons.sh {start,stop} zookeeper
また、hbase-env.shでこのプロパティを確認することもできます。
# Tell HBase whether it should manage its own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false
ソース-Zookeeper を参照してください
1つの簡単な解決策は、hbaseを再起動することです。
1) Stop-hbase.sh
2) Start-hbase.sh
まったく同じエラーが発生しました。 Linuxファイアウォールが接続をブロックしていました。 Telnet経由でポートをテストできます。簡単な修正方法は、ファイアウォールをオフにして、それが修正されるかどうかを確認することです。
すべてのノードでファイアウォールを完全に無効にします。注:このコマンドは、マシンの再起動後は存続しません。
systemctl stop firewalld
長期的な修正は、hbaseポートを許可するようにファイアウォールを構成する必要があることです。
ご使用のhbaseのバージョンは異なるポートを使用する場合があります: https://issues.Apache.org/jira/browse/HBASE-1012
Hbase Shellからの出力は非常に高レベルであるため、多くの設定ミスがこのメッセージを引き起こします。自分でデバッグできるようにするには、hbaseのログインを調べた方がはるかに良いでしょう
/var/log/hbase
問題の根本原因を突き止めるため。
私も同じ問題を抱えていました。私にとって、私の根本的な原因は、hbase-masterと競合するポート番号を持つhadoop-kmによるものでした。どちらもポート16000を使用しているため、hbase Shellを起動してもHMasterは起動しませんでした。それを修正した後、私のhbaseは機能しました。
繰り返しになりますが、kmsポートの競合が根本原因ではない可能性があります。/var/log/hbaseを調べて根本原因を見つけることを強くお勧めします。
私の場合、hbaseの実行で同じエラーが発生しました-hbase-site.xmlにzookeeperプロパティを含めずに上記のエラーメッセージを取得しました(Apache hbaseガイドに基づいて、rootdirとdistributedの2つだけが必須です) )。
また、実際にHregionサーバーとHmasterが正しく稼働していないことを確認するjpsコマンドの出力をトレースすることもできます。
(リセットのように)停止して開始した後、これら2つを実行し、hbaseを適切に実行できました。
vMWareまたは仮想ボックスで発生している場合は、コマンドinit1
root権限があることを確認してくださいそして、それが役立つことを願って再試行してください:)
hbaseシェル