0

RegionServer が ZooKeeper に頻繁に接続することがわかりました。彼らは常にセッションを確立し、それを閉じて、ZooKeeper に再接続しているようです。サーバー側とクライアント側の両方のログを次に示します。なぜこれが起こるのか、どう対処すればよいのかわかりませんか?HBase 0.94.11 と ZooKeeper 3.4.4 を使用しています。

HBase RegionServer からのログ:

2014-09-18,16:38:17,867 INFO org.apache.zookeeper.ZooKeeper: クライアント接続を開始しています。 10.2.201.75:11000 sessionTimeout=30000 ウォッチャー=catalogtracker-on-org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@69d892a1
2014-09-18,16:38:17,868 INFO org.apache.zookeeper.client.ZooKeeperSaslClient: クライアントは GSSAPI を SASL メカニズムとして使用します。
2014-09-18,16:38:17,868 INFO org.apache.zookeeper.ClientCnxn: サーバー lg-hadoop-srv-ct01.bj/10.2.201.73:11000 へのソケット接続を開いています。ログインコンテキストセクション「クライアント」を使用してSASL認証を試みます
2014-09-18,16:38:17,868 INFO org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper: このプロセスの識別子は 11787@lg-hadoop-srv-st05.bj です
2014-09-18,16:38:17,868 INFO org.apache.zookeeper.ClientCnxn: lg-hadoop-srv-ct01.bj/10.2.201.73:11000 へのソケット接続が確立され、セッションが開始されました
2014-09-18,16:38:17,870 INFO org.apache.zookeeper.ClientCnxn: サーバー lg-hadoop-srv-ct01.bj/10.2.201.73:11000 でセッションの確立が完了しました、セッション ID = 0x248782700e52b3c、ネゴシエートされたタイムアウト = 30000
2014-09-18,16:38:17,876 INFO org.apache.zookeeper.ZooKeeper: セッション: 0x248782700e52b3c が閉じられました
2014-09-18,16:38:17,876 INFO org.apache.zookeeper.ClientCnxn: EventThread がシャットダウンしました
2014-09-18,16:38:17,878 INFO org.apache.hadoop.hbase.replication.regionserver.ReplicationSink: レプリケートされた合計: 24

ZooKeeper サーバーからのログ:

2014-09-18,16:38:17,869 INFO org.apache.zookeeper.server.NIOServerCnxnFactory: [myid:2] /10.2.201.76:55621 からのソケット接続を受け入れました
2014-09-18,16:38:17,869 INFO org.apache.zookeeper.server.ZooKeeperServer: [myid:2] クライアントが /10.2.201.76:55621 で新しいセッションを確立しようとしています
2014-09-18,16:38:17,870 INFO org.apache.zookeeper.server.ZooKeeperServer: [myid:2] クライアント /10.2.201.76:55621 のネゴシエートされたタイムアウト 30000 でセッション 0x248782700e52b3c を確立しました
2014-09-18,16:38:17,872 INFO org.apache.zookeeper.server.auth.SaslServerCallbackHandler: [myid:2] クライアントの認証に成功しました: authenticationID=hbase_srv/hadoop@XIAOMI.HADOOP; 認可ID=hbase_srv/hadoop@XIAOMI.HADOOP.
2014-09-18,16:38:17,872 INFO org.apache.zookeeper.server.auth.SaslServerCallbackHandler: [myid:2] 認可 ID の設定: hbase_srv
2014-09-18,16:38:17,872 INFO org.apache.zookeeper.server.ZooKeeperServer: [myid:2] authenticationID の SASL 承認を追加しています: hbase_srv
2014-09-18,16:38:17,877 INFO org.apache.zookeeper.server.NIOServerCnxn: [myid:2] sessionid 0x248782700e52b3c を持つクライアント /10.2.201.76:55621 のソケット接続が閉じられました
4

1 に答える 1

0

最後に、根本的な原因を見つけました。

はい、それは ReplicationSink に関するもので、「2014-09-23,14:58:01,736 DEBUG org.apache.hadoop.hbase.replication.regionserver.ReplicationSink: テーブル online_miliao_recent の複製」というログを見つけました。

次に、関連するコードを調べたところ、replicateEntries() を呼び出すたびに、sharedHBaseAdmin.tableExists(table) も呼び出すことがわかりました。

sharedHBaseAdmin.tableExists() は、ZooKeeper クライアントでもある新しい CatalogTracker オブジェクトを作成します。

このメソッドが終了すると、ZooKeeper クライアントとセッションがクリーンアップされます。

レプリケーションが実行されているため、このログは適切に見えます。しかし、tableExists() は少し重いので、エンティティを複製するたびに呼び出す必要はないと思います。また、CatalogTracker は 0.94.11 以降の ReplicationSink に含まれていないため、それ以降のバージョンでは問題になりません。

ReplicationSink から CatalogTracker を削除する jira が見つかったら、それは素晴らしいことです :-)

于 2014-09-25T01:51:29.220 に答える