2016-05-11 10 views
0

Createtableコマンドを使用してAccumulo内でテーブルを作成しようとしましたが、スタックしていたことがわかりました。私はcreatetableコマンドをキャンセルする前に約20分待った。Accumuloのcreatetableコマンドがスタックしてテーブルを作成しません

createtable test_table 

私は1つのマスターと2錠のサーバーを持っているし、私の主人とタブレットの1が死亡したことが分かりました。私はその特定のタブレットサーバーのポート9997にtelnetできず、ポート29999(accumulo-site.xmlのmaster.port.client)にもtelnetできませんでした。私は死んだサーバーのtserverのログを見たとき、私は次のエントリを見た。

2016-05-10 02:12:07,456 [zookeeper.DistributedWorkQueue] INFO : Got unexpected z 
ookeeper event: None for /accumulo/be4f66be-1508-4314-9bff-888b56d9b0ce/recovery 
2016-05-10 02:12:23,883 [zookeeper.ZooCache] WARN : Saw (possibly) transient exc 
eption communicating with ZooKeeper, will retry 
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = 
Session expired for /accumulo/be4f66be-1508-4314-9bff-888b56d9b0ce/tables 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:127) 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) 
     at org.apache.zookeeper.ZooKeeper.getChildren(ZooKeeper.java:1472) 
     at org.apache.accumulo.fate.zookeeper.ZooCache$1.run(ZooCache.java:210) 
     at org.apache.accumulo.fate.zookeeper.ZooCache.retry(ZooCache.java:162) 
     at org.apache.accumulo.fate.zookeeper.ZooCache.getChildren(ZooCache.java 
:221) 
     at org.apache.accumulo.core.client.impl.Tables.exists(Tables.java:142) 
     at org.apache.accumulo.server.tabletserver.LargestFirstMemoryManager.tab 
leExists(LargestFirstMemoryManager.java:149) 
     at org.apache.accumulo.server.tabletserver.LargestFirstMemoryManager.get 
MemoryManagementActions(LargestFirstMemoryManager.java:175) 
     at org.apache.accumulo.tserver.TabletServerResourceManager$MemoryManagem 
entFramework.manageMemory(TabletServerResourceManager.java:408) 
     at org.apache.accumulo.tserver.TabletServerResourceManager$MemoryManagem 
entFramework.access$400(TabletServerResourceManager.java:318) 
     at org.apache.accumulo.tserver.TabletServerResourceManager$MemoryManagem 
entFramework$2.run(TabletServerResourceManager.java:346) 
     at org.apache.accumulo.fate.util.LoggingRunnable.run(LoggingRunnable.jav 
a:35) 
     at java.lang.Thread.run(Thread.java:745) 
2016-05-10 02:12:23,884 [zookeeper.ZooCache] WARN : Saw (possibly) transient exc 
eption communicating with ZooKeeper, will retry 
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = 
Session expired for /accumulo/be4f66be-1508-4314-9bff-888b56d9b0ce/tables/!0/con 
f/table.classpath.context 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:127) 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) 
     at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) 
     at org.apache.accumulo.fate.zookeeper.ZooCache$2.run(ZooCache.java:264) 
     at org.apache.accumulo.fate.zookeeper.ZooCache.retry(ZooCache.java:162) 
     at org.apache.accumulo.fate.zookeeper.ZooCache.get(ZooCache.java:289) 
     at org.apache.accumulo.fate.zookeeper.ZooCache.get(ZooCache.java:238) 
     at org.apache.accumulo.server.conf.ZooCachePropertyAccessor.get(ZooCache 
PropertyAccessor.java:117) 
     at org.apache.accumulo.server.conf.ZooCachePropertyAccessor.get(ZooCache 
PropertyAccessor.java:103) 
     at org.apache.accumulo.server.conf.TableConfiguration.get(TableConfigura 
tion.java:99) 
     at org.apache.accumulo.tserver.constraints.ConstraintChecker.classLoader 
Changed(ConstraintChecker.java:93) 
     at org.apache.accumulo.tserver.tablet.Tablet.checkConstraints(Tablet.jav 
a:1225) 
     at org.apache.accumulo.tserver.TabletServer$8.run(TabletServer.java:2848 
) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:51 
1) 
     at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. 
access$301(ScheduledThreadPoolExecutor.java:180) 
     at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask. 
run(ScheduledThreadPoolExecutor.java:294) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor. 
java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor 
.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
2016-05-10 02:12:23,887 [zookeeper.ZooReader] WARN : Saw (possibly) transient ex 
ception communicating with ZooKeeper 
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = 
Session expired for /accumulo/be4f66be-1508-4314-9bff-888b56d9b0ce/tservers/accu 
mulo.tablet.2:9997 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:127) 
     at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) 
     at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) 
     at org.apache.accumulo.fate.zookeeper.ZooReader.getStatus(ZooReader.java 
:132) 
     at org.apache.accumulo.fate.zookeeper.ZooLock.process(ZooLock.java:383) 
     at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.j 
ava:522) 
     at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498) 
2016-05-10 02:12:24,252 [watcher.MonitorLog4jWatcher] INFO : Changing monitor lo 
g4j address to accumulo.master:4560 
2016-05-10 02:12:24,252 [watcher.MonitorLog4jWatcher] INFO : Enabled log-forward 
ing 

マスターサーバーのログにも同じスタックトレースがあります。私の飼い猫が走っています。

最初は、ディスクの問題だと思っていました。たぶん、スペースがなかったでしょう。しかし、そうではありませんでした。私はaccumulo instance.volumesでfsckを実行し、HEALTHYステータスを返しました。

誰でも正確に何が起こったのか、また可能な場合は避ける方法を知っていますか?

EDIT:tracer_accumulo.master.logでも同じスタックトレースがあります。

答えて

2

ZooKeeperクライアントとサーバの間のメモリ内のセッションを維持するために、ZooKeeperクライアント内のスレッドが必要な時間(デフォルトでは30秒)内に実行されないと、ZooKeeperセッションが満了します。これに関する単一の説明はありませんが、多くの一般的な犯人:

  1. クライアントでJVMガベージコレクションが一時停止します。 Accumuloは、一時停止が発生した場合に警告を記録する必要があります。
  2. CPU時間が不足しています。ホスト自体が過負荷状態にある場合、Accumuloは必要なすべてのタスクを適時に実行するためのサイクルを持っていない可能性があります。
  3. AccumuloがZooKeeperに接続しようとしている可能性がありますが、新しい接続を開けない可能性があります。
  4. ZooKeeperはサービス拒否防止のために接続を制限している可能性があります。特定のIPからの新しい接続の削除/拒否に関するエラーをZookeeperログで確認し、これらのエラーが表示された場合は、zoo.cfgでmaxClientCnxnsを増やすことを検討してください。
関連する問題